Salve a tutti... ho fatto il seguente programma per riconoscere la sequenza "ABACABA" con le matrici ed uscire quando si preme ESC.
Allora.. il programma riconosce la sequenza e esce quando si preme ESC.. ma siccome ho fatto un ulteriore controllo sui tasti (inseribili solamente i seguenti: a,b,c) se metto altri tasti sbagliati in successione il programma crasha e non riesco a capire come mai... chi mi può aiutare
Grazie.
/*Dichiarazione librerie*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#define ESCAPE 27
/*INIZIO PROGRAMMA*/
int main(){
int i;
int mts[7][3]={{1,0,0},{1,2,0},{3,0,0},{1,2,4},{5,0,0},{0,6,0}, {0,0,0}};
//dichiarazione matrice transizione stati
int mtu[7][3]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}, {1,0,0}};
//dichiarazione matrice transizione uscite
char tasto ; //variabile di acquisizione carattere
int stato=0;
printf("\n\t\tPROGRAMMA RICONOSCITORE DI SEQUENZA ABACABA\n");
printf("\n\nInserire la sequenza:\n\n");
/* CICLO CHE CONTINUA FINO A CHE NON VIENE PREMUTO ESC DA TASTIERA */
while ((tasto=toupper(_getch()))!=27){
if (tasto == 'A' ||tasto == 'B' ||tasto == 'C') //CONTROLLO ALFABETO
printf("Digitato: %c\n", tasto);
else
{
printf ("\t!!! CARATTERE DIGITATO NON PRESENTE NELL'ALFABETO !!!\n");
printf ("\n\t!!! SI RICORDANO I CARATTERI DA UTILIZZARE: A,B,C !!!\n\n");
}
if (mtu[stato][tasto-'A']==1)
printf("\n\a Stringa ABACABA riconosciuta!!\n" );
stato=mts[stato][tasto-'A'];
}
} //FINE PROGRAMMA