Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Funkcje c++ [bool]


Rekomendowane odpowiedzi

Opublikowano

Gdy mam kod np;

 

bool problem (int a)
cin >> a;
if (a == 0)
return false; //To oznacza ,że kiedy a = 0 to kod się nie wykona?
if (a > 0)
return true; // wszystko większe od 0 się wykona?

proszę o wytłumaczenie ;]

Opublikowano

Nie, to oznacza, że funkcja zwróci wartość true lub false typu bool jeśli zostanie spełniony jakiś warunek.

 

Podaje przykład: (poprawiona podana wyżej funkcja)

 

bool sprawdz (int a)
{
cin >> a;
if (a== 0)
 return false; //zwraca wartość false
if (a > 0)
 return true; //zwraca wartosc true;
}
void Check()
{
bool x = sprawdz(3);
if (x == true)
 cout << "hue hue" << endl;
else
 count <<"hehehe" << endl;
}

Opublikowano

bool problem (int a) // deklaracja zmiennej typu bool
cin >> a; // wrzucenie wartości do boola
if (a == 0) // jeśli a wynosi 0 to...
return false; // ...zwróć 0
if (a > 0)
return true; // ...zwróć 1

"return" jest do zwracania wartości przez funkcję. Np. funkcja "pow(a, B)" (to jest do potegowania) zwraca potęgę "a" o wykładniku "b".

 

@UP

Można prościej :P

bool sprawdz(int a)
{return a ? true : false;}

Smutek to skutek chęci w kontekście skutku

raczej niefrasobliwej wzglądu o treści zgryźliwej

ma postać walca co jeździ nam po palcach.

Opublikowano
Opublikowano

Kurde już coś po woli czaje tylko podczas nauki natrafiłem na problem z funkcjami ktorych kompletnie nie czaie

 

bool BylaLosowana(int ile, int liczbwtablicy, int tab[])
{
if (ile <= 0)
return false;

int i = 0;
do
{
if( tab[ i ] == liczbwtablicy )
return true;

i++;


}while (i < ile);
return false;
}

jakby mógł mi ktoś omówić tę funkcję

Opublikowano

bool BylaLosowana(int ile, int liczbwtablicy, int tab[])
{
if (ile <= 0)
return false;

int i = 0;
do
{
if( tab[ i ] == liczbwtablicy )
return true;

i++;


}while (i < ile);
return false;
}

 

Wydaje mi się, że to po prostu sprawdza czy dana liczba znajduje się w tej tablicy.

ile to jest rozmiar tablicy.

liczbwatblicy to liczba do sprawdzenia czy jest w tablicy.

tab[] to wskaźnik na tablicę w której będzie sprawdzane czy wystąpił liczbwatblicy.

Smutek to skutek chęci w kontekście skutku

raczej niefrasobliwej wzglądu o treści zgryźliwej

ma postać walca co jeździ nam po palcach.

Opublikowano

No tak to czaie ,ale co daje właśnie to return false; i true bo to jest dla mnie góra lodowa nie do przebycia

W powyższej funkcji występuje również słowo kluczowe return. Słowem kluczowym return ustawiamy wartość jaka ma zostać zwrócona przez funkcję.

Jak zrobisz coś takiego:

cout << BylaLosowana(a, 5, in);

 

To jeżeli w tablicy jest 5, to w konsoli się wyświetli

1

A jak nie, to

0

Smutek to skutek chęci w kontekście skutku

raczej niefrasobliwej wzglądu o treści zgryźliwej

ma postać walca co jeździ nam po palcach.

Opublikowano

prościej.

return wychodzi z funkcji (tzn. wraca do miejsca jej wywołania). Tam "zostawia" po sobie wartość którą podaliśmy przy return (po prawej jego stronie).

Może to być dowolna wartość. Musi być jednak typu, który podajemy przy deklaracji funkcji.

 

tab[] to wskaźnik na tablicę w której będzie sprawdzane czy wystąpił liczbwatblicy.

w tamtym wypadku jest to kopia tablicy, nie wskaźnik na jej pierwszy element.

@down, faktycznie, zwracam honor, nie wiedziałem o tym

Opublikowano

prościej.

return wychodzi z funkcji (tzn. wraca do miejsca jej wywołania). Tam "zostawia" po sobie wartość którą podaliśmy przy return (po prawej jego stronie).

Może to być dowolna wartość. Musi być jednak typu, który podajemy przy deklaracji funkcji.

 

 

w tamtym wypadku jest to kopia tablicy, nie wskaźnik na jej pierwszy element.

 

Na pewno?

http://ideone.com/ZctEW

Smutek to skutek chęci w kontekście skutku

raczej niefrasobliwej wzglądu o treści zgryźliwej

ma postać walca co jeździ nam po palcach.

Opublikowano

Zakładam, że rozumiesz, co oznacza return. bool jest to typ, która może przyjąć tylko dwie wartości: true (prawda), czyli 1 i false (fałsz) czyli 0. Tworząc funkcję typu bool możemy zwracać te właśnie wartości albo do zmiennej typu bool, albo do instrukcji sprawdzającej warunki np. if. Funkcję którą podałeś można użyć np. tak:

 

#include <iostream>
using namespace std;
bool BylaLosowana(int ile, int liczbwtablicy, int tab[])
{
if (ile <= 0)
return false;
int i = 0;
do
{
if( tab[ i ] == liczbwtablicy )
return true;
i++;

}while (i < ile);
return false;
}
int main()
{
int tab[4] = { 3,4,5,6 };
if(BylaLosowana(4,5,tab))cout<<"ta zmienna znajduje sie w tej tablicy";
else cout<<"Tej wartosci nie ma w tablicy";
}

 

Na początku funkcja sprawdza, czy pierwszy argument funkcji jest mniejszy lub równy zero. Jeśli ten warunek jest spełniony, funkcja zostaje przerwana,a jej wartością zostanie false (fałsz) i w warunku if w main() zostanie wydrukowany w konsoli ten drugi łańcuch, czyli po else. Jeśli nie, funkcja idzie dalej. Wykonuje pętle do while, dopóki nie zostanie spełniony warunek w if (któryś z zmiennych w tablicy będzie równa zmiennej liczbwtablicy). Wtedy funkcja zostanie przerwana, a jej wartością zostanie true (prawda). Wtedy w warunku if w main() zostanie wydrukowany ten pierwszy łańcuch. Jeżeli pętla przejdzie przez całą tablicę i nie znajdzie równej wartości (zmienna i przestanie być mniejsza od zmiennej ile), to podobnie jak w pierwszym warunku tej funkcji zwróci ona wartość false.

 

Koniec wykładu, nie jestem pewien czy o to ci dokładnie chodziło. Polecam skompilować sobie ten program, co pokazałem na początku, z różnymi wartościami argumentu liczbywtablicy :).


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

Czyli jak dobrze rozumiem( proszę powiedz dobrzę ;] ) to jak po kodzie znajduję się...

 

return false;

i warunek jest spełniony to funkcja sie przerywa, a jak jest warunek spełniający

 

return true;

 

to funkcja doąży do skończenia funkcji?

Opublikowano

Każda funkcja napotykając słowo kluczowe return w swoim kodzie kończy się i zwraca wartość znajdującą się po tym słowie kluczowym. Pokaże przykład:

int f()
{
int liczba;
while(true)
{
cin>>liczba;
if(liczba>0)return liczba;
}

 

Ta funkcja kończy się wtedy, gdy liczba wpisana przez użytkownika jest większa od zera, i zwraca tą liczbę.

 

W obu przypadkach i w return true i w return false kończy się funkcja, zwraca w pierwszym przypadku true, a w drugim false.

Mam nadzieje, że za bardzo nie mieszam. Mogę ci jeszcze rozszerzyć trochę ten program, który napisałem w poprzednim poście :).


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

W tej chwili przestaję cię rozumieć. O jaki wpływ ci chodzi?


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

Wait na spokojnie ;]

bo gdy masz np

 

#include <iostream>
using namespace std;
bool BylaLosowana(int ile, int liczbwtablicy, int tab[])
{
if (ile <= 0)
return false; \\ co by zmienilo jakby tu dac true
int i = 0;
do
{
if( tab[ i ] == liczbwtablicy )
return true; \\ a tu false
i++;
}while (i < ile);
return false; \\ tu tez true
}
int main()
{
int tab[4] = { 3,4,5,6 };
if(BylaLosowana(4,5,tab))cout<<"ta zmienna znajduje sie w tej tablicy";
else cout<<"Tej wartosci nie ma w tablicy";
}

Ten program co mi napisałeś

Opublikowano

Efekt odwrotny do zamierzanego :). Najlepiej samemu sprawdzić kompilując ten kod i modyfikując go :).


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

może tak.

true jest równoważne z wartością liczbową 1

false z 0

return powoduje natychmiastowe wyjście z funkcji, przejście do miejsca jej wywołania i pozostawienie po sobie wartości z prawej strony return

Opublikowano

Od tego, czy ta funkcja ma zwracać prawdę czy fałsz. W tej funkcji którą podałeś zależy to od tego, czy podana wartość była w podanej tablicy, czy też nie.


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

Return WYCHODZI Z FUNKCJI.

 

Zawsze.

 

NIGDY nie zostanie wykonana ŻADNA linia po instrukcji RETURN.

 

- - - - - - - -

 

Natomiast to, jakie wyrażenie znajduje się na lewo od RETURN'a:

 

return wyrażenie ;

 

Ma znaczenie jedynie w funkcji wywołującej twoją funkcję - tzw. caller.

Funkcja wywoływana to callee.

 

Callee może zwrócić restrykcyjnie określoną wartość do caller'a.

 

Do zwracania wartości do caller'a służy instrukcja return.

 

Nie zawsze tak się dzieje. W C++ istnieje typ funkcji void, który uprzedza, iż funkcja nie zwraca żadnej wartości.

 

 void funkcja_return_void();
int main() { int a = funkcja_return_void(); } // Zwróci error. Jest to niedozwolone, gdyż funkcja nie ma prawa zwrócić żadnej wartości.  

 

Deklaracja każdej funkcji składa się zawsze z:

- przedstawienia typu zwracanego przez funkcję

- nazwy funkcji

- ewentualnych argumentów, które funkcja przyjmuje

Dokładnie w tej kolejności.

 

Instrukcja RETURN musi zwrócić wyrażenie typu jasno określonego już w momencie deklaracji funkcji.

Dzięki temu call'er dokładnie wie, jakiego typu oczekiwać.

Przypisanie wskaźnika na tablicę char'ów do zmiennej typu short int ( przedstawiającą 16bitową liczbę całkowitą ) nie ma większego sensu.

 

Podsumowując:

- funkcja zawsze kończy się w momencie wywołania instrukcji return

- wyrażęnie zwracane przez return jest przekazywane do call'era funkcji

- wyrażenie zwracane musi być określonego typu, opisanego już w deklaracji funkcji

Ta sygnatura jest pusta.

Opublikowano

Caller to funkcja wywołująca.

Callee to funkcja wywoływana.

 

 

void pewna_funkcja();
int funkcja_wywolywana();


moja_funkcja() {
  int var = funkcja_wywolywana(); // wywołujemy funkcję
  // w tym kontekście caller'em jest "moja_funkcja" a callee "funkcja_wywolywana"
  // trzeba zauważyć, że również "moja_funkcja" jest czyimś calee (intuicyjnie: coś musiało nas wywołać, żebyśmy w ogóle zaczęli działać).
  // Natomiast kto jest caller'em funkcji "moja_funkcja" - tego w tym przykładzie nie wiemy i - jak piszę niżej - nic nas to nie obchodzi.
}

 

 

int main() "zawsze" jest caller'em i "nigdy" nie jest callee.

 

 

Caller musi wiedzieć o istnieniu callee.

Intuicyjnie: Wywołując funkcję musisz znać jej nazwę.

 

 

 

Callee nie obchodzi kto ją wywołuje. Niezależnie od tego z którego miejsca aplikacji calee jest wywoływany - zawsze "musi" zachować się tak samo.

Intuicyjnie: Wykonując funkcję, nie musisz wiedzieć dla kogo ją wykonujesz.

 

 

 

 

 

"Musi" jest w cudzysłowie.

Generalnie tak nakazują dobre zasady programowania w C++.

 

Od tego, żeby "sprwadzić kto i w jakim kontekście nas wywołuje" mamy polimorfizm i szablony ( templates ).

 

 

 

- - - - - -

 

 

 

Pozostałe dwa cudzysłowia ( zawsze i nigdy, dot. int main ):

int main(); można wywoływać z dowolnego miejsca programu; język przed tym nie broni.

Jednak nie powinno się nigdy tak robić.

 

 

C++ to dość złożony i liberalny język.

Dużo praktyk jakie poznasz ( po zrozumieniu samych podstaw ) będą miały status "legalnych, ale niemoralnych".

 

 

Ta sygnatura jest pusta.

Opublikowano

Mozna tez wspomniec ze jest mozliwosc powrotu z funkcji void poprzez return, uzywane np. przy watkach kiedy wykonana zostanie zla operacja lub to na czym watek dziala sie posypie.

 

void fun(int a){
if(a==0)return;
else { /* .. */ };
}

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...