• 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ę.

VPS Starter Arubacloud
0 głosów
465 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,880 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 Nałogowiec (29,290 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 Pasjonat (15,610 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 Pasjonat (15,610 p.)

To zgadujemy dalej :)
KLIK

0 głosów
odpowiedź 4 listopada 2020 przez tangarr Mędrzec (154,780 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ź 88 wizyt
pytanie zadane 24 kwietnia 2019 w C i C++ przez Ewaryst Ławecki Obywatel (1,710 p.)
0 głosów
2 odpowiedzi 211 wizyt
0 głosów
1 odpowiedź 202 wizyt

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...