PDA

Visualizza la versione completa : Riconoscimento Stringa Con Matrici


DirectX
11-02-2009, 15:56
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

MItaly
11-02-2009, 16:08
mtu[stato][tasto-'A']
Il codice che usi qui non è sicuro, perché per qualunque pressione di tasto che non sia 'A', 'B', e 'C' il secondo indice supera il suo limite superiore o inferiore.

Loading