• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pierwiastek równania kwadratowego daje zły wynik

Object Storage Arubacloud
0 głosów
313 wizyt
pytanie zadane 20 czerwca 2021 w C i C++ przez Martita Bywalec (2,500 p.)

Program Pierwiastek równania kwadratowego daje zły wynik.
Przykład
Podaje z klawiatury a - 1, b  - 2, c - -3.

Wynik powinien być 2 pierwiastki a wychodzi 1 pierwiastek

Gdzie jest błąd?

#include <iostream>
#include <cmath>


using namespace std;
int main()
{
  int a, b, c, delta;
    cout<<"Podaj a,  b,  c:"<<endl; 
    cin>>a>>b>>c;
 if (a==0)  cout<<"to nie jest  równanie kwadratowe"<<endl; 
    delta = b*b-4*a*c;
 
    if(delta<0)
        cout << "Brak pierwiastkow";
    if(delta==0)
        cout << "1 pierwiastek";
    if(delta>0)
        cout << "2 pierwiastki" ;
        
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 20 czerwca 2021 przez tkz Nałogowiec (42,000 p.)
wybrane 20 czerwca 2021 przez Martita
 
Najlepsza

cpp.sh/9qety Według Twoich danych, wychodzą dwa pierwiastki. Poza tym, działasz na int'ach, Zmień typy na float/double. 

komentarz 20 czerwca 2021 przez Martita Bywalec (2,500 p.)

Ma wyświetlić się  tylko komunikat że są 2 pierwiastki.

Zmieniłam na double ale jest nadal źle. Nie wiem co jeszcze zmienić. Jestem początkująca.

#include <iostream>
#include <cmath>


using namespace std;
int main()
{
  double a, b, c, delta;
    cout<<"Podaj a,  b,  c:"<<endl; 
    cin>>a>>b>>c;
 if (a==0)  cout<<"to nie jest  równanie kwadratowe"<<endl; 
    delta = b*b-4*a*c;
 
    if(delta<0)
        cout << "Brak pierwiastkow";
    if(delta==0)
        cout << "Jeden pierwiastek";
    if(delta>0)
        cout << "2 pierwiastki" ;
        
    return 0;
}

 

komentarz 20 czerwca 2021 przez tkz Nałogowiec (42,000 p.)

Podaj a, b, c:

1 2 -3

2 pierwiastki 

Dostaje coś takiego. Jakiego wyniku oczekujesz?

komentarz 20 czerwca 2021 przez Martita Bywalec (2,500 p.)
Podaj a, b, c:

1, 2, -3

2 pierwiastki

dostaje brak pierwiastków
komentarz 20 czerwca 2021 przez Martita Bywalec (2,500 p.)

@tkz,
 Bo ja pisałam z przecinkami. Dzięki

 

komentarz 20 czerwca 2021 przez Martita Bywalec (2,500 p.)
przeniesione 20 czerwca 2021 przez Arkadiusz Waluk

@tkz, Czy ten program jest dobrze napisany do zadania poniżej do B, BO A opisze?

Brak opisu.

komentarz 20 czerwca 2021 przez tkz Nałogowiec (42,000 p.)
Nie. Nie znalazłaś pierwiastków. Tylko powiedziałaś, że są.
komentarz 20 czerwca 2021 przez Martita Bywalec (2,500 p.)
To jak to powinien wyglądać poprawny kod?
komentarz 20 czerwca 2021 przez tkz Nałogowiec (42,000 p.)
Oblicz pierwiastki jeżeli się da.
komentarz 20 czerwca 2021 przez Martita Bywalec (2,500 p.)

To jest dobrze?

#include <cmath>


using namespace std;
int main()
{
  double a, b, c, delta;
    cout<<"Podaj a, b, c:"<<endl; 
    cin>>a>>b>>c;
 if (a==0)  cout<<"to nie jest  równanie kwadratowe"<<endl; 
    delta = b*b-4*a*c;
 
    if(delta<0)
        cout << "Brak pierwiastkow";
    if(delta==0)
        cout << "1 pierwiastek"<< "x1= " << -b/2*a;
    if(delta>0)
        cout << "2 pierwiastki"<< "\n";
        cout << "x1= " << (-b-sqrt(delta))/2*a<< "\n";
        cout << "x2= " << (-b+sqrt(delta))/2*a;
        
    return 0;
}

 

komentarz 20 czerwca 2021 przez tkz Nałogowiec (42,000 p.)
Niezupełnie. Co z tego, że sprawdzasz, czy równanie jest kwadratowe, skoro i tak liczysz delete. Używaj {} przy if'ach, bo ostatni if jest teoretycznie niepoprawny. Bez znaczenia jaka jest delta i tak liczysz dwa pierwiastki.
komentarz 20 czerwca 2021 przez Martita Bywalec (2,500 p.)

Czy teraz dobrze?

#include <iostream>
#include <cmath>


using namespace std;
int main()
{
  double a, b, c, delta;
    cout<<"Podaj a, b, c:"<<endl; 
    cin>>a>>b>>c;
{
 if (a==0)  cout<<"to nie jest  równanie kwadratowe"<<endl; 
    delta = b*b-4*a*c;
}
{
    if(delta<0)
        cout << "Brak pierwiastkow";
}
{
    if(delta==0)
        cout << "1 pierwiastek"<< "x1= " << -b/2*a;
}
{
    if(delta>0)
        cout << "2 pierwiastki"<< "\n"<< "x1= " << (-b-sqrt(delta))/2*a<< "\n"<< "x2= " << (-b+sqrt(delta))/2*a;
}        
        
    return 0;
}

 

komentarz 20 czerwca 2021 przez tkz Nałogowiec (42,000 p.)
#include <iostream>
#include <cmath>

using namespace std;
int main() {
    double a, b, c, delta;
    cout << "Podaj a, b, c:" << endl;
    cin >> a >> b >> c; 
    if (a == 0){
        cout << "to nie jest  równanie kwadratowe" << endl;  
        return 0; //kończysz działanie programu, bo co masz dalej liczyc?
    }
    delta = b * b - 4 * a * c;
    if (delta < 0){
        cout << "Brak pierwiastkow";
    }
    if (delta == 0){
        cout << "1 pierwiastek" << "\n"
        << "x1= " << -b / 2 * a;
    }
    if (delta > 0){
        cout << "2 pierwiastki" << "\n" 
        << "x1= " << ((-b - sqrt(delta)) / (2 * a)) << "\n" //(2 * a) nawiasy
        << "x2= " << ((-b + sqrt(delta)) / (2 * a));
    }
}

 

komentarz 20 czerwca 2021 przez Martita Bywalec (2,500 p.)
Dzięki

Podobne pytania

0 głosów
2 odpowiedzi 273 wizyt
pytanie zadane 15 listopada 2020 w C i C++ przez MrCrow Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 208 wizyt
pytanie zadane 12 czerwca 2022 w C i C++ przez Migger Nowicjusz (170 p.)
+1 głos
0 odpowiedzi 999 wizyt

92,589 zapytań

141,439 odpowiedzi

319,692 komentarzy

61,974 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...