Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

piotrek879

Algorytm liczenia miejsc zerowych funkcji kwadratowej

Polecane posty

witam,piszać algorytm f. kwadratowek cały czad wyskakuje mi bład przy ostatnim else.. prosiłbym o pomoc.

treść :

#include <iostream>
#include <conio.h>
#include <cmath>
using namespace std;
int main()
{
    float a ;
    float b ;
    float c ;
    float delta ;
   
    cout << "Podaj liczbe a : " ;
    cin >> a ;
   cout << "Podaj liczbe b : " ;
   cin >> b ;
    cout << "Podaj liczbe c : " ;
    cin >> c ;
   
    delta = b*b - 4*a*c ;
   
    if (delta == 0)
    {
        cout << "Funckja ma jedno miejsce zerowe. Jest nim: " << -b/2*a ;
             
    }
    else if (delta < 0);
    {
       cout << "Funkcja nie ma miejsc zerowych" ;
    }
   
    else if (delta > 0); <----- tu wyskakuje błąd
    {
        cout << "Funckja ma dwa miejsca zerowe. Są nimi: " << (-b-sqrt(delta))/2*a <<
         " oraz " << (-b+sqrt(delta))/2*a;
    }
   
   
    getch();
    return 0;
}

Link do komentarza
Udostępnij na innych stronach

Mój przedmówca wytknął Autorowi jeden błąd, ja od siebie dołożę dwa następne :

- co jeśli użyszkodnik poda 0 dla a? Wywali się nawet bez średników, zaraz po instrukcji

cin >> a ;

powinno się sprawdzić czy a==0, jeśli tak zaniechać obliczeń i ewentualnie wypisać komunikat w stylu: "To nie jest funkcja kwadratowa".

- pierwszy if zakładam, że działa (bo nie ma średnika po warunku) już można było przetestować - wynik nie będzie się zgadzał dla a nie należącego do zbioru {-1,1}

Link do komentarza
Udostępnij na innych stronach

Pomyliłem kolejność, wybaczcie... ale jak już jestem winny, to się jeszcze potłumaczę... Każdy wie, co miałem na myśli... Autor patrzy na prawidłowy wzór, jak zakładam, a mimo to, tego nie uwzględnia, to chyba też jest błąd, tylko innego rodzaju? Po usunięciu nadmiarowych średników trzeba będzie ten program przetestować. Minimum to jeden przykład na każdego if'a (żeby każda instrukcja została przetestowana wraz z jej wpływem na resztę programu). Wtedy się okaże, że wyniki są błędne (nie dotyczy a ∈ {-1,1}... co już dowodzi, że minimum nie zawsze wystarcza...). Następnie, po poprawieniu wzoru zero będzie wywalać... Jeszcze raz biję się w piersi... Następnym razem się dwa razy zastanowię czy się wypowiadać...

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...