Oppure

Loading
16/11/09 14:07
matteog
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:


#include "stdafx.h"
#include <string.h>
#include <windows.h>
#include <stdio.h>
#include <iostream>
using namespace std;


void selector(unsigned short color)
{
	HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(hCon,color);
} 

void spiega();

int main()
{
	char stringa[900];
	char l;
	bool flag=false;
	selector(30| BACKGROUND_BLUE);
    spiega();


	cout<<"PROGRAMMA: simulazione di un automa che riceve in ingresso una parola."<<endl;
	cout<<endl<<endl<<"Inserisci la parola:[se vi sono spazi inserire un '_']"<<endl;
	gets(stringa);
	cout<<"\n\n\tInserire carattere per permettere il confronto con la parola inserita:"<<endl;
	
	do
	{

		for(int i=0;i<(strlen(stringa));i++)
		{
			
			cin>>l;
			cout<<endl;
			if(l!=stringa[i])
			{
				cout<<"Lettera non corrisponde alla "<<i+1<<endl<<" lettera della parola, rinserisci dalla prima lettera."<<endl;
				i=strlen(stringa);
				flag=true;
			}
			else
			{    
				cout<<"\t\t  Uscita: \t"<<stringa[i]<<" \t Stato: \t    s"<<i<<endl;
				if(i+1==strlen(stringa))
				{
					cout<<endl<<endl<<"Parola riconosciuta!!!!!"<<endl<<endl<<endl;
					system("pause");
					return EXIT_SUCCESS;
    			}
			}
		}
	}while(flag==true);
}


void spiega()
{
	cout<<"ben venuti nel programma automa generico!!"<<endl;
	cout<<"Nella simulazione di questo programma potrai verificare "<<endl;
	cout<<"il funzionamento di un riconoscitore di parole"<<endl;
	cout<<"senza limiti di caratteri.Un accorgimento nel caso si debba riconoscere"<<endl;
	cout<<"una frase allora inserire '_' al posto dello spazio\n\n\n\n\n\n\n";
}



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

Ultima modifica effettuata da HeDo 16/11/09 17:50
aaa
16/11/09 15:31
pierotofy
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.
Il mio blog: piero.dev
16/11/09 15:34
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?
aaa
16/11/09 16:26
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
16/11/09 16:29
matteog
ok grazie
aaa