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

Poziom 2 (Funkcje - pierwsze starcie) - Praca Domowa 1

Ostatnio zmodyfikowano 2018-06-09 00:27
Autor Wiadomość
Key
Temat założony przez niniejszego użytkownika
Poziom 2 (Funkcje - pierwsze starcie) - Praca Domowa 1
» 2018-06-08 13:09:11
Chciałbym się dowiedzieć, czy dobrze rozwiązałem zadanie z wyżej wymienionego tematu. Dokładniej chodzi o:
"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.

C/C++
#include <iostream>
using namespace std;

int wczytajLiczbe()
{
    int podaj;
    do
    {
        cin >> podaj;
        cin.clear();
        cin.sync();
    } while( podaj == 0 );
   
    return podaj;
}

int main()
{
    std::cout << "Podaj liczbe: ";
    int liczba = wczytajLiczbe();
    std::cout << "Podales liczbe: " << liczba << std::endl;
    return 0;
}
 
PS.
Czy dałoby się zrobić bez zmieniania treści int main(), aby powtarzało się zdanie "Podaj liczbe: "? Tylko zmiana funckji wczytajLiczbe().
P-171435
YooSy
» 2018-06-08 13:58:06
W zadaniu chidzi o podawanie pobieranie liczby póki użytkownik nie podaje poprawnych danych, tj. znaków innych niż cyfry. Funkcja ma zwrócić poprawnie wprowadzoną liczbę.

W tej chwili twoja funkcja będzie prawie tożsama z
C/C++
int func() {
    return 0;
}
P-171436
pekfos
» 2018-06-08 15:07:00
0 jest poprawną liczbą, warunek jest wiec błędny. Twój sposób czyszczenia bufora również jest błędny.
P-171437
Key
Temat założony przez niniejszego użytkownika
Odp: pekfos,
» 2018-06-08 23:12:55
Jeśli chodzi o bufor, to zgaduję, że powinienem użyć zamiast cin.sync() tego czyszczenia z użyciem biblioteki <limits>. A propos warunku, jak zatem powinien brzmieć prawidłowy, zamiast ( podaj == 0)? Co można wpisać, aby w przypadku podania liter lub znaków, pętla powtarzała się i żeby 0 było prawidłową wartością? Parę lekcji temu też ustawiałem 0 jako wartość do pętli. Chciałbym się dowiedzieć, co innego można wpisać w warunek.
P-171444
YooSy
» 2018-06-08 23:17:14
C/C++
while( !( std::cin >> podaj ) ) {
    // tutaj kasowanie błędu i czyszczenie bufora
}
P-171445
pekfos
» 2018-06-09 00:27:07
» Kurs C++ » Poziom 1Obsługa strumienia wejściowego lekcja, "Sprawdzanie poprawności wprowadzonych danych".
P-171446
« 1 »
  Strona 1 z 1