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

Object Storage Arubacloud
0 głosów
501 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ź 89 wizyt
pytanie zadane 24 kwietnia 2019 w C i C++ przez Ewaryst Ławecki Obywatel (1,710 p.)
0 głosów
2 odpowiedzi 215 wizyt
0 głosów
1 odpowiedź 204 wizyt

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...