• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Prosta funkcja w C++

0 głosów
853 wizyt
pytanie zadane 22 lutego 2017 w C i C++ przez krzakurts Obywatel (1,470 p.)

Mam stworzyć funkcję, która będzie przy każdym wywołaniu podawała, które jest to wywołanie. Nie wiem, czy do końca dobrze to rozumiem. Zastosowałem tu po prostu pętlę while. Ma to sens? 

int liczba_wywolan=0;

void funkcja();

  void funkcja()
    {
         Sleep(1000);
         liczba_wywolan++;
         cout<< "Jest to: " << liczba_wywolan << " wywolanie"<<endl;

    }


int main()
{
    while(liczba_wywolan<10){
     funkcja();
    }
    return 0;
}

 

komentarz 22 lutego 2017 przez niezalogowany
edycja 22 lutego 2017

Możesz to zrobić lokalnie i statycznie tak:

#include <iostream>
#include <windows.h>
using namespace std;

void wypisz_ile()
{
    static int liczba_wywolan;
    Sleep(1000);
    cout<< "Jest to: " << ++liczba_wywolan << " wywolanie"<<endl;
}

int main()
{

    for(int i=0; i<10; i++)
    {
        wypisz_ile();
    }
    return 0;
}

 

komentarz 22 lutego 2017 przez niezalogowany
Zmienna statyczna to nie jest jakieś przeciwieństwo globalnej czy alternatywa. Zmienna statyczna może być globalna i lokalna. Tu jest lokalna dlatego nie można się do niej dobrać z poziomu main'a.
komentarz 22 lutego 2017 przez krzakurts Obywatel (1,470 p.)
Ok, dziękuję za pomoc. :) Próbowałem to zrobić lokalnie, ale nie potrzebnie zostałem przy 'while' i wywalało mi cały czas jeden błąd, pętla 'for' jest tutaj sensowniejsza.
komentarz 22 lutego 2017 przez niezalogowany
edycja 22 lutego 2017
W tej pętli while problemem było użycie zmiennej lokalnej w innej funkcji - pętlą while też byś zrobił robiąc dodatkowe zmienne ;)
komentarz 22 lutego 2017 przez krzakurts Obywatel (1,470 p.)
Właśnie taki błąd tam się pojawiał. :)

2 odpowiedzi

+3 głosów
odpowiedź 22 lutego 2017 przez L33TT12 Gaduła (3,950 p.)
Imo lepiej byłoby wywalić te zmienną globalną i zastosować typ statyczny, wyjdzie na to samo - a dużo lepiej.
3
komentarz 22 lutego 2017 przez criss Mędrzec (172,570 p.)
Raczej "zmienną statyczną". "Typ statyczny" brzmi troche myląco i w sumie to niepoprawnie :D Poza tym - jak najbardziej za.
komentarz 22 lutego 2017 przez L33TT12 Gaduła (3,950 p.)
No właśnie wiedziałem, że typ statyczny słabo brzmi, po prostu zapomniałem słowa na zmienna D:
komentarz 22 lutego 2017 przez krzakurts Obywatel (1,470 p.)
edycja 22 lutego 2017 przez krzakurts
A jak w prosty sposób zmienić, żeby funkcja nie korzystała ze zmiennej globalnej?
0 głosów
odpowiedź 22 lutego 2017 przez ofnero Użytkownik (830 p.)
Dodam jeszcze od siebie, że po definicji zmienna globalna, jak i statyczna domyślnie ma wartość 0.
komentarz 22 lutego 2017 przez Evelek Nałogowiec (28,960 p.)
O ile nie jest przypisana jej jakaś wartość.

Podobne pytania

0 głosów
2 odpowiedzi 428 wizyt
pytanie zadane 14 lutego 2018 w C i C++ przez chucksqll Stary wyjadacz (12,930 p.)
0 głosów
2 odpowiedzi 2,036 wizyt
pytanie zadane 10 lutego 2017 w JavaScript przez shslr Obywatel (1,310 p.)
0 głosów
1 odpowiedź 287 wizyt
pytanie zadane 6 listopada 2016 w C i C++ przez marcin8352 Nowicjusz (230 p.)

93,607 zapytań

142,530 odpowiedzi

322,999 komentarzy

63,098 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...