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

Funkcje - pierwsze starcie. Funkcja wykonuje się przed jej wywołaniem.

Ostatnio zmodyfikowano 2017-01-18 21:26
Autor Wiadomość
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:
C/C++
#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:
C/C++
#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;
        } //switch
    } 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.
P-156606
Lora
» 2017-01-18 20:59:47
C/C++
int main()
{
    //WczytajLiczbe(); Po co to?
    int liczba = WczytajLiczbe();
    cout << "Wczytana liczba = ";
    cout << liczba;
    return 0;
}
P-156614
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
P-156626
« 1 »
  Strona 1 z 1