Obliczanie delty – dlaczego program cały czas liczy dwa miejsca zerowe?

0

Witam, czy mógłby mi ktoś poprawić ten kod? Bo nie do końca działa tak jak powinno a się pogubiłem :(

// Wczytanie bibliotek

#include <iostream>
#include <math.h>

using namespace std;
int main(int argc, char* argv[])
{
    // zainicjowanie potrzebnych zmiennych
    int a, b, c;
    int delta;

    cout<<"Wprowadz liczbe a: \n";
    cin>>a;
    cout<<"Wprowadz liczbe b: \n";
    cin>>b;
    cout<<"Wprowadz liczbe c: \n";
    cin>>c;

    delta = ((b*b)-(4*a*c));

    if(a != 0) // jeśli a nie jest równe 0
    {
        if(delta > 0) // jeśli delta jest większa 0
        {
            cout<<"\nx1: "<<((-b-sqrt(delta))/(2*a));
            cout<<"\nx2: "<<((-b+sqrt(delta))/(2*a))<<endl;  //endl to manipulator strumienia: wstawia znak nowej linii i wymusza zapisanie danych z bufora
        }
        else if(delta == 0) // w przeciwnym przypadku gdy delta jest równa 0
        {
            cout<<"x0: "<<(-b)/(2*a)<<endl;
        }
        else if(delta < 0) // w przeciwnym przypadku gdy delta jest mniejsza od 0
        {
            cout<<"Brak miejsc zerowych"<<endl;
        }
    }
    else // w przeciwnym przypadku (gdy a nie jest równe 0)
    {
        cout<<"To nie jest funkcja kwadratowa"<<endl;
    }
return 0;
}

Program mi cały czas liczy dwa miejsca zerowe mimo, że podstawiam specjalnie liczy żeby delta wyszła np równa 0

1

Jakie te liczby podstawiasz?

1

Podaj

  1. dane wejściowe, których używasz
  2. oczekiwane dane wyjściowe
  3. otrzymane dane wyjściowe

I popraw formatowanie kodu: Formatowanie treści postów na forum

0

Zaraz to przeanalizuję jeszcze na kartce podstawiając liczby a jak tak patrzycie to wygląda dobrze cały ten kod? Powinno być ok?

1

No jak ma wyjść delta 0 to nie trzeba kończyć matematyki żeby wybrać takie 3 liczby które taką deltę dadzą. Ja wpisałem odpowiednio 2, 4, 2 i dostałem 1 miejsce zerowe.

0

Faktycznie działa to moja pomyłka z przemęczenia. Dzięki i można usunąć post :)

1

Twoje komentarze są niepotrzebnie w większości, po co tłumaczyć że if (delta > 0) // jeśli delta jest większa niż 0? Właśnie dokładnie przetłumaczyłeś treść kodu. Komentarze się umieszcza gdy jest jakiś nietrywialny kawałek.

0
enedil napisał(a):

Twoje komentarze są niepotrzebnie w większości, po co tłumaczyć że if (delta > 0) // jeśli delta jest większa niż 0? Właśnie dokładnie przetłumaczyłeś treść kodu. Komentarze się umieszcza gdy jest jakiś nietrywialny kawałek.

Alternatywnie -- żeby wyjaśnić, dlaczego taki warunek. U Ciebie mogłoby być ewentualnie tak (choć i to raczej zbędne, bo Twój kod się sam ładnie tłumaczy):

...
    if(a != 0) // funkcja jest kwadratowa
...    
        if(delta > 0) // istnieją dwa różne miejsca zerowe
...
        else if(delta == 0) // istnieje jedno miejsce zerowe
...
        else if(delta < 0) // nie ma miejsc zerowych
...
    else // to nie jest funkcja kwadratowa
...

1 użytkowników online, w tym zalogowanych: 0, gości: 1