Programma per equazioni di 2° c++

oleg.fresi
Ho fatto questo programmino in c++ che calcola le equazioni di 2° in tutte le possibili forme. Funziona con la console di windows, quando inserisco le variabili il programma finisce ignorando lo switch. Perche? Cosa ho sbagliato? Ecco il codice:


#include
#include
#include
using namespace std;

int a;
int b;
int c;
int x1;
int x2;
int d;
int tipoDiEquazione=0;

int main()
{
cout <<"Inserisci l'equazione \n";
cout <<"Inserisci il coefficiente della a: \n";
cin >>a;
cout <<"Inserisci il coefficiente della b: \n";
cin >>b;
cout <<"Inserisci il coefficiente della c: \n";
cin >>c;

switch(tipoDiEquazione)
{
case 1:
if (a==0)
{
cout <<"L'equazione non e' di secondo grado";
x1=x2=-(b/a);
cout < }
break;

case 2:
if(c==0)
{
cout <<"L'equazione e' spuria";
x1 = 0;
x2 = -(b/a);
cout < cout < }
break;

case 3:
if(b==0)
{
cout <<"L'equazione e' pura";
x1 = -sqrt(-c/a);
x2 = sqrt(-c/a);
cout < cout < }
break;

case 4:
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)
{
cout <<"Questa equazione e' impossibile in R ma ha due soluzioni complesse in C"< }

}
system("PAUSE");
return 0;
}
}

Risposte
apatriarca
La variabile tipoDiEquazione è inizializzata a zero e non viene modificata da nessuna parte.

oleg.fresi
Potreste spiegarmi come fare la selezione con lo switch tra le opzioni in cui a=0(eq. di primo grado) b=0(equazione pura) c=0(equazione spuria) a,b,c diversi da zero(equazione completa). Penso di aver sbagliato impostando lo switch.

apatriarca
Siccome il metodo generale vale per ogni valore di a, b e c non vedo il senso di selezionare il tipo di equazione. Oltretutto non è qualcosa di così immediato. Dovresti confrontare se i vari valori sono uguali a zero e in base ad essi scegliere il valore della variabile da usare nello switch. Ma è completamente inutile.

oleg.fresi
quindi è meglio usare if else per vedere se l'equazione è pura, spuria o completa?

apatriarca
Non c'è alcuna ragione per vedere se l'equazione è pura, spuria o completa. Tutti i casi, tranne quello in cui l'equazione è lineare e \(a=0,\) possono essere infatti risolti semplicemente usando la formula generale. In effetti il tuo codice, eliminando completamente lo switch il cui scopo è poco chiaro (mi chiedo in effetti se ti è chiaro cosa faccia esattamente infatti), già contiene la logica per gestire i vari casi particolari (robustezza a parte).

oleg.fresi
la discussione continua su questo forum:

"https://www.iprogrammatori.it/forum-programmazione/cplusplus/programma-per-equazioni-secondo-grado-t31856.html"

Sandra S.
Ciao, interessa anche a me perchè devo fare un esercizio simile.
Il link non funziona, se ci clicco sopra non fa niente....Help

axpgn
Basta copiarlo e incollarlo in un browser (senza le virgolette ovviamente ... è per quello che non funziona direttamente)

@olegfresi
Cosa studi? Che classe fai?

oleg.fresi
Rispondo un pò in ritardo. Faccio lo scientifico ma d'estate mi annoio e visto che la mia passione oltre la matematica è l'informatica studio questa.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.