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

Zadanie z wczytywaniem liczby za pomocą funkcji. Funkcja main nie "czyta" wartości zwróconej przez innąfunkcję.

0 głosów
79 wizyt
pytanie zadane 4 listopada 2020 w C i C++ przez rain.deer Początkujący (430 p.)

Znów mam niestety problem. Zadanie polega na tym, żeby za pomocą funkcji "wczytajLiczbe" przekazać do funkcji main liczbę wpisaną przez użytkownika. Program ma być zabezpieczony przed wprowadzeniem błędnych wartości.

I oczywiście nie działa. Gdy próbuję go uruchomić za pomocą Visual Studio pojawia mi się taki komunikat o błędzie:

LNK2019 nierozpoznany symbol zewnętrzny _WinMain@16 przywołany w funkcji "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) wczytywanie liczby za pomocą funkcji.

Cała zawartość funkcji main była już zapisana w treści zadania.

Ten błąd wskazywałby to, że nie można użyć zastosowanej w treści zadania domowego instrukcji  int liczba = wczytajLiczbe(). Jak zatem wywołać funkcję wczytajLiczbe w funkcji main? I czy trzeba przypisywać jej jakieś argumenty? A jeśli tak, to jakie?

Z góry bardzo dziękuję za pomoc. smiley

#include <iostream>
#include <limits>

int wczytajLiczbe()
{
    int liczba;
    std::cin >> liczba;
    while (std::cin.fail())
    {
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        std::cout << "To nie jest liczba. Podaj liczbe: ";
        std::cin >> liczba;

    }
    return liczba;
}

int main()
{
    std::cout << "Podaj liczbe: ";
    wczytajLiczbe();
    int liczba = wczytajLiczbe();
    std::cout << "Podales liczbe: " << liczba << std::endl;
    return 0;
}

 

komentarz 4 listopada 2020 przez wojtek_suchy Mądrala (6,790 p.)
U mnie w Code Block się normalnie kompiluje
komentarz 4 listopada 2020 przez rain.deer Początkujący (430 p.)
I faktycznie wykonuje działania? Tzn. jak się wpisze w funkcji wczytajLiczbe jakąś wartość liczbową, to ona "przechodzi" do funkcji main?
komentarz 4 listopada 2020 przez Oscar Pasjonat (22,170 p.)
Jakbyś, w main, nie wołał 2 razy tej funkcji to pewnie by działała lepiej.
komentarz 5 listopada 2020 przez rain.deer Początkujący (430 p.)
Faktycznie, niepotrzebnie w main dałam drugi raz "Podaj liczbę". Ten błąd spowodowany był bezrefleksyjnym przekopiowaniem tego fragmentu kodu z treści zadania.

2 odpowiedzi

0 głosów
odpowiedź 4 listopada 2020 przez Whiskey_Taster Stary wyjadacz (12,600 p.)

W Code Blocks działa normalnie. Zresztą, dziwne, gdyby nie działało, bo wszystko jest poprawne. Z tego co wyszperałem, to może być linker, tu masz podobny PROBLEM

komentarz 4 listopada 2020 przez rain.deer Początkujący (430 p.)

Zaproponowane tam rozwiązanie w moim przypadku się nie sprawdzi, bo już mam ustawione SUBSYSTEM:CONSOLE sad

komentarz 4 listopada 2020 przez Whiskey_Taster Stary wyjadacz (12,600 p.)

To zgadujemy dalej :)
KLIK

0 głosów
odpowiedź 4 listopada 2020 przez tangarr VIP (136,880 p.)
Błąd sugeruje, że stworzyłeś projekt targetowany dla klasycznego programu okienkowego.
Najszybciej będzie jeżeli stworzysz nowy pusty projekt i dodasz do niego swój plik cpp
komentarz 5 listopada 2020 przez rain.deer Początkujący (430 p.)

Skopiowałam kod do nowego pliku projektu, tym razem utworzonego jako pusty projekt i zaczęło działać. Poprawiłam też błędy w kodzie i teraz wygląda on tak: 

#include <iostream>
int wczytajLiczbe()
{
    std::cout << "Podaj liczbe: ";
    int liczba;
    std::cin >> liczba;
    while (std::cin.fail())
    {
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        std::cout << "To nie jest liczba. Podaj liczbe: ";
        std::cin >> liczba;
    }
    return(liczba);
}

int main()
{
    
    int liczba = wczytajLiczbe();
    std::cout << "Podales liczbe: " << liczba << std::endl;
    return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 57 wizyt
pytanie zadane 24 kwietnia 2019 w C i C++ przez Ewaryst Ławecki Obywatel (1,710 p.)
0 głosów
2 odpowiedzi 175 wizyt
0 głosów
1 odpowiedź 143 wizyt

86,541 zapytań

135,291 odpowiedzi

300,649 komentarzy

57,288 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...