Questa la consegna :
Creare un programma che stampi il menù:
1) Risolvere l'equazione di secondo grado ax^2+bx+c=0
2) Risolvere l'equazione di primo grado ax+b=0
3) Esci
Creare una funzione che stampi il menù
Creare una funzione per il calcolo del Delta
Alla fine del calcolo il programma ripresenterà il menù fin quando non si selezioni 3.
a,b,c sono interi
Si prevedano le seguenti eccezioni:
1) se la scelta del menù è incompatibile con il menù (in questo caso segnale l'errore e ripresenta il menù)
2) nel caso dell'equazione di secondo grado:
a) se a=0 (in questo caso richiederà di inserire "a" avvertendo dell'errore)
b) se Delta è minore di zero (in questo caso indicherà che non esistono soluzioni reali e ripresenterà il menù)
3) nel caso equazione di primo grado se a=0 (in questo caso richiederà di inserire "a" avvertendo dell'errore)
io ho scritto questo fino ad ora ma deve esserci qualche problema perchè in base alla scelta mi da l'equazione di primo grado sempre e comunque la calcola in modo sbagliato . Non mi richiede nemmeno di inserire i coefficienti per l'equazione di primo grado .
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void coefficienti(a, b, c, x1, x2)
{
printf("\ncoefficiente a:\n");
scanf("%f", &a);
printf("\ncoefficiente b:\n");
scanf("%f", &b);
printf("\ncoefficiente c:\n");
scanf("%f", &c);
}
void determinante(a,b,c,d)
{
d=b*b-4*a*c;
}
void soluzioni(a,b,d,x1,x2)
{
if(d<0)
printf("\nnon possono esserci soluzioni reali");
else if(d==0) {
x1=(-b)/(2*a);
printf("due soluzioni reali coincidenti x1 e x2 uguali a %f ",x1);
}
else
{
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
printf("due soluzioni reali distinte x1= %f e x2= %f ",x1,x2);
}
}
void equazione_primo(b,c,x1)
{
if((b==0)&&(c==0))
printf("\nequazione indeterminata");
else if(b==0)
printf("\nequazione impossibile");
else {
x1=-c/b;
printf("x= %f", x1);
}
}
void termini(f, e)
{
printf("immetti f: ");
scanf("%f",&f);
printf("immetti e: ");
scanf("%f",&e);
}
void risultati(e,f,y)
{
y=-e/f;
printf("il risultato dell'equazione di primo grado e': %f",y);
}
void main()
{
int scelta,a;
printf("*---------------------------------------*\n");
printf("| Menu A Scelta |\n");
printf("*---------------------------------------*\n");
printf("| 1 - equazione secondo grado |\n");
printf("| 2 - equazione primo grado |\n");
printf("| 3 - esci |\n");
scanf("%d", &scelta);
switch (scelta){
case 1:
coefficienti();
if(a==0)
equazione_primo();
else {
determinante();
soluzioni();
}
case 2:
risultati();
}
}