Jump to content

Archived

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

Eniac

Proszę o pomoc przy kodzie programu w C++

Recommended Posts

Mam mały kłopot z programem w języku C++. Z C++ obcuje dopiero pół roku, więc nie do końca go znam. Potrzebuje od was małej pomocy. Poniżej zamieszczam kod programu obliczającego funkcje kwadratowe z wykorzystaniem instrukcji VOID, cały program jest okej, lecz błąd zdarza się w momencie pętli if else. Gdy dochodzi do petli i sa splenione warunki, to zamiast wyskoczyc to co pisalem w COUT'cie wyskakuje jeszcze inny warunek. Tzn przy jednym spelnionym wyskakuja dwa napisy, tak jakby dwa warunki byly spelnione.

#include <iostream>
#include <math.h>
using namespace std;
void delta()


{
     float a, b, c, delta;

     cout<<"Podaj a"<<endl;
     cin>>a;
     cout<<"Podaj b"<<endl;
     cin>>b;
     cout<<"Podaj c"<<endl;
     cin>>c;
     cout<<"Delta wynosi:"<<(b*B)-4*a*c<<endl;
}

void x1()

{
     float a, b, c, delta;
    
     cout<<"x1 wynosi:"<<(-b - sqrt((b*B)-4*a*c))/ (2*a)<<endl;    


}

void x2()

{
     float a, b, c, delta;
    
     cout<<"x2 wynosi:"<<(b - sqrt((b*B)-4*a*c))/ (2*a)<<endl;    


}
int main()

{
    delta();
    x1();
    x2();
    
if(delta>0)
{
cout<<"Sa dwa rozwiazania"<<endl;            
}

else if(delta==0)
{
     cout<<"Karolek"<<endl;

}
else cout<<"Kazik"<<endl;




    getchar();
    getchar();
    return 0;
}

Link to comment
Share on other sites

Ja bym to po prostu napisał tak:

#include <iostream>
#include <math.h>
using namespace std;

float a, b, c, delta;

void delta()
{
     cout<<"Podaj a"<<endl;
     cin>>a;
     cout<<"Podaj b"<<endl;
     cin>>b;
     cout<<"Podaj c"<<endl;
     cin>>c;
     cout<<"Delta wynosi:"<<(b*B)-4*a*c<<endl;
}

void x1()
{
     cout<<"x1 wynosi:"<<(-b - sqrt((b*B)-4*a*c))/ (2*a)<<endl;    
}

void x2()
{    
     cout<<"x2 wynosi:"<<(b - sqrt((b*B)-4*a*c))/ (2*a)<<endl;    
}

int main()
{
    delta();
    x1();
    x2();
    
    if(delta>0) {
        cout<<"Sa dwa rozwiazania"<<endl;            
    } else if (delta==0) {
        cout<<"Karolek"<<endl;
    } else
        cout<<"Kazik"<<endl;

    getchar();
    getchar();
    return 0;
}

Polecam poczytać sobie o zmiennych lokalnych i globalnych a na dokładkę o wskaźnikach do funkcji ;)

I tak jeszcze na marginesie - ten program może źle zadziałać dla wartości delta == 0, dlatego ja ten warunek dopisałbym z pewnym marginesem błędu:

if (delta > -0.00001 && delta < 0.00001) {
// (...)
}

@Mormegil - czy ja w twojej odpowiedzi przeoczyłem jakąś ironię?

Link to comment
Share on other sites

No tak, w tym przypadku delta jest traktowana jako wskaźnik do funkcji, który jest niezerowy. Wskaźniki są tak naprawdę liczbą wskazującą miejsce w pamięci. To takie wyjaśnienie dla kolegi Eniac'a ;)

Link to comment
Share on other sites



  • Recently Browsing   0 members

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