Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dwa różne wyniki prostego kodu - jak to wyjaśnić

Ostatnio zmodyfikowano 2021-11-11 14:20
Autor Wiadomość
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:
C/C++
#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; // a ta instrukcja w ogole nie dziala...
   
return((( a * a * a - a * a - a + 2 ) *( b * b * b - b * b - b + 2 ) ) < 0 ); // wartosc taka jak "z" w main
}

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.
P-179052
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...
:)
P-179053
« 1 »
  Strona 1 z 1