Jump to content
Sign in to follow this  
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;
}

Share this post


Link to post
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}

Share this post


Link to post
Share on other sites
Godzinę temu, zsm1g92 napisał:

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

Rly? (hint: masz jakiś pomysł, z czego wynika drugi wytknięty przez Ciebie błąd?)

Share this post


Link to post
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ć...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...