Jump to content

Archived

This topic is now archived and is closed to further replies.

piotrek879

Algorytm liczenia miejsc zerowych funkcji kwadratowej

Recommended Posts

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 to comment
Share on other sites

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 to comment
Share on other sites

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 to comment
Share on other sites



  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...