Rozdział 17 - pierwsze zadanie domowe
Ostatnio zmodyfikowano 2016-07-21 21:09
Norbix Temat założony przez niniejszego użytkownika |
Rozdział 17 - pierwsze zadanie domowe » 2016-07-11 16:25:09 Witam, w rozdziale 17 nie wiem jak napisać drugi warunek. Napisać funkcję która będzie wczytywała liczby ze standardowego wejścia i zwracała wczytaną wartość umiem, lecz dalej nie rozumiem. Jak funkcja ma zagwarantować, że zwracana liczba jest zawsze poprawna? Do tego dochodzi że funkcja będzie musiała pytać użytkownika o wprowadzenie liczby dopóki nie poda poprawnej. Zadanie: Napisz funkcję, która będzie wczytywała liczby ze standardowego wejścia i zwracała wczytaną wartość. Funkcja ma zagwarantować, że zwracana liczba zawsze jest poprawna. Oznacza to, że funkcja będzie musiała pytać użytkownika o wprowadzenie liczby dopóki nie poda poprawnej. #include <iostream>
using namespace std;
int wczytajLiczbe() { int liczba; cin >> liczba; return liczba; }
int main() { std::cout << "Podaj liczbe: "; int liczba = wczytajLiczbe(); std::cout << "Podales liczbe: " << liczba << std::endl; return 0; }
|
|
BlackFive |
» 2016-07-11 16:39:22 W zadaniu chodzi o to żeby napisać funkcję która się będzie wykonywać aż podasz prawdziwą liczbę dla zmiennej np. masz zdefiniowany typ całkowity to jeżeli podasz zmienną przecinkową lub np tekst to ma się funkcja wykonać jeszcze raz aż podasz liczbę całkowitą. |
|
Norbix Temat założony przez niniejszego użytkownika |
» 2016-07-12 15:45:44 Tak jak myślałem, tylko nie wiem jak zabezpieczyć program przed wpisaniem litery lub liczby przecinkowej. |
|
carlosmay |
» 2016-07-12 16:15:36 while( !( cin >> zmienna ) ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); }
Takie sprawdzanie zwykle wystarcza. Jak chcesz wykrywać wszystkie nie prawidłowe wyniki, musisz po udanym wczytaniu sprawdzić czy w buforze strumienia, są inne znaki niż znak nowego wiersza (np. metoda get(). Jeśli tak, oczyść bufor i ponownie wczytaj dane. |
|
Norbix Temat założony przez niniejszego użytkownika |
» 2016-07-13 14:35:52 Jeżeli dopisze to tak: int wczytajLiczbe() { int liczba; cin >> liczba; cin.clear(); return liczba; } while( !( cin >> liczba ) ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); } Wychodzi mi błąd kompilacji: expected unqualified-id before 'while' Nie rozumiem czemu tak jest, wkońcu w kursie jeżeli dało się pętle while za funkcją main to działało, coś widze że ta nauka mi dużo czasu zejdzie :/ |
|
karambaHZP |
» 2016-07-13 14:43:46 { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); }
|
To nie może być w przestrzeni globalnej. Może być funkcją, lub blokiem w innym bloku lokalnym. |
|
carlosmay |
» 2016-07-13 14:45:27 int wczytajLiczbe() { int liczba; cin >> liczba; cin.clear(); return liczba; } while( !( cin >> liczba ) ) Co to jest? |
|
Norbix Temat założony przez niniejszego użytkownika |
» 2016-07-13 15:25:30 Funkcja ktora wczytuje liczbe, przesyla do funkcji main a ta liczbe wypisuje. |
|
« 1 » 2 |