Vai al contenuto
Inviato

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.

Featured Replies

Inviato
Ora il mio C++ è piuttosto arruginito vito che uso sempre programmazione a basso livello, ma non so se ti sei accorto ma il ciclo di controllo viene eseguito solo se la variabile curr è uguale a err oppure se la variabile i è minore della lunghezza della stringa.
Inviato
A dire la verità di ++ qui c'è praticamente nulla! Fatto in C e usando opportunamente i puntatori sarebbe venuto anche più pulito e soprattutto performante.
Inviato
A dire la verità di ++ qui c'è praticamente nulla! Fatto in C e usando opportunamente i puntatori sarebbe venuto anche più pulito e soprattutto performante.

 

certo che criticare è più facile che aiutare, in fondo il C++ è molto simile al C come struttura, e punteggiatura, ma avrei preferito un'analisi e non una sentenza.

Inviato

l'analisi l'hai già fatta tu, cosa dovrei aggiungere?

certo che se te la prendi per questa mia osservazione di carattere generale, pensando che sia una "critica" (a chi e a cosa e soprattutto perché, lo sai solo tu), non so davvero cosa pensare...

Forse sei tu il professore che gli ha rifilato questo esercizio? Ma anche fosse, non capisco perché viverla così... boh...

No, dai, davvero: se ho offeso il tuo amor proprio ti chiedo umilmente scusa... non era mia intenzione!

Inviato
l'analisi l'hai già fatta tu, cosa dovrei aggiungere?

certo che se te la prendi per questa mia osservazione di carattere generale, pensando che sia una "critica" (a chi e a cosa e soprattutto perché, lo sai solo tu), non so davvero cosa pensare...

Forse sei tu il professore che gli ha rifilato questo esercizio? Ma anche fosse, non capisco perché viverla così... boh...

No, dai, davvero: se ho offeso il tuo amor proprio ti chiedo umilmente scusa... non era mia intenzione!

 

Ora non vorrei scatenare un putiferio inutilmente, ma se rileggi le tue parole la tua unica analisi è che non è scritto in C++ (cosa trall'altro errata) e poi non hai offeso me, la cosa non mi tocca personalmente, cosa che non sono sicuro del contrario, ma in fondo c'è anche un lato positivo, le idee sono diverse come la programmazione, infatti anche io avrei affrontato il problema diversamente, ma non intendo dare nessuna soluzione e nessuna critica, infatti ho solo fatto notare dove potrebbe essere l'errore.

Ora spero vivamente che questa discussione riprenda la giusta via, perchè non è mia intenzione condannare nessuno, solo perchè vede le cose in modo diverso.

Inviato

guarda ho letto le prime due righe, mi risparmio il resto...

mi basta già notare che mi attribuisci il fatto di dire che non è scritto in c++ quando ho scritto testuale "A dire la verità di ++ qui c'è praticamente nulla!", che mi pare sia italiano e NON vuol dire quanto mi attribuisci.

Capisco pure che dici che non vuoi scatenare putiferi ma ci metti del tuo a fare polemiche INESISTENTI.

Cmq contento tu! mmmh

Per la storia finisce qui.

te saludi

Crea un account o accedi per lasciare un commento