Programma in c ++ equazione di secondo grado

di il
3 risposte

Programma in c ++ equazione di secondo grado

Ciao a tutti!
ho un problema con un programma che devo scrivere : la risoluzione di un eq di secondo grado dando i paramentri.
sono giorni che ci provo ma ogni volta c'è un pezzo che è sbagliato e che non capisco.. Avrei bisogno di una mano
#include <iostream>
#include <cmath>
using namespace std;
int main () {
int a,b,c;
cout << "inserisci a : " << a << endl;
cin >> a;
cout << "inserisci b: " << b << endl;
cin >> b;
cout << "inserisci c: " << c << endl;
cin >> c;

double x1;x2;
if(a|=0){
if(b*b-4*a*c>0)
{double i;
i = b*b-4*a*c;
cout << i << endl;
x1 = (-b+i)/(2*a);
x2 = (-b-i)/(2*a);
cout << "la soluzione è: " << x1 << x2 << endl;
}
else if (b*b-4*a*c==0)
{
x1 = -b/(2*a);
cout << "la soluzione è: " << x1 << endl;
}
else if (b*b-4*a*c<0)
{cout << "Delat negativo ! " << endl;
}
}
else if(a=0){
if (c|=0){
x1=-b/c;
cout << "la soluzione è" << x1 << endl;
}
else if(c=0){
cout << "denominatore negativo ! " << endl;
}}
return 0;
}

mi vengono numeri strani...

3 Risposte

  • Re: Programma in c ++ equazione di secondo grado

    
    c|=0
    c=0
    
    Non funzionera' MAI
    Lo so che cosa vuoi fare, MA

    1) gli operatori di confronto che vuoi usare NON SI SCRIVONO COSI'

    2) devi SEMPRE (MA SEMPRE, SEMPRE, che dico, SEMPRE, SEMPRE, SEMPRE, ...) RICORDARE che non si possono MAI confrontare i numeri con la virgola per "UGUALE/NON UGUALE", perche' c'e' SEMPRE (ma che dico, SEMPRE, SEMPRE, ... ) (nel 99.9999% dei casi) un PICCOLISSIMO errore, per quanto insignificante, che fa si che l'uguaglianza NON SIA VALIDA.

    Quando devi confrontare due numeri con la virgole per uguaglianza DEVI SEMPRE prendere in cosiderazione che i due numeri sono uguali A MENO DI UN PICCOLO ERRORE che puoi decidere di volta in volta (NON ESISTE un valore fisso, per N-milioni di motivi che non si possono descrivere tutti in una riga).
    
    #include<stdio.h>
    #include <math.h>
    
    int main(int argc, char** argv) {
        double x, y;
        for (int i=1; i<256; ++i) {
            x = 1./i;
            y = x*i;
            if (y != 1)
                printf("1/%d -> no (%g)\n", i, abs(1-y));
        }
    }
    
  • Re: Programma in c ++ equazione di secondo grado

    Controlla anche l'==. Attenzione che il C accetta anche le assegnazioni dentro le parentesi
  • Re: Programma in c ++ equazione di secondo grado

    Io vi ringrazio di cuore... per fortuna ho risolto.. si avevo fatto degli errori stupidi e dettati dal voler fare veloce! grazie mille
Devi accedere o registrarti per scrivere nel forum
3 risposte