PDA

Visualizza la versione completa : [C] Dubbi sul ciclo While


ice-on-fire
19-01-2008, 19:03
Ciao a tutti. Vi riporto questo pezzo di codice:


case 5:
{ //case 5 start
/*UNA SERIE DI PRINTF */

int p;
scanf("%d", &p);

printf("Adesso, specifica da dove partiremo per l'elaborazione della tabellina \n\n");
printf(" es. Mantenendo l'esempio di prima, la tabellina partendo da 2x1, ora insereisci 1\n\n");

int q;
scanf("%d", &q);

printf(" Benissimo, quindi adesso inserisci il termine della tabellina \n\n");

int r;
scanf("%d", &r);

printf(" ELABORAZIONE TABELLINA IN CORSO.....\n\n\n\n\n");

if(r>q)
{ //if start

while(q != 0)
{ //while start

printf(" %d", q);
printf(" x %d", r);
int s= q*r;
printf(" = %d \n\n" s);

r++;
} //terminare while

} //end if
} //end case

Dunque, questo una parte di codice di un programma che sto scrivendo.

Come avrete sicuramente intuito, ha lo scopo di calcolare una tabellina, mediante l'input dell'utente di 3 numeri.

Se ad esempio, voglio far calcolare la tabellina del 2 da 1 a 10, inserisco questi 3 numeri, quindi sufficente dare un ENTER per confermare e ottenere l'elaborazione.

Il problema che mi fallisce il ciclo while, in quanto non ben strutturato, almeno secondo Dev-C++.

Potete aiutarmi per favore?

grazie a tutti

{-_-}
19-01-2008, 19:21
printf(" = %d \n\n", s);

manca una virgola nella printf, per il resto no nso dirti

oregon
19-01-2008, 21:04
La condizione per cui il while deve essere ripetuto e'

q != 0

Hai pensato quando l'elaborazione uscira' dal ciclo ?

ice-on-fire
20-01-2008, 10:50
ciao, allora, ho risolto il problema, linko il codice corretto:


case 5:
{ //case 5 start
printf(" CALCOLO DI UNA TABELLINA \n\n");
printf(" Per poter calcolare una tabellina, necessario specificare una serie di valori");
printf(" che consentiranno di calcolore una tabellina. \n");
printf(" Si rende necessario, quindi, inserire 3 valori\n\n");
printf(" Inserisci il primo valore, ossia il primo numero della tabellina\n\n");
printf(" es. Per calcolare la tabellina partendo da 2x1, ora digita 2\n");

int p;
scanf("%d", &p);

printf("Adesso, specifica da dove partiremo per l'elaborazione della tabellina \n\n");
printf(" es. Mantenendo l'esempio di prima, la tabellina partendo da 2x1, ora insereisci 1\n\n");

int q;
scanf("%d", &q);

printf(" Benissimo, quindi adesso inserisci il termine della tabellina \n\n");

int r;
scanf("%d", &r);

printf(" ELABORAZIONE TABELLINA IN CORSO.....\n\n\n\n\n");

if(r>q)
{ //if start

while(q <= r)
{ //while start

printf(" %d", q);
printf(" x %d", r);
int s= p*q;
printf(" = %d \n\n", s);

q++;

} //terminare while

} //end if
break;
} //end case

Non si sa mai, possa essere utile a qualcuno.

Ora, un altra curiosit.

C' un modo, pre far comparire la scritta:

"Vuoi fare altre operazioni? S se si N se no\n\n");

e se premi s ricomincia tutto dall'inizio, se premi n chiude il programma???

ciao e grazie mille

oregon
20-01-2008, 10:53
Ovviamente s ... mettilo alla fine del tuo programma e controlla l'esecuzione di TUTTO il codice inserendolo all'interno di un while controllato dalla risposta che dai ...

ice-on-fire
20-01-2008, 11:09
puoi spiegarti meglio per favore???

grazie mille

oregon
20-01-2008, 11:17
Inserisci tutto il tuo codice all'interno di un ciclo.

Prima di ripetere il ciclo controlla che l'utente abbia risposto S alla tua domanda; altrimenti esci dal ciclo e quindi dal tuo programma ...

Non c'e' altro modo di spiegarlo ...

ice-on-fire
20-01-2008, 12:13
ciao, questo l'ho capito, il problema tradurlo in codice.

una cosa del tipo

while ...

{

espressione

}

ora, dovrei mettere sotto un if con una variabile char, associata all'input dell'utente.

ma come l'ho imposto???

Il problema il codice non la teoria... scusatemi ma sono ancora agli inizi....

oregon
20-01-2008, 12:24
Originariamente inviato da ice-on-fire
ciao, questo l'ho capito, il problema tradurlo in codice.

Allora non chiederlo di rispiegarlo ma di avere del codice d'esempio ...

Se questo e' il tuo main ...



int main()
{
char risp;

do
{
/* tutto il tuo programma */

printf("Eseguire ancora il programma ? ");
scanf("%c", &risp);
while(!getchar()); /* svuota il buffer di tastiera */
} while(risp=='S' || risp=='s');

return 0; /* fine programma */
}


questo puo' essere uno spunto ...


ma come l'ho imposto???

Non prendertela, ma curiamo l'italiano oltre al linguaggio C ...

Loading