il mio "adorabile" professore di progettazione ha assegnato per casa, in preparazione della verifica (che sarà veramente un'agonia essendo che riguardo le macchine a stati finiti in C++ non ha spiegato una cippa...), un esercizio molto "carino"...praticamente devo scrivere un programma utilizzando le macchine a stati finiti in C++ che prende in imput una stringa, e dice se è o non è una stringa valida.
Sono già arrivato ad un certo punto con il programma...anzi direi che è finito, ma ecco il problema....mi dice che la stringa è sempre corretta, cosa SBAGLIATISSIMA, e nn perchè ho sbagliato gli if, ma qualcos'altro immagino, ma non so cosa....ho provato anche a far buttare a video il contenuto dello stato e il risultato è o 0, o 1...
Salve a tutti,
il mio "adorabile" professore di progettazione ha assegnato per casa, in preparazione della verifica (che sarà veramente un'agonia essendo che riguardo le macchine a stati finiti in C++ non ha spiegato una cippa...), un esercizio molto "carino"...praticamente devo scrivere un programma utilizzando le macchine a stati finiti in C++ che prende in imput una stringa, e dice se è o non è una stringa valida.
Sono già arrivato ad un certo punto con il programma...anzi direi che è finito, ma ecco il problema....mi dice che la stringa è sempre corretta, cosa SBAGLIATISSIMA, e nn perchè ho sbagliato gli if, ma qualcos'altro immagino, ma non so cosa....ho provato anche a far buttare a video il contenuto dello stato e il risultato è o 0, o 1...
Questo è il codice :
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
enum state {intero, decimale, err};
state curr;
void RiconoscitoreStringa(string numero)
{
short i=0;
bool full=false;
do {
char car=numero;
switch (car) {
case (30 || 31 || 32 || 33 || 34 || 35 || 36 || 37 || 38 || 39) :
{
if (full==true)
curr=decimale;
else
curr=intero;
break;
}
case (46) :
{
if (full==true)
curr=err;
else {full=true; curr=decimale;}
break;
}
default : {curr=err; break;}
} //switch
i++;
}while (i<numero.size() || curr==err); //ciclo
cout<<curr<<endl; //mostra situazione di curr fine ciclo
if (curr==err)
cout<<"Stringa di Numeri non e' Esatta."<<endl;
if (curr!=err)
cout<<"Stringa di Numeri e' Esatta."<<endl;
} //metodo
int main () {
cout<<"Inserisci un numero - ";
string numero="";
cin>>numero;
RiconoscitoreStringa(numero);
system ("pause");
} //main
Spero vivamente che possiate aiutarmi.
-Un giovane programmatore.