Rocky96 Inviato 23 Gennaio 2013 Condividi Inviato 23 Gennaio 2013 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. Link al commento Condividi su altri siti Altre opzioni di condivisione...
RyujiAndy Inviato 24 Gennaio 2013 Condividi Inviato 24 Gennaio 2013 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. Link al commento Condividi su altri siti Altre opzioni di condivisione...
jtagger Inviato 24 Gennaio 2013 Condividi Inviato 24 Gennaio 2013 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. Link al commento Condividi su altri siti Altre opzioni di condivisione...
RyujiAndy Inviato 24 Gennaio 2013 Condividi Inviato 24 Gennaio 2013 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. Link al commento Condividi su altri siti Altre opzioni di condivisione...
jtagger Inviato 24 Gennaio 2013 Condividi Inviato 24 Gennaio 2013 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! Link al commento Condividi su altri siti Altre opzioni di condivisione...
RyujiAndy Inviato 24 Gennaio 2013 Condividi Inviato 24 Gennaio 2013 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. Link al commento Condividi su altri siti Altre opzioni di condivisione...
jtagger Inviato 24 Gennaio 2013 Condividi Inviato 24 Gennaio 2013 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 Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Crea un account o accedi per lasciare un commento
Devi essere un membro per lasciare un commento
Crea un account
Iscriviti per un nuovo account nella nostra community. È facile!
Registra un nuovo accountAccedi
Sei già registrato? Accedi qui.
Accedi Ora