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

Poziom 2, rozdział 20 funckja komunikatCzasu

Ostatnio zmodyfikowano 2017-03-09 11:47
Autor Wiadomość
wiktorlenka
Temat założony przez niniejszego użytkownika
Poziom 2, rozdział 20 funckja komunikatCzasu
» 2017-03-09 09:36:25
Witajcie :)

Mam problem z poniższym kodem.
Po "if" mamy zmianną bWynik. Czy warunkiem jest   if(bWynik==true)  , a to co poniżej to zapis skrócony?
Nie moge znaleźć jednoznacznej odpowiedzi na moje pytanie...


void komunikatCzasu( bool bWynik )
{
    if( bWynik )
         std::cout << "Czas jest poprawny" << std::endl;
    else
         std::cout << "Czas jest niepoprawny" << std::endl;
P-158745
Anim
» 2017-03-09 09:55:02
Zapis

C/C++
if( zmienna )
jest równoważny zapisowi:
C/C++
if( zmienna != 0 )
i oczywiście jest równoważny zapisowi:
C/C++
if( zmienna == true )

Polecam raz jeszcze przeczytać lekcję:
http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Instrukcja-warunkowa-if-else/16
P-158746
carlosmay
» 2017-03-09 09:57:38
W tym wypadku tak. To jest skrócona wersja, ale dotyczy tylko zmiennych typu logicznego
bool
.
Dla typu liczbowego może być inaczej, np.
C/C++
int num;
std::cin >> num;
if( num == 1 ) { } // prawda tylko dla num = 1
if( num ) { } // prawda dla n != 0
Dokładniej opisano to w jednym z rozdziałów o operacjach logicznych.
Wejdzie z czasem w krew.
P-158747
wiktorlenka
Temat założony przez niniejszego użytkownika
» 2017-03-09 10:05:55
Super!
Bardzo Wam dziękuję :)
I oczywiście przeczytam jeszcze raz wspomniany temat.


Edit:

Jeszcze jednej rzeczy z tej lekcji nie mogę zrozumieć:

#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;
}

W powyższym kodzie nie rozumiem użycia funkcji czyGodzinaPoprawna.
Funkcja zwraca łącznie 4 wartości - wszystkie w typie bool (tak myślę, poprawcie mnie proszę jeśli źle zrozumiałam).
Z kolei funcja komunikatCzasu używa tylko jednej zmiennej, a przecież dostarczyliśmy jej 4 takich zmiennych...
W którym momencie bool'e łączą się w jedną zmienną (o ile w ogóle się łączą)?
P-158748
carlosmay
» 2017-03-09 11:44:00
Funkcja zwraca tylko jedną wartość zależną od spełnionego warunku.
P-158752
Anim
» 2017-03-09 11:44:58
Funkcja czyGodzinaPoprawna zwraca jedną wartość - typu bool. W momencie, gdy którykolwiek warunek z "if" zostanie spełniony zostanie wywołane return false/true. Co robi return? zwraca wartość i przerywa działanie funkcji.
P-158753
wiktorlenka
Temat założony przez niniejszego użytkownika
» 2017-03-09 11:47:57
Wszystko jasne :)

Dziękuję :)
P-158755
« 1 »
  Strona 1 z 1