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;
}