Salve a tutti, sto facendo degli esercizi sulla ricerca sequenziale, e non riesco a risolvere il classico problema del tasto invio alla cattura di un carattere.
In genere mi limito ad aggiungere un semplice "variabile=getchar();" per ovviare al problema,
il search mi ha fatto tornare in mente l' "fflush(stdin);" ma il problema persiste.
Veniamo al dunque: il programma dovrebbe ricercare in modo sequenziale all'interno di una matrice n*m inizializzata dall'utente una lettera immessa
mettendo in una matrice 2*2 i valori A S D F e ricercandone uno dei 4 in ogni caso ottengo "lettera non presente". HELP!
codice:#include <stdio.h> #include <stdlib.h> #define M 10 int main(int argc, char *argv[]) { // k e j sono i contatori, n e m righe e colonne int k,j,n,m; // v la matrice, p il carattere da ricercare c // c per il getchar char c,p,v[M][M]; //RICHIESTA RIGHE E COLONNE do { printf("\nQuante Righe si vogliono inserire: "); scanf("%d",&n); } while((n<0)||(n>M)); do { printf("\nQuante Colonne si vogliono inserire: "); scanf("%d",&m); } while((m<0)||(m>M)); c=getchar(); //Il getchar per evitare che l invio mi dasse noia in seguito //CICLO DI IMMISSIONE PER LA MATRICE for(j=0;j<n;j++) for(k=0;k<m;k++) { printf("\nInserire Riga %d Colonna %d: ",j+1,k+1); scanf("%c",&v[j][k]); c=getchar(); } //QUESTA CREDO SIA LA PARTE CHE CAUSA PROBLEMI printf("\nInserire il carattere da ricercare: "); scanf("%d",&p); //RICERCA SEQUENZIALE (testata con i numeri e non sembra dar problemi) j=0; k=0; while ((p!=v[j][k])&&(j<n)) { k++; if((k==m)&&(j<n-1)) { k=0; j++; } } //Inutile visualizzazione della matrice, messa solo per controllo >,< for(j=0;j<n;j++) { printf("\n"); for(k=0;k<m;k++) printf("%3c",v[j][k]); } printf("\n"); //controllo finale del carattere ricercato if(p!=v[j][k]) printf("\nLettera non presente.\n"); else printf("\nLettera presente\nRiga: %d\nColonna: %d\n",j,k); system("PAUSE"); return 0; }

Rispondi quotando

