PDA

Visualizza la versione completa : [C] Visualizzazione menu e ciclo while()


B4D H4B1T
25-10-2009, 14:54
ciao a tutti, volevo chiedervi un aiuto su di un mio programmino (il mio 1 FUNZIONANTE programmino) :sadico:
io ho provato a mettere un while x un ciclo ma, quando lo compilo, e lo avvio mi cicla senza darmi pri ma il menu... :dh: :dh: :dh:

ecco il codice:
#include <stdio.h>

main()

{

int selezionea;

while (selezionea!=0)
printf("\n Scegli l'ambito matematico:\n\n");
printf(" 1) Le 4 operazioni basiche.\n");
printf(" 2) Elevazioni al quadrato e al cubo.\n");
printf(" 3) Elevazione con esponente a scelta\n");
printf(" 4) Radice quadrata di un numero\n");
printf(" 5) Percentuale di un numero\n");
printf(" 0) esci\n\n");
scanf("%d",&selezionea);
switch(selezionea)
{
case 1:

int selezioneb;
printf(" 1) addizione\n");
printf(" 2) sottrazione\n");
printf(" 3) moltiplicazione\n");
printf(" 4) divisione\n");
scanf("%d",&selezioneb);
switch(selezioneb)
{
case 1:

float addendoa;
float addendob;
float somma;
printf("dammi il primo numero\n");
scanf("%f",&addendoa);
printf("dammi il secondo numero\n");
scanf("%f",&addendob);
somma = addendoa+addendob;
printf("il risultato %f\n",somma);
break;

case 2:

float minuendo;
float sottraendo;
float resto;
printf("dammi il primo numero\n");
scanf("%f",&minuendo);
printf("dammi il secondo numero\n");
scanf("%f",&sottraendo);
resto = minuendo-sottraendo;
printf("il risultato %f\n",resto);
break;

case 3:

float moltiplicando;
float moltiplicatore;
float prodotto;
printf("dammi il primo numero\n");
scanf("%f",&moltiplicando);
printf("dammi il secondo numero\n");
scanf("%f",&moltiplicatore);
prodotto = moltiplicando*moltiplicatore;
printf("il risultato %f\n",prodotto);
break;

case 4:

float dividendo;
float divisore;
float quoto;
printf("dammi il primo numero\n");
scanf("%f",&dividendo);
printf("dammi il secondo numero\n");
scanf("%f",&divisore);
quoto = dividendo/divisore;
printf("il risultato %f\n",quoto);
break;

default:
printf("selezione sbagliata\n");
}

case 2:

int selezionec;
printf(" 6) elevazione al quadrato\n");
printf(" 7) elevazione al cubo\n");
scanf("%d",&selezionec);
switch(selezionec);
{

case 6:

float base;
float quadrato;
printf("dammi il numero da elevare\n");
scanf("%f",&base);
quadrato = base*base;
printf("il risultato %f\n",quadrato);
break;

case 7:

float basea;
float cubo;
printf("dammi il numero da elevare\n");
scanf("%f",&basea);
cubo = basea*basea*basea;
printf("il risultato %f\n",cubo);
break;

default:
printf("scelta sbagliata\n");
}

case 3:

float basec;
float elevatore;
float elevato;
printf("dammi il numero da elevare\n");
scanf("%f",&basec);
printf("dammi l'esponente a scelta\n");
scanf("%f",&elevatore);
elevato = (basec*basec)*elevatore;
printf("il risultato %f",elevato);
break;

case 4:

float sradicando;
float sradicato;
printf("dammi il numero\n");
scanf("%f",&sradicando);
sradicato = sradicando*1/2;
printf("il risultato %f\n",sradicato);
break;

case 5:

float percentuando;
float percentuatore;
float percentuato;
printf("dammi il primo numero\n");
scanf("%f",&percentuando);
printf("dammi la percentuale che vuoi sapere\n");
scanf("%f",&percentuatore);
percentuato = (percentuando/100)*percentuatore;
printf("il la percentuale %f\n",percentuato);
break;



}

}

approposito, io ho provato a capire il problema ma non ci arrivo :messner:

MItaly
25-10-2009, 16:48
Un paio di cose che noto subito: selezionea non inizializzato, per cui all'interno di esso ci potrebbe essere qualunque valore, e l'esito della prima iterazione del while indefinito. Inoltre dopo il while non hai aperto la graffa, per cui il while ha effetto solo sulla prima istruzione che lo segue. Infine, dal momento che il ciclo almeno una volta va ripetuto, devi usare un do ... while invece del semplice while.

alka
26-10-2009, 01:59
Originariamente inviato da B4D H4B1T
ciao a tutti
Ciao e benvenuto nel forum di Programmazione.

Ti segnalo da subito la lettura del nostro Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887) che contiene tutte le norme da seguire per partecipare correttamente a quest'area del forum.

In modo particolare, devi sempre indicare il linguaggio utilizzato nel titolo della discussione, indicando la versione nel caso in cui ne esistesse pi di una, assieme ad una sintesi breve ma significativa ed esplicativa del problema.

Inoltre, il codice sorgente va racchiuso con il tag [CODE] (*).

Le correzioni di cui sopra le ho apportate io: leggi e tieni a mente le norme per il futuro.

Detto questo, ciao e...buon forum! :ciauz:

Loading