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

Rozdział 17 - pierwsze zadanie domowe

Ostatnio zmodyfikowano 2016-07-21 21:09
Autor Wiadomość
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.

C/C++
#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;
}
P-149843
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ą.
P-149845
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.
P-149860
carlosmay
» 2016-07-12 16:15:36
C/C++
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.
P-149861
Norbix
Temat założony przez niniejszego użytkownika
» 2016-07-13 14:35:52
Jeżeli dopisze to tak:
C/C++
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 :/
P-149892
karambaHZP
» 2016-07-13 14:43:46
C/C++
{
    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.
P-149894
carlosmay
» 2016-07-13 14:45:27
C/C++
int wczytajLiczbe()
{
    int liczba;
    cin >> liczba;
    cin.clear();
    return liczba;
} while( !( cin >> liczba ) )
Co to jest?
P-149895
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.
P-149900
« 1 » 2
  Strona 1 z 2 Następna strona