olegfresi ha scritto:
Dunque ho capito che in questo tipo di programma lo switch non funziona quindi devo usare tutta una cascata di if else. L'input è dato dai 3 coefficienti
Anche io avevo pensato di riprovare con gli if...else, solo che mi dice:
http://prntscr.com/fseou
Il codice in C è qui sotto ed ho fatto un paio di modifiche come per esempio:
1) int a;
int b;
int c;
int d;
int x1;
int x2;
dove x1 ed x2 sono le due radici dell'equazione di secondo grado;
a,b,c sono i coefficienti;
senza le altre variabili (secondo me sono inutili);
2) sostituire lo switch che sinceramente non centra perchè è una funzione di selezione multipla dove tu imposti dei casi predefiniti in base al valore della variabile (che tu avevi messo tipoDiEquazione e tra l'altro l'avevi impostata sul valore 0...) e che il compilatore riconosce e per quanto io ne sappia (sono ancora alle prime armi con il C) nello switch ci devi mettere oltre il CASE: anche il DEFAULT: ....
Riporto il codice, se qualcuno mi corregge le parentesi posso continuare perchè non sono d'accordo sul printscreen (o meglio non riesco a trovare l'errore). Grazie e ciao! ....
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main( void )
{
int a;
int b;
int c;
int d;
int x1;
int x2;
puts( "Inserisci il coefficiente della x al quadrato: \n" );
scanf( "%d", &a );
puts( "Inserisci il coefficiente della x: \n" );
scanf( "%d", &b );
puts( "Inserisci il coefficiente della c: \n" );
scanf( "%d", &c );
if (a==0) {
puts( "L'equazione non e' di secondo grado" );
x1=x2=-(b/a);
puts( "x1<<endl" );
} else {
if(c==0) {
puts( "L'equazione e' spuria" );
x1 = 0;
x2 = -(b/a);
puts( "x1" );
puts( "x2" );
} else {
if(b==0) {
puts( "L'equazione e' pura" );
x1 = -sqrt(-c/a);
x2 = sqrt(-c/a);
puts( "x1" );
puts( "x2" );
} else {
if((a && b && c)!=0) {
d= (b*b)-4*a*c;
if(d>0) {
x1 = ((-b)-sqrt(d))/2*a;
x2 = ((-b)+sqrt(d))/2*a;
}
if(d==0) {
x1 = (-b)/2*a;
}
if(d<0) {
puts( "Questa equazione e' impossibile in R ma ha due soluzioni complesse in C" );
}
}
}
}
}