Program wypisuje złą wartość

0

Hejka, mógłby mi ktoś pomóc dlaczego mój program zwraca 1 ?

#include<iostream>
#include<fstream>
#include<cstdlib>
using namespace std;

double pole(double a, double b)
{
    double pole;
    pole = 1/2*a*b;
    return pole;

}

int main()
{

    double a;
    double b;

    ifstream plik;
    plik.open("a.txt");
    plik>>a,b;
    pole(a,b);

    cout<<pole;
}
0

to się w > ogóle skompilowało?
pole = 1/2ab;

0

Ten program nie zwraca 1, tylko 0 - w funkcji main() nie masz instrukcji return, co jest równoznaczne z return 0 na jej końcu.

Oczywiście nie masz na myśli zwraca, tylko wypisuje, ale po co komu precyzyjne słownictwo. A program nie wypisuje tego, co chcesz, ponieważ masz w nim UB - użycie zmiennej bez jej przypisania.

plik>>a,b;

jest równoznaczne

(plik >> a), b

czyli wczytujesz wartość do a, a z b nie robisz nic.

Powinno być:

plik >> a >> b;
2

1/2 w C++ daje zero.

1

a co on właściwie wypisuje

 cout<<pole;

jeśli pole jest funkcją, bo to mnie intryguje?

0
Miang napisał(a):

a co on właściwie wypisuje

 cout<<pole;

jeśli pole jest funkcją, bo to mnie intryguje?

Świetne pytanie. Nazwa funkcji, o ile jest jednoznaczna (brak overloadów, szablonów itd) zamieniana jest na wskaźnik do niej i wybierane jest przeładowanie ostream dla tego wskaźnika.

1

Dzięki wszystkim za pomoc, okazało się, ze po prostu jestem debilem i w wyniku zmęczenia wypisywałem takie głupoty jak 1/2 ;p Pozdroo

0

Jeszcze Jedno, mój błąd okazał się być banalnie prosty mój zapis wyglądał tak
a = 2
b =23
zamiast
2
23
Pozdroo ;p

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0