• 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

VPS Starter Arubacloud
0 głosów
308 wizyt
pytanie zadane 20 czerwca 2021 w C i C++ przez Martita Bywalec (2,470 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,470 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,470 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,470 p.)
Dzięki

Podobne pytania

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

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...