Problema Do-while linguaggio c

Pubblicità

biondokkiverdi

Nuovo Utente
Messaggi
1
Reazioni
0
Punteggio
24
Salve Ragazzi..ho un piccolo problema con il ciclo do-while..ho strutturato il mio programma in questo modo:





#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int main(void)
{
int scelta;
float b,c,d,delta,k,x,r,e,y;
float p;
float t;
float o,l;
float a,z;

printf("\Calculator_Equation\n by M.Zotti \1\1\1\1\1\1\1 ");


do {
printf("\n\n°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*\n\n\nPremi:\n\n1 per eseguire il programma\n\n2 per uscire\n\nScelta: ");
scanf("%s", scelta);




printf("\r\n\rInserisci il valore del coefficiente di x^2:\n\n");
scanf("%f",&a);

printf("\nInserisci il valore del coefficiente di x:\n\n");
scanf("%f", &b);

printf("\nInserisci il valore del termine noto:\n\n");
scanf("%f", &c);



printf("\n\n°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*\n\n");


delta=b*b-4*a*c;
k= sqrt(delta);
x=-b+k/2*a;
y=-b-k/2*a;
t=(-b)/(2*a);
z=-(c/b);
r=0;
p=-(b/a);
o=sqrt(c/a);
l=-sqrt(c/a);
e=b*b;







if (a==0)
{
printf("\nL'equazione diviene di primo grado e ammette come unica soluzione x=%f\n\n", z)
;}







else if (a!=0){



if (delta==0)
{
printf ("\nLe soluzioni sono due ma coincidenti, dunque x=%f\n\n", t);


}



else if (delta<0)
{
printf("\nNon ci sono soluzioni nell'insieme dei numeri reali\n\n");};

if (delta==e)
{printf("\nLe soluzioni sono:\nx1=%f e x2=%f\n\n", r,p);

}
else if (delta>0)
{
printf ("\nL'equazione ammette due soluzioni reali e distinte:\nx1=%f e x2=%f\n\n", x, y);

}



}
printf("\n\n°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*\n\n\n");


}

while (scelta!=2);
}






Solo che anche nel caso in cui io spingessi il tasto 2..viene ricaricato il cilo..e quindi mi richiede i valori da inserire per i vari coefficienti :(
 
Mi spiace non sia formattato..
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int main(void)
{
int scelta;
float b,c,d,delta,k,x,r,e,y;
float p;
float t;
float o,l;
float a,z;

printf("\Calculator_Equation\n by M.Zotti \1\1\1\1\1\1\1 ");

printf("\n\n°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°* °*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*\n\n\nPr emi:\n\n1 per eseguire il programma\n\n2 per uscire\n\nScelta: ");
scanf("%s", scelta);

while(scelta != 2) {

printf("\r\n\rInserisci il valore del coefficiente di x^2:\n\n");
scanf("%f",&a);

printf("\nInserisci il valore del coefficiente di x:\n\n");
scanf("%f", &b);

printf("\nInserisci il valore del termine noto:\n\n");
scanf("%f", &c);



printf("\n\n°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°* °*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°* °*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°* °*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°* °*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°* °*\n\n");


delta=b*b-4*a*c;
k= sqrt(delta);
x=-b+k/2*a;
y=-b-k/2*a;
t=(-b)/(2*a);
z=-(c/b);
r=0;
p=-(b/a);
o=sqrt(c/a);
l=-sqrt(c/a);
e=b*b;

if (a==0)
printf("\nL'equazione diviene di primo grado e ammette come unica soluzione x=%f\n\n", z);
else if (a!=0){
if (delta==0)
{
printf ("\nLe soluzioni sono due ma coincidenti, dunque x=%f\n\n", t);
}
else if (delta<0)
{
printf("\nNon ci sono soluzioni nell'insieme dei numeri reali\n\n");};
if (delta==e)
{printf("\nLe soluzioni sono:\nx1=%f e x2=%f\n\n", r,p);
}
else if (delta>0)
{
printf ("\nL'equazione ammette due soluzioni reali e distinte:\nx1=%f e x2=%f\n\n", x, y);
}
}
printf("\n\n°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°* °*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*\n\n\n") ;
printf("\n\n°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°* °*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*°*\n\n\nPr emi:\n\n1 per eseguire il programma\n\n2 per uscire\n\nScelta: ");
scanf("%s", scelta);
}
}

Sostanzialmente carichi il valore "scelta" prima di cominciare il ciclo; se è diverso da 2, entra nel ciclo e fa quello che deve fare.
Alla fine delle operazioni, richiede di inserire "scelta" il quale verrà controllato da "while".

Il DoWhile è nato proprio per eseguire almeno una volta il corpo di un ciclo indipendentemente dalle condizioni che vengono controllate dopo (si capisce dal codice, le condizioni sono alla fine).

Fammi sapere ;)
 
Consiglio: se l'if contiene una istruzione, non c'è bisogno di usare le parentesi {}. ;)

vero, le parentesi si usano per i gruppi di istruzioni contenute nel ramo if/else, però per evitare errori, metterle anche quando l'istruzione è una sola non costa nulla... così eviti errori stupidi e il programma gira lo stesso ;)


p.s. sono 2gg che studio C, quindi non siate duri con me se ho detto una cosa errata :asd:
 
Era un consiglio :)
Lo dicevo perchè essendo abituato a non metterle ho impiegato un po' di tempo a capire dove stavano, soprattutto perchè con il forum si è persa l'indentazione :)

Bene comunque :D
 
Pubblicità
Pubblicità
Indietro
Top