Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema nell'input di un simulatore
Forum - C/C++ - Problema nell'input di un simulatore

Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 15:07
Lunedì, 16/11/2009
simulatore automa a stati finiti:
ho unproblema nell'inserimento.
L'utente inserisce una stringa per esempio"mamma" a questo punto l'utente inserisce una lettera e devo riconoscere la parola:
mamma:

m
a
m
d  no riparte  da 0


m
a
m
m
a
parola riconosciuta!!

l'unica cosa è che se la lettera è composta da mamma subito mi stampa comunque uscita e ingresso come posso fare per limitarla ad un solo carattere??

posto il codice:


Codice sorgente - presumibilmente C++

  1. #include "stdafx.h"
  2. #include <string.h>
  3. #include <windows.h>
  4. #include <stdio.h>
  5. #include <iostream>
  6. using namespace std;
  7.  
  8.  
  9. void selector(unsigned short color)
  10. {
  11.         HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
  12.         SetConsoleTextAttribute(hCon,color);
  13. }
  14.  
  15. void spiega();
  16.  
  17. int main()
  18. {
  19.         char stringa[900];
  20.         char l;
  21.         bool flag=false;
  22.         selector(30| BACKGROUND_BLUE);
  23.     spiega();
  24.  
  25.  
  26.         cout<<"PROGRAMMA: simulazione di un automa che riceve in ingresso una parola."<<endl;
  27.         cout<<endl<<endl<<"Inserisci la parola:[se vi sono spazi inserire un '_']"<<endl;
  28.         gets(stringa);
  29.         cout<<"\n\n\tInserire carattere per permettere il confronto con la parola inserita:"<<endl;
  30.        
  31.         do
  32.         {
  33.  
  34.                 for(int i=0;i<(strlen(stringa));i++)
  35.                 {
  36.                        
  37.                         cin>>l;
  38.                         cout<<endl;
  39.                         if(l!=stringa[i])
  40.                         {
  41.                                 cout<<"Lettera non corrisponde alla "<<i+1<<endl<<" lettera della parola, rinserisci dalla prima lettera."<<endl;
  42.                                 i=strlen(stringa);
  43.                                 flag=true;
  44.                         }
  45.                         else
  46.                         {    
  47.                                 cout<<"\t\t  Uscita: \t"<<stringa[i]<<" \t Stato: \t    s"<<i<<endl;
  48.                                 if(i+1==strlen(stringa))
  49.                                 {
  50.                                         cout<<endl<<endl<<"Parola riconosciuta!!!!!"<<endl<<endl<<endl;
  51.                                         system("pause");
  52.                                         return EXIT_SUCCESS;
  53.                         }
  54.                         }
  55.                 }
  56.         }while(flag==true);
  57. }
  58.  
  59.  
  60. void spiega()
  61. {
  62.         cout<<"ben venuti nel programma automa generico!!"<<endl;
  63.         cout<<"Nella simulazione di questo programma potrai verificare "<<endl;
  64.         cout<<"il funzionamento di un riconoscitore di parole"<<endl;
  65.         cout<<"senza limiti di caratteri.Un accorgimento nel caso si debba riconoscere"<<endl;
  66.         cout<<"una frase allora inserire '_' al posto dello spazio\n\n\n\n\n\n\n";
  67. }



EDIT by HeDo: "Input" si scrive con la 'n', non con la 'm', ho sistemato il titolo...


Ultima modifica effettuata da HeDo il 16/11/2009 alle 18:50


matteog
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6111
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:31
Lunedì, 16/11/2009
Non ho capito qual'e' l'errore... comunque ricordati che il do-while itera per vero, mentre nel tuo codice essendo la flag impostata a false e facendo il controllo flag==true ritornera' false e uscira' dal ciclo alla prima iterazione.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 16:34
Lunedì, 16/11/2009
nel programma non vi sono errori e anche se è strano mi funziona anche col while così la mia domanda era come posso fare a controllare che l'utente quando inserisce la lettera da confrontare con la lettera della parola inserisca solo una lettera invece di tanti caratteri?


matteog
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:26
Lunedì, 16/11/2009
Testo quotato

Postato originariamente da matteog:

nel programma non vi sono errori e anche se è strano mi funziona anche col while così la mia domanda era come posso fare a controllare che l'utente quando inserisce la lettera da confrontare con la lettera della parola inserisca solo una lettera invece di tanti caratteri?


Non preoccupartene, considera solo la prima lettere che ha inserito, senno le cose si "complicano" =P

PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 17:29
Lunedì, 16/11/2009
ok grazie


matteog
PM Quote