Dwa różne wyniki prostego kodu - jak to wyjaśnić
Ostatnio zmodyfikowano 2021-11-11 14:20
Scylvend Temat założony przez niniejszego użytkownika |
Dwa różne wyniki prostego kodu - jak to wyjaśnić » 2021-11-11 13:46:49 Witam, niedawno zacząłem studia informatyczne i mam za zadanie napisać program na obliczanie miejsca zerowego funkcji. Zanim w ogóle się za to zabiorę, chciałem napisać prosty warunek sprawdzający poprawność podanego przedziału dla którego będę pisał resztę kodu. Niestety funkcja sprawdzająca zwraca wynik prawdziwy nawet gdy jest on fałszywy... Identyczny kod napisany w ciele funkcji main zwraca fałsz, a w funkcji osobnej już prawdę. Czy ktoś może oświecić mnie, dlaczego tak się dzieje? Oto kod: #include <iostream>
using std::cout, std::cin, std::endl;
bool CzyDobryZakres( float a, float b ) { bool z =(( a * a * a - a * a - a + 2 ) *( b * b * b - b * b - b + 2 ) ); cout << z; return((( a * a * a - a * a - a + 2 ) *( b * b * b - b * b - b + 2 ) ) < 0 ); }
void InfoOZakresie( bool i ) { if( i ) { cout << "Zakres poprawny"; } else { cout << "Zakres niepoprawny"; } }
int main() { float a, b, d; cout << "Podaj granice przedzialu a, b" << "\na: "; cin >> a; cout << "\nb: "; cin >> b; cout << endl; bool z =((( a * a * a - a * a - a + 2 ) *( b * b * b - b * b - b + 2 ) ) < 0 ); cout << z << endl; InfoOZakresie( z ); cout << endl; cout << endl << CzyDobryZakres << endl; InfoOZakresie( CzyDobryZakres ); cout << endl; return 0; }
A oto wynik: Podaj granice przedzialu a, b a: 1
b: 2
0 Zakres niepoprawny
1 Zakres poprawny
Process returned 0 (0x0) execution time : 0.813 s Press any key to continue.
Help. |
|
Scylvend Temat założony przez niniejszego użytkownika |
» 2021-11-11 14:20:45 OK, zauważyłem, że wywołując funkcję CzyDobryZakres, wywołałem ją bez parametrów... :) |
|
« 1 » |