Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    12

    Riconoscimento Stringa Con Matrici

    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

  2. #2
    codice:
    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.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.