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

[lekcja 15] zad. 1

Ostatnio zmodyfikowano 2012-02-03 15:42
Autor Wiadomość
Ant-Z
Temat założony przez niniejszego użytkownika
[lekcja 15] zad. 1
» 2012-02-01 23:14:01
Witam

Mam pytanko. Jak powinienem zmienić "if(liczba > 0)", żeby można było wpisać tylko liczbę całkowitą bo jak na razie mój kod wraca do początku tylko w wypadku wpisania liczby ujemnej a jeśli wpisuję ułamek dziesiętny to odczytuje mi tylko liczbę przed przecinkiem, jeśli są to jakieś znaki to też są odczytane jako liczba.

kod:

C/C++
#include <iostream>

int main()
{
    int liczba;
    do
    {
        std::cout << "Podaj liczbe calkowita: ";
        std::cin >> liczba;
       
        if( liczba > 0 )
             std::cout << "liczba calkowita ktora wpisales to : " << liczba << std::endl;
       
        else
             std::cout << liczba << " to nie liczba calkowita !" << std::endl;
       
        std::cout << "koniec" << std::endl;
    } while( liczba < 0 );
   
    return 0;
   
}
P-49966
jsc
» 2012-02-01 23:28:34
Bo int to format liczb całkowitych, tu trzeba zastosować format float lub double.

Aby sprawdzić czy liczba całkowita to trzeba od niej odjąć część całkowitą i sprawdzić czy jest 0.
P-49967
Hoop300
» 2012-02-02 13:36:46
ale czy nie powinno byc jakiefos zabezpieczenia przed wczytywaniem liter ?? albo czegos takiego ??
P-49974
jsc
» 2012-02-02 13:48:39
Sprawdź cin.good ().
P-49975
Hoop300
» 2012-02-02 14:52:31
własnie próbowałem ale nie mam pojęcia jak to zrobic
P-49978
jsc
» 2012-02-02 15:09:21
Przykładowy kod
C/C++
int zmienna;

do
{
    cin >> zmienna;
} while( !cin.good() );

P-49979
malan
» 2012-02-02 15:19:56
@jsc: jeżeli już dajesz gotowce to chociaż sprawdzaj, czy działają. Twój pseudo-kod jest niepoprawny.
P-49980
jsc
» 2012-02-02 15:30:40
Dobra, sprawdziłem i nie działa. Opierałem się na teorii, że cin.good () sprawdza prawidłowość wczytania danej do zmiennej. I jeżeli tak jest (widać nie) to moje rozumowanie było takie, że próbuj wczytywać dopóki cin.good () zwraca błąd.

Za zamieszanie przepraszam.
P-49981
« 1 » 2
  Strona 1 z 2 Następna strona