Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Algorytm równania kwadratowego.

Mlody969 15 Gru 2011 17:17 1786 6
  • #1 15 Gru 2011 17:17
    Mlody969
    Poziom 2  

    Witam wszystkich!
    Chciałbym zwrócić się o pomoc do osób, które mają opanowany program C++ i potrafią napisać algorytm równania kwadratowego. Ja jako laik nie potrafię napisać nic w tym programie, zlecona została mi praca a mianowicie równanie które muszę napisać w wyżej wymienionym programie.

    Także prosił bym o pomoc, a o to treść zadania:

    Napisz algorytm równania kwadratowego w programie C++
    równanie: ax² + b + c

    Proszę o pomoc!

    0 6
  • Pomocny post
    #2 15 Gru 2011 17:40
    Matejkos
    Poziom 20  

    Zacznijmy od tego że C++ nie jest programem a językiem programowanie, ale to szczegół. Jeśli nie wiesz jak się za to zabrać to rozpisz sobie algorytm i napisz z jakimi krokami implementacji masz problem. W internecie jest na prawdę sporo przykładów i tutoriali z tego języka. Na gotowca nie licz choć sądzę że bez większego problemu można by go znaleźć w necie.
    Reasumując
    -przedstaw algorytm
    - powiedz dokładnie z czym masz problem

    0
  • #3 15 Gru 2011 17:46
    Mlody969
    Poziom 2  

    Totalnie nie wiem o co chodzi w tym programie przed godziną pierwszy raz go włączyłem... Mógłbyś mi to głębiej wytłumaczyć? Lub podać jakieś strony żebym zrozumiał co masz na myśli pisząc przedstaw algorytm? Na prawdę nie wiem co to oznacza ani jak to wygląda...

    W google szukam na ten temat informacji od ponad 2 godzin, i to co znajduje jest dla mnie czarną magią...

    Znalazłem coś takiego :

    Code:

    #include <iostream.h>
    #include <math.h>
    #pragma argsused
    using namespace std;
    //FUNKCJA KWADRATOWA
    int main(int argc, char* argv[])
    {
    cout<<"Wprowadz liczbe :\n";
    int a,b,c;
    float f;
    cout << "a= ";
    cin >>a;
    cout << "b= ";
    cin >>b;
    cout << "c= ";
    cin >> c;
    int delta;
    delta=((b*b)-(4*a*c));
    if(a!=0)
    {
    if(delta>=0)
    {
    cout<<"\nPierwiastek x1: "<<((-b-sqrt(delta))/(2*a));
    cout<<"\nPierwiastek x2: "<<((-b+sqrt(delta))/(2*a))<<endl;

    }
    else
    {
    cout<<"\nPierwiastek Re: "<<(-b/(2*a));
    cout<<"\nPierwiastek Im: "<<fabs(sqrt(fabs(delta))/(2*a))<<endl;
    }
    }
    else
    {
    cout<<"Funkcja nie jest kwadratowa: "<<endl;
    }
    system("PAUSE");
    return 0;
    }

    0
  • Pomocny post
    #4 15 Gru 2011 18:07
    marcinj12
    Poziom 40  

    No to znalazł Kolega gotowy algorytm, w czym jeszcze problem, kopiuj-wklej nie działa?
    Kolega Dżyszla też udostępnia na swojej stronie gotowca: http://www.dzyszla.aplus.pl/programy_i_teksty-15.html (program o nazwie RKW.CPP), wystarczy pobrać, rozpakować, skopiować do programu i już.

    Nie wiem jakiego środowiska używasz, jeżeli żadnego lub jest to Code::Blocks, to tutaj masz od podstaw, krok po kroku napisane i z obrazkami, jak takie środowisko zainstalować, skonfigurować i napisać pierwszy program typu Hello World.

    0
  • #5 15 Gru 2011 18:19
    Mlody969
    Poziom 2  

    Serdecznie dziękuję Panom za pomoc!!

    Pozdrawiam!

    0
  • #6 15 Gru 2011 19:17
    Xitami
    Poziom 29  

    numerycznie poprawniej jest liczyć troszkę inaczej
    $$ax^2+bx+c=0\\
    \\
    p=\frac{b}{a},\quad q=\frac{c}{a},\quad\Delta=p^2-4q$$

    Powiedzmy, że $$\Delta>0$$

    $$p>0 \Rightarrow x_1=\frac{-p-\sqrt\Delta}{2},\quad x_2=\frac{q}{x_1}$$

    $$p<0 \Rightarrow x_1=\frac{-p+\sqrt\Delta}{2}\quad x_2=\frac{q}{x_1}$$

    Można sprawdzić np. dla: $$x^2-6.433\cdot x+0.009474=0$$

    0
  • #7 15 Gru 2011 20:06
    Matejkos
    Poziom 20  

    Ogólnie tak też jest dobrze z tego co mi ze szkoły wiadomo jedynie co te te zmienne typu int czyli a,b i c powinny być przynajmniej zadeklarowane jako float lub lepiej double w tym przypadku również delta. Kompletnie nie widzę zastosowania zmiennej f, ale taki kod będzie dobry dla całkowitych zniennych a,b,c.
    Pozdrawiam Matejkos

    0