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

lekcja 20, warunek if

Ostatnio zmodyfikowano 2014-06-21 13:46
Autor Wiadomość
grzeso
Temat założony przez niniejszego użytkownika
lekcja 20, warunek if
» 2014-06-20 23:10:26
Kod z lekcji 20:
C/C++
#include <iostream>

bool czyGodzinaPoprawna( int godz, int min, int sek )
{
    if( godz < 0 || godz > 23 )
         return false;
   
    if( min < 0 || min > 59 )
         return false;
   
    if( sek < 0 || sek > 59 )
         return false;
   
    return true;
}

void komunikatCzasu( bool bWynik )
{
    if( bWynik )
         std::cout << "Czas jest poprawny" << std::endl;
    else
         std::cout << "Czas jest niepoprawny" << std::endl;
   
}

int main()
{
    komunikatCzasu( czyGodzinaPoprawna( 24, 30, 50 ) );
    komunikatCzasu( czyGodzinaPoprawna( 12, 88, 50 ) );
    komunikatCzasu( czyGodzinaPoprawna( 1, 00, 99 ) );
    komunikatCzasu( czyGodzinaPoprawna( 7, 33, 01 ) );
    return 0;
}

Mój problem: czemu w funkcji
C/C++
void komunikatCzasu( bool bWynik )
{
    if( bWynik )
         std::cout << "Czas jest poprawny" << std::endl;
    else
         std::cout << "Czas jest niepoprawny" << std::endl;
   
}

przy
if
 nie ma warunku?

wszystko działa ok ale wczytując
bWynik
 wczytuje
true
 lub
false
. Nie ma tam warunku typu: Jeżeli bWynik=true to zrób to, a i tak działa
P-112418
pekfos
» 2014-06-20 23:18:15
przy
if
 nie ma warunku?
Jest.

Nie ma tam warunku typu: Jeżeli bWynik=true to zrób to, a i tak działa
Bo nie jest potrzebny.
C/C++
if( X )
to to samo co
C/C++
if( X == true )
A jak się uprzesz, to nawet to samo co
C/C++
if((( X == true ) == true ) == true )
Warunki dają wynik typu bool, więc jak już masz taką wartość, to po co rozpisywać coś, co i tak się stanie..?
P-112420
grzeso
Temat założony przez niniejszego użytkownika
» 2014-06-20 23:21:03
To tego o
if
 nie wiedziałem. Dzieki
P-112421
pekfos
» 2014-06-20 23:24:29
Taka rada: nie wpadaj w "tu musi być to". W if nie musi być wpisane żadne porównanie, a i porównania nie muszą być w instrukcjach warunkowych.
C/C++
bool warunek =( zmienna == 5 ); //nawias tylko dla troche wiekszej czytelności
if( warunek )
     std::cout << "zmienna jest rowna 5";
P-112422
grzeso
Temat założony przez niniejszego użytkownika
» 2014-06-20 23:46:50
Czyli generalnie jak nie wpisze nic oprócz zmiennej to
if( zmienna )
 uzna ze to co w nawiasie ma być równe true żeby warunek zadziałał?

czyli mogę zrobić np tak:
C/C++
int JakasFunkcja;
if( JakasFunkcja );

std::cout << "cos sie dzieje";

i teraz z JakasFunkcja coś wyjdzie i wynik musi być "true" żeby
if
 zadziałał i wyświetlił "cos sie dzieje"? a jak wyjdzie cokolwiek innego to nie zadziała
P-112423
pekfos
» 2014-06-21 00:39:32
Wartość podana tak w if, po rzutowaniu na bool, musi mieć wartość true, by kod warunkowy zadziałał. W przypadku int, dowolna niezerowa wartość, rzutowana na bool, daje true.
P-112426
grzeso
Temat założony przez niniejszego użytkownika
» 2014-06-21 13:46:56
ok, dzięki za pomoc
P-112455
« 1 »
  Strona 1 z 1