Rozdział 17 - Funkcje pierwsze starcie.
Ostatnio zmodyfikowano 2013-01-27 15:49
| Maniek Temat założony przez niniejszego użytkownika | » 2013-01-27 10:05:55 Już to zrobiłem tylko teraz mam taki problem, że po wyświetleniu liczby, zostaje wyświetlona inna. Oto kod : #include <string>#include <iostream>
 #include <conio.h>
 
 int wczytajLiczbe()
 {
 std::string liczba;
 std::cin >> liczba;
 for( unsigned i = 0; i <= liczba.length() - 1; ++i )
 {
 if( liczba[ i ] > 57 or liczba[ i ] < 48 )
 {
 std::cout << "Mozesz wpisywac tylko cyfry :)" << std::endl;
 std::cin >> liczba;
 }
 }
 std::cout << "Brawo" << std::endl;
 getch();
 int liczba2;
 liczba = liczba2;
 return liczba2;
 }
 
 int main()
 {
 std::cout << "Podaj liczbe : ";
 int liczba = wczytajLiczbe();
 std::cout << "Podales liczbe : " << liczba << std::endl;
 
 return 0;
 }
 
Tutaj mam jeszcze zrobiony program z użyciem std::cin.good() ale też źle pokazuje liczbę. #include <iostream>#include <conio.h>
 
 int wczytajLiczbe()
 {
 int liczba;
 std::cin >> liczba;
 int udalo = std::cin.good();
 std::cout << udalo << std::endl;
 std::cin.clear();
 std::cin.sync();
 while( udalo == 0 )
 {
 std::cin >> liczba;
 }
 
 return liczba;
 }
 
 int main()
 {
 std::cout << "Podaj liczbe : ";
 int liczba2 = wczytajLiczbe();
 std::cout << "Podales liczbe : " << liczba2 << std::endl;
 
 getch();
 return 0;
 }
 
 | 
|  | 
| Maniek Temat założony przez niniejszego użytkownika | » 2013-01-27 14:55:02 @odświeżam Ps. Już zrobiłem :). Oto poprawiony kod : #include <iostream>#include <conio.h>
 
 int wczytajLiczbe()
 {
 int udalo;
 int liczba;
 do
 {
 std::cin >> liczba;
 udalo = std::cin.good();
 std::cout << udalo << std::endl;
 std::cin.clear();
 std::cin.sync();
 } while( udalo == 0 );
 
 return liczba;
 }
 
 int main()
 {
 std::cout << "Podaj liczbe : ";
 int liczba2 = wczytajLiczbe();
 std::cout << "Podales liczbe : " << liczba2 << std::endl;
 
 getch();
 return 0;
 }
 
 | 
|  | 
| usmiech | Rozdzial 9 » 2013-01-27 15:16:33 Staram sie zrozumiec kurs... Cos nie tak z przykladem  Po podaniu przez uzytkownika zamiast liczby calkowitej / np 12/ liczby rzeczywistej / np 12.3/ podany kod przyjmuje ze spokojem ta liczbe ... Traktuje ja jako dwie liczby... 12 i 0.3..... chyba cus jest nie tak :) #include <iostream>int main()
 {
 int a;
 float b;
 std::cout << "Podaj liczbe calkowita: ";
 std::cin >> a;
 std::cout << "Czy udalo sie wczytac? " << std::cin.good() << std::endl;
 std::cout << "Czy cos nawalilo? " << std::cin.fail() << std::endl;
 
 std::cout << "Podaj liczbe rzeczywista: ";
 std::cin >> b;
 std::cout << "Czy udalo sie wczytac? " << std::cin.good() << std::endl;
 std::cout << "Czy cos nawalilo? " << std::cin.fail() << std::endl;
 
 std::cout << "Liczba a = " << a << std::endl;
 std::cout << "Liczba b = " << b << std::endl;
 return 0;
 }
 | 
|  | 
| Maniek Temat założony przez niniejszego użytkownika | » 2013-01-27 15:49:54 Po pierwsze zrób oddzielny temat. A tak poza tym to program u mnie dobrze działa. Oto dowód. Podaj liczbe calkowita: 12Czy udalo sie wczytac? 1
 Czy cos nawalilo? 0
 Podaj liczbe rzeczywista: 12.3
 Czy udalo sie wczytac? 1
 Czy cos nawalilo? 0
 Liczba a = 12
 Liczba b = 12.3
 
 Process returned 0 (0x0)   execution time : 10.797 s
 Press any key to continue.
 
 | 
|  | 
| 1 « 2 » |