[lekcja 15] zad. 1
Ostatnio zmodyfikowano 2012-02-03 15:42
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:
#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; } |
|
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. |
|
Hoop300 |
» 2012-02-02 13:36:46 ale czy nie powinno byc jakiefos zabezpieczenia przed wczytywaniem liter ?? albo czegos takiego ?? |
|
jsc |
» 2012-02-02 13:48:39 Sprawdź cin.good (). |
|
Hoop300 |
» 2012-02-02 14:52:31 własnie próbowałem ale nie mam pojęcia jak to zrobic |
|
jsc |
» 2012-02-02 15:09:21 Przykładowy kod int zmienna;
do { cin >> zmienna; } while( !cin.good() );
|
|
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. |
|
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. |
|
« 1 » 2 |