Funkcje - pierwsze starcie. Funkcja wykonuje się przed jej wywołaniem.
Ostatnio zmodyfikowano 2017-01-18 21:26
Muzyk Temat założony przez niniejszego użytkownika |
Funkcje - pierwsze starcie. Funkcja wykonuje się przed jej wywołaniem. » 2017-01-18 20:38:24 Cześć! Mam, myślę proste pytanie. Napisałem taki program: #include <cstdio> #include <iostream> using namespace std;
int WczytajLiczbe() { int WczytanaLiczba; do { cout << "Podaj Liczbe" << endl; cin.clear(); cin.sync(); cin >> WczytanaLiczba; } while( !cin.good() ); return WczytanaLiczba; }
int main() { WczytajLiczbe(); int liczba = WczytajLiczbe(); cout << "Wczytana liczba = "; cout << liczba; return 0; }
Mamy funkcję WczytajLiczbe(), która od użytkownika pobiera liczbę, sprawdza czy liczba jest rzeczywiście liczbą i zwraca ją. Dalej w głównym bloku main() wywołuję tę funkcję. Wszystko działa, ale nie do końca tak jak bym chciał: [dev] Podaj liczbe 12 Podaj liczbe 12 Wczytana liczba = 12 [/dev] Czyli program działa od góry do dołu: wykonuje funkcję WczytajLiczbe(), a potem przechodzi do funkcji main(), gdzie wywołuję funkcję WczytajLiczbe() i prosi ponownie o podanie liczby, a po podaniu wyświetla ją. Moje pytanie brzmi: jak zrobić to, że na początku tworzę sobie funkcję WczytajLiczbe(), ale program nie wykonuje jej od razu, tylko dopiero jak ją wywołam? Żeby ominąć sytuację,że muszę podać liczbę 2 razy. W przykładowym programie z kursu: #include <iostream> void moja_funkcja() { std::cout << "[1] - dodawanie" << std::endl; std::cout << "[2] - odejmowanie" << std::endl; std::cout << "[0] - wyjscie z programu" << std::endl; }
void dodawanie() { std::cout << "Jeszcze nie oprogramowano" << std::endl; }
void odejmowanie() { dodawanie(); }
int main() { std::cout << "W programie sa dostepne nastepujace opcje:" << std::endl; moja_funkcja(); std::cout << "Zycze przyjemnego korzystania z programu" << std::endl << std::endl; int liczba; do { moja_funkcja(); std::cin >> liczba; switch( liczba ) { case 1: dodawanie(); break; case 2: odejmowanie(); break; default: break; } } while( liczba != 0 ); return 0; }
program nie wykonuje na samym początku funkcji, więc nie wyświetla po kilka razy tego samego, dopiero jak zostanie któraś funkcja wywołana w main(). Różnice jaką zauważyłem to to, że w przykładowym programie funkcje nie zwracają danych, więc są zaczynane od void. |
|
Lora |
» 2017-01-18 20:59:47 int main() { int liczba = WczytajLiczbe(); cout << "Wczytana liczba = "; cout << liczba; return 0; }
|
|
Muzyk Temat założony przez niniejszego użytkownika |
» 2017-01-18 21:26:52 Dzięki, zapomniałem zaznaczyć, że typ sposobem o którym piszesz udało mi się rozwiązać problem, ale chodziło mi o to, czy jest możliwość wykonania tego w inny sposób: Tworzę funkcje (nie wykonuje się) Wywołuje funkcje (dopiero teraz program prosi o liczbę). Dziękuję.
EDIT: Pisząc jeszcze raz zauważyłem o co mi chodzi. Zamykam :P |
|
« 1 » |