PDA

Visualizza la versione completa : [C] Uso corretto di Switch


ant_alt
20-11-2005, 19:07
#include<stdio.h>

int main ()
{
int car;
while (car != 0) {
printf("Inserisci una lettera, 0 per finire il ciclo: ");
scanf("%c", car);
switch (car){
case 'a':
printf("******\n * *\n******");
break;

case 'b':
printf("\n\n*******\n* * *\n ** **\n");
break;

case 'c':
printf("\n\n ****\n* *\n* *\n");
break;

case 'd':
printf("\n\n******\n* *\n* *\n ****\n");
break;
} //switch
} //while
return 0;
}


dovrebbe stampare:
*******
* *
*******
quando digito a,

*******
* * *
*** **

quando digito b, ecc..


:cry:

gygabyte017
20-11-2005, 19:33
e qual' il poblema? non stampa? stampa male?
cmq ti suggerirei di fare char car e non int car

BSoft
20-11-2005, 19:34
int car; dovrebbe essere char visto che lo switch lo fai attraverso caratteri.

while (car!=0) dovresti mettere gli apici allo 0 senno' il programma termina subito (zero considerato come char e non come int).

scanf("%c",car); dovrebbe essere scanf("%c",&car);

sotto allo scanf aggiungi fflush ( stdin ); senno' al giro dopo ti legge l'invio che avevi dato prima

poi ti consiglio di indentare un po' il codice, viene piu' leggibile :yuppi:

ant_alt
21-11-2005, 12:09
Originariamente inviato da BSoft
int car; dovrebbe essere char visto che lo switch lo fai attraverso caratteri.

while (car!=0) dovresti mettere gli apici allo 0 senno' il programma termina subito (zero considerato come char e non come int).

scanf("%c",car); dovrebbe essere scanf("%c",&car);

sotto allo scanf aggiungi fflush ( stdin ); senno' al giro dopo ti legge l'invio che avevi dato prima

poi ti consiglio di indentare un po' il codice, viene piu' leggibile :yuppi:


1.la funzione fflush non l'ho mai sentita..e non vorrei complicarmi la vita + di quello k gi .... :stordita:

2.indentare??

ant_alt
21-11-2005, 12:14
senza fflush funziona tutto tranne il caso default:

default:
printf:("\nCarattere non valido\n");
break;

skyhunter
22-11-2005, 20:37
Ciao, prova in questo modo:



#include<stdio.h>

int main ()
{

int car;
printf("Inserisci una lettera, 0 per finire il ciclo: \n");
while (car != '0') {
switch (car = getchar()){

case 'a':
printf("******\n * *\n******\n");
break;

case 'b':
printf("\n\n*******\n* * *\n ** **\n\n");
break;

case 'c':
printf("\n\n ****\n* *\n* *\n\n");
break;

case 'd':
printf("\n\n******\n* *\n* *\n ****\n\n");
break;

}
}

return 0;
}


Spero di essere stato di aiuto!

:ciauz:

ant_alt
24-11-2005, 09:44
Originariamente inviato da skyhunter
Ciao, prova in questo modo:



#include<stdio.h>

int main ()
{

int car;
printf("Inserisci una lettera, 0 per finire il ciclo: \n");
while (car != '0') {
switch (car = getchar()){

case 'a':
printf("******\n * *\n******\n");
break;

case 'b':
printf("\n\n*******\n* * *\n ** **\n\n");
break;

case 'c':
printf("\n\n ****\n* *\n* *\n\n");
break;

case 'd':
printf("\n\n******\n* *\n* *\n ****\n\n");
break;

}
}

return 0;
}


Spero di essere stato di aiuto!

:ciauz:


il default!!
--x tutte le altre lettere: "carattere nn valido"-- :dh:

skyhunter
24-11-2005, 10:25
E allora prova cos:



#include<stdio.h>

int main ()
{

int car;
printf("Inserisci una lettera, 0 per finire il ciclo: \n");
while ((car = getchar()) != '0') {
switch (car){

case 'a':
printf("******\n * *\n******\n");
break;

case 'b':
printf("\n\n*******\n* * *\n ** **\n\n");
break;

case 'c':
printf("\n\n ****\n* *\n* *\n\n");
break;

case 'd':
printf("\n\n******\n* *\n* *\n ****\n\n");
break;

case '\n': /* ignora i newline */
case '\t': /* ignora le tabulazioni */
case ' ': /* ignora gli spazi */
break;


default: /* tutte le lettere non in elenco */
printf("carattere non valido!");
break;
}
}

return 0;
}


:ciauz:

Loading