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

Lekcja 15

Ostatnio zmodyfikowano 2013-01-05 13:52
Autor Wiadomość
Fusol13
Temat założony przez niniejszego użytkownika
Lekcja 15
» 2012-12-28 13:39:09
Gdy wpisze liczbę różną od zera to wyskakuje mi "Blad" zamiast "Podales liczbe: " i nie wiem czemu.


C/C++
#include <iostream>
int main()
{
    int liczba;
   
    std::cout << "Podaj liczbe rozna od zera: ";
    std::cin >> liczba;
   
    switch( liczba )
    {
    case 0:
        do
        {
            std::cin.clear();
            std::cin.sync();
            std::cout << "Podales zla liczbe. " << std::endl;
            std::cout << "Podaj liczbe rozna od zera. " << std::endl;
            std::cin >> liczba;
           
        } while( !liczba != 0 );
       
        break;
       
    case !0:
       
        std::cout << "Podales liczbe: " << liczba << std::endl;
       
       
        break;
       
    default:
        std::cout << "Blad " << std::endl;
       
    }
   
   
   
   
    return 0;
}
P-72171
jsc
» 2012-12-28 14:07:20
Widać przypadek !0 nie istnieje, bo jest np. zbyt wieloznaczny (cała rozpiętość typu zmiennej oprócz 0).
P-72173
Mike148
» 2012-12-28 14:30:39
U mnie ten kod działa
P-72179
crash
» 2013-01-05 03:38:55
Ja bym zrobił inaczej, pętla sprawdza czy liczba podana jest różna od zera, jeśli nie to pętla jeszcze raz się wykonuje; a później dopiero switch, o ile będzie w ogóle potrzebny.
P-72994
MeGameOne
» 2013-01-05 07:52:42
Najlepszym i najlatwiejszym bylo by zastosowanie funkcji if().

C/C++
#include <iostream>

int main() {
    int liczba;
   
    std::cout << "Podaj liczbe rozna od zera: ";
    std::cin >> liczba;
   
    if(( liczba > 0 ) ||( liczba < 0 ) )
    {
        do
        {
            std::cout << "Podales zla liczbe. " << std::endl;
            std::cout << "Podaj liczbe rozna od zera. " << std::endl;
            std::cin >> liczba;
        } while( !liczba != 0 );
       
    }
    else
    {
       
        std::cout << "Blad " << std::endl;
    }
    if( liczba == 0 )
    {
       
        std::cout << "Podales liczbe: " << liczba << std::endl;
    }
    else
    {
       
        std::cout << "Blad " << std::endl;
       
    }
   
    return 0;
}
P-73002
xevuel
» 2013-01-05 08:28:05
@MeGameOne,
Po pierwsze, if to nie jest funkcja. Po drugie, nie rozumiesz ani kodu który napisał @Fusol13, ani działania operatorów logicznych. Podany przez Ciebie kod jest błędny.

@Fusol13,
Sprawdzaj, czy liczba jest prawidłowa po wczytaniu, np. tak:
C/C++
#include <iostream>

int main()
{
    int liczba;
    do
    {
        std::cout << "Podaj liczbe rozna od zera. " << std::endl;
        std::cin >> liczba;
        if( liczba == 0 )
        {
            std::cout << "Podales zla liczbe. " << std::endl;
            continue;
        }
        std::cout << "Podales liczbe: " << liczba << std::endl;
    } while( liczba == 0 );
   
    return 0;
}
P-73003
MeGameOne
» 2013-01-05 11:48:12
Ja to pisałem jak sie zaraz  obudzilem,  nie bądź na mnie zły.  Pomylilem sie tylko przy (do  i while ).
Nie widzę tam innych błędów.
P-73016
xevuel
» 2013-01-05 12:03:16
@MeGameOne,
Pierwszy lepszy przykład:
if(( liczba > 0 ) ||( liczba < 0 ) )

czy też:
C/C++
if( liczba == 0 )
{
   
    std::cout << "Podales liczbe: " << liczba << std::endl;
}
Skompiluj sobie ten Twój kod i zobacz jak działa...
P-73017
« 1 » 2
  Strona 1 z 2 Następna strona