Ciao a tutti, a scuola stiamo facendo un po' di ripasso di c e il professore mi ha chiesto di creare un programma che risolva le equazioni di primo grado e anche quelle di secondo grado utilizzando if..
fin qui tutto ok ho creato tutto il codice e funziona tutto tranne una cosa che mi sta facendo impazzire.. ecco il codice:
#include <stdio.h> /*Include la libreria stdio.h*/
#include <conio.h> /*Include la libreria conio.h*/
#include <math.h> /*Include la libreria math.h*/
int scelta_utente; /*Dichiara la variabile di tipo intero "scelta_utente"*/
float a,b,c,delta,x,x_1,x_2; /*dichiaro tutte le variabili di tipo float (non
intere) utili nel programma*/
main ()
{ /*Apre il programma*/
printf("Programma per il calcolo di equazioni.\n\n"
"1. Equazioni di primo grado\n"
"2. Equazioni di secondo grado\n"
"3. Esci\n\n" ); /*Menù di scelta*/
printf("Scelta: ");
scanf("%d",&scelta_utente); /*Acquisisce il valore della
variabile scelta_utente*/
if(scelta_utente==1) { /*Se il valore è 1, il programma
esegue questo blocco di istruzioni
*/
printf("Hai scelto -Equazione di Primo Grado-\n"
"secondo la forma generale ax = b\n"
"inserisci il valore di a:\n"); /*Intestazione*/
scanf("%f",&a); /*Acquisisce il valore
della variabile a*/
printf("Adesso inserisci il valore di b:\n");
scanf("%f",&b); /*Acquisisce il valore
della variabile b*/
printf("La tua equazione e': (%.2f)x = (%.2f)\n",a,b);
/*Visualizza su schermo l'equazione*/
if(a != 0){ /*SE a DIVERSO da 0*/
x=b/a; /*Calcola x*/
printf("Secondo la formula risolutiva \t x = b/a \n"
"si ha:\tx = %.2f\n",x); /*Visualizza il
valore di x*/
} /*Fine del blocco di istruzioni di if a!=0*/
else if(b != 0) /*ALTRIMENTI SE b DIVERSO da 0*/
printf("L'equazione e' impossibile."); /*Non calcola x
perchè l'equazione
è impossibile*/
else printf("L'equazione e' indeterminata.");
/*ALTRIMENTI se a e b non sono
diverse da 0 l'equazione sarà
indeterminata*/
} /*Fine del blocco di istruzioni
di if scelta_utente==1*/
else if (scelta_utente==2) { /*"Altrimenti" se il valore
di scelta_utente è 2, il programma
esegue questo blocco di istruzioni
*/
printf("Hai scelto -Equazione di Secondo Grado-\n"
"Secondo la forma generale ax^2 + bx + c = 0\n"
"Inserisci il valore di a:\n"); /*Intestazione*/
scanf("%f",&a); /*Acquisisce il valore di a*/
if(a==0) /*SE a è UGUALE a 0*/
printf("L'equazione e' di primo grado!\n");
else if (a!=0) { /*ALTRIMENTI SE a diverso da 0*/
printf("Inserisci il valore di b:\n");
scanf("%f",&b); /*Acquisisce il valore di b*/
printf("Inserisci il valore di c:\n");
scanf("&f",&c); /*Acquisisce il valore di c*/ //SALTA QUESTO PASSAGGIO -.-''
printf("Secondo la formula generale la tua equazione e':\n"
"(%.2f)x^2 + (%.2)fx + (%.2f) = 0\n",a,b,c);
delta=pow(2,b)-4*a*c; /*Calcola il valore di delta*/
if(delta>0) { /*ALTRIMENTI SE delta>0 esegue questo blocco
di istruzioni*/
x_1=-b+sqrt(delta); /*Calcola x_1*/
x_2=-b-sqrt(delta); /*Calcola x_2*/
printf("L'equazione ha due soluzioni:\n"
"x_1 = %.2f\nx_2 = %.2f\n",x_1,x_2); /*Visualizza
su schermo il
valore di x_1
e x_2*/
} /*Fine del blocco di istruzioni di
else if delta>0*/
else if(delta==0) { /*ALTRIMENTI SE delta è uguale a 0*/
x_1=-b+sqrt(delta); /*Calcola x_1*/
x_2=-b-sqrt(delta); /*Calcola x_2*/
printf("L'equazione ha due soluzioni coincidenti:\n"
"x_1 = %.2f\nx_2 = %.2f\n",x_1,x_2);
/*Visualizza su schermo il
valore di x_1 e x_2 che in
questo caso sono cincidenti*/
}/*Fine del blocco di istruzioni
di else if delta==0*/
else printf("L'equazione e' impossibile.");
/*ALTRIMENTI se delta NON è > 0 e non è ==0
l'equazione sarà impossibile*/
}/*Fine del blocco di istruzioni di
else if a!=0*/
}/*Fine del blocco di istruzioni di
else if scelta_utente==2*/
else if(scelta_utente==3) printf("Arrivederci!"); /*ALTRIMENTI SE
scelta_utente==3
visualizza su schermo
"Arrivederci!"*/
getch (); /*Funzione utile a non far chiudere
il programma immediatamente dopo l'apertura*/
} /*Fine del programma*/
Allora.. funziona tutto apparte quando scelgo di risolvere un'equazione di secondo grado perchè il programma mi dice di inserire il valore di a e di b ma non quello di c! non capisco proprio perchè è come se non ci fosse scanf("%f",&c);
Qualcuno sa aiutarmi???