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

Problem z if...else

Ostatnio zmodyfikowano 2015-01-09 19:44
Autor Wiadomość
Maczuita
Temat założony przez niniejszego użytkownika
Problem z if...else
» 2015-01-09 17:38:34
"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."

Oto zadanie, narazie mam takie coś : 

C/C++
#include <iostream>
int main()
{
    int liczba;
   
    std::cout << "Podaj liczbe ";
    std::cin >> liczba;
    {
        if( liczba = std::cin.fail() )
             std::cout << "Nieprawidlowa liczba. Wprowadz wlasciwa " << std::endl;
       
        std::cin >> liczba;
       
        else
             std::cout << "Twoja liczba to " << liczba << std::endl;
       
    }
    std::cout << "Koniec" << std::endl;
    return 0;
}
Podczas próby kompilacji wyskakuje błąd:
error: 'else' without a previous 'if'
 mimo, że mam if oraz {i}. I oto moje pytania: Czy dobrze postawiłem {i} ? Jeśli nie, to jak mam je stawiać, żeby działało prawidłowo?
P-124497
dawido232307
» 2015-01-09 18:08:51
C/C++
#include <iostream>
int main()
{
    int liczba;
   
    std::cout << "Podaj liczbe ";
    std::cin >> liczba;
   
    if( liczba == std::cin.fail() )
    {
        std::cout << "Nieprawidlowa liczba. Wprowadz wlasciwa " << std::endl;
        std::cin >> liczba;
    }
    else
    {
        std::cout << "Twoja liczba to " << liczba << std::endl;
    }
   
    std::cout << "Koniec" << std::endl;
    return 0;
}

Powinno działać
PS. Zapomniałeś dodać drugi znak "=" w warunku.
P-124499
Maczuita
Temat założony przez niniejszego użytkownika
» 2015-01-09 18:38:51
if( liczba == std::cin.fail() )
 Tu musi być 1 znak '=' efekt tego będzie taki, że gdy ktoś zamiast wpisania liczb, napisze coś innego to wyskakuje :
Podaj liczbe: wwwww. Nieprawidlowa liczba. Wprowadz wlasciwa
 Natomiast jakby były 2 znaki '=' wyskoczyło by:
Podaj liczbe: wwwww. Twoja liczba to 0
.

P.S Dzięki za kod, a jak z tym wstawianiem { }? Jest jakiś uniwersalny sposób?
P.S2 Jak zrobić, żeby po
std::cout << "Nieprawidlowa liczba. Wprowadz wlasciwa " << std::endl;
 działał
std::cin >> liczba;
 ?          
P-124501
pekfos
» 2015-01-09 19:44:52
if( liczba == std::cin.fail() )
 Tu musi być 1 znak '='
A jaki sens ma to przypisanie? Potrzebujesz tylko sprawdzić wartość fail().

P.S Dzięki za kod, a jak z tym wstawianiem { }? Jest jakiś uniwersalny sposób?
Tak.

P.S2 Jak zrobić, żeby po
std::cout << "Nieprawidlowa liczba. Wprowadz wlasciwa " << std::endl;
 działał
std::cin >> liczba;
 ?
Wyczyścić flagi błędu w cin. Wszystko masz w kursie.
P-124510
« 1 »
  Strona 1 z 1