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

[C++] Pętla do ... while - zadanie

Ostatnio zmodyfikowano 2014-06-26 16:02
Autor Wiadomość
Zrebol_33
Temat założony przez niniejszego użytkownika
[C++] Pętla do ... while - zadanie
» 2014-06-24 23:49:22
Witam, właśnie zabrałem się za temat poświęcony pętlą i wyłożyłem się na zadaniu domowym:

Napisz program, który wczyta liczbę, a następnie wypisze ją na ekranie. Zabezpiecz przed wczytaniem nieprawidłowej liczby. Wykorzystaj do tego celu wiedzę z jednego z poprzednich rozdziałów. Sposób działania programu:
1. Podaj liczbę
2. Jeżeli błąd, wróć do kroku 1.
3. Wypisz liczbę, która została podana.

Czy udzieliłem poprawnej odpowiedzi na to zadanie? Kod działa...ale czy tak to ma wyglądać? 
 ...( dodam tylko, że dopiero zaczynam przygodę z programowaniem)

Kod:
C/C++
#include <iostream>
int main()
{
    float liczba;
    bool bliczba;
    do
    {
       
       
        std::cout << "Podaj liczbe: " << std::endl;
        std::cin >> liczba;
        bliczba = std::cin.good();
        std::cin.clear();
        std::cin.sync();
       
       
       
    } while( liczba <= 0 );
   
    std::cout << "Podales liczbe " << liczba << std::endl;
   
    std::cout << "Koniec" << std::endl;
    return 0;
}


P-112682
MrPoxipol
» 2014-06-24 23:51:59
P-112684
kamilpl1994
» 2014-06-25 09:55:10
Piszesz że "Zabezpiecz przed wczytaniem nieprawidłowej liczby" wydaje mi się że możesz wczytywać również liczby ujemne, bo w sumie to też jest liczba prawda? Sądzę że chodziło o zabezpieczenie przed wpisaniem np literki albo jakiegoś innego znaku specjalnego


Pozdrawiam
P-112693
Jacob99
» 2014-06-25 10:20:06
C/C++
bool bliczba;
//...
bliczba = std::cin.good();
A to po co? To nic nie robi.

Co do sprawdzania czy wczytałeś liczbę, czy literę najlepiej użyć
isalpha( char ch )
standard C isalpha
P-112698
Mateus.
» 2014-06-25 10:37:44
Jacob99, w tym zadaniu ma sprawdzić czy udało się wczytać, czy nie, a nie co wczytano.
Zrebol_33, popraw warunek kończący pętle, bo jest głupi (na taki, który kończy pętle, gdy uda się wczytać).
P-112702
pekfos
» 2014-06-25 10:38:04
A to po co? To nic nie robi.
A ma robić, nie zostać wywalone.

Co do sprawdzania czy wczytałeś liczbę, czy literę najlepiej użyć
isalpha( char ch )
W tym przypadku to nie jest żadne rozwiązanie. A tym bardziej najlepsze..
P-112703
Zrebol_33
Temat założony przez niniejszego użytkownika
» 2014-06-25 11:59:45
Dzięki za odpowiedzi :)
Jacob99 - o takim rozwiązaniu nie było mowy w części kursy, a chciałbym rozwiązać to zadania właśnie korzystając z informacji zawartych w nim, ale dzięki :)


*Daje poprawiony kod:
C/C++
#include <iostream>
int main()
{
    float liczba;
    bool bliczba;
    do
    {
       
       
        std::cout << "Podaj liczbe: " << std::endl;
        std::cin >> liczba;
        bliczba = std::cin.good();
        std::cin.clear();
        std::cin.sync();
        std::cout << "Udało sie? : " << bliczba << std::endl;
       
       
       
    } while( liczba == 0 );
   
    std::cout << "Podales liczbe " << liczba << std::endl;
   
    std::cout << "Koniec" << std::endl;
    return 0;
}

Czy są jeszcze jakieś błędy?
P-112706
pekfos
» 2014-06-25 12:08:51
Nie reagujesz na faktyczny błąd, lecz na wpisanie zera, co może być skutkiem błędu, ale nie musi.
P-112707
« 1 » 2 3
  Strona 1 z 3 Następna strona