Jak zabronić wpisywania liter w programie
Ostatnio zmodyfikowano 2014-02-02 14:35
damianlxlx5 Temat założony przez niniejszego użytkownika |
» 2014-01-29 16:45:17 Dobrze a mógłby mi ktoś dokładniej wytłumaczyć o co chodzi w tym fragmencie kodu bo ciężko jest mi go zrozumieć mimo że czytałem już o tym w kursie na tej stronie i nie tylko tutaj to nadal ciężko mi go przyswoić.Oto fragment tego kodu który jest zresztą wykorzystany w tym programie:
{ M: cout << "Wprowadz liczbe calkowita" << endl; cin >> liczba; /* o poniższą część kodu mi chodzi a dokładniej oto czemu np. jest cin.clear jako pierwsze oraz czemu pożniej jest cin.ignore i czemu akurat jest w nawiasie podana liczba 50 ?*/ while( cin.fail() ) { cin.clear(); cin.ignore( 50, '\n' ); cout << "Liczba musi byc liczba calkowita: "; cin >> liczba; } } cout << "Wprowadz druga liczbe calkowita" << endl; cin >> cyfra; while( cin.fail() ) { cin.clear(); cin.ignore( 50, '\n' ); cout << "Liczba musi byc liczba calkowita: "; cin >> liczba; } suma = liczba * cyfra; // Oraz o tę część kodu mi chodzi którą ciężko mi zrozumieć wogóle. good = cin.good(); bad = cin.bad(); cin.clear(); cin.sync();
W miejscach które ująłem komentarzem oznaczają fragment kodu którego to właśnie kompletnie nie rozumiem i bardzo proszę o jakieś dokładne wytłumaczenie mi tego najlepiej krok po kroku tak żebym szybciej to zrozumiał czemu tak jest a nie inaczej . |
|
damianlxlx5 Temat założony przez niniejszego użytkownika |
» 2014-01-29 21:51:48 Jeszcze raz proszę o pomoc. Odświeżam |
|
damianlxlx5 Temat założony przez niniejszego użytkownika |
» 2014-01-30 12:30:04 Czemu także ja wpiszę literę zamiast liczby i dopiero pożniej wpisze liczbę a pożniej jak ponownie powie mi żebym wprowadził drugą liczbę całkowita wprowadzę literę a dopiero pożniej liczbę tak jak to ma być to wynik zwróci mi 0 ? |
|
alixir |
» 2014-01-30 13:03:07 W sumie to chyba rozumiem dlaczego nic nie rozumiesz. Ty posługujesz się jakimś innym językiem. Patrzę , patrzę i nie mogę nic zrozumieć z tego co piszesz. Piszę to oczywiście żartobliwie a nie uszczypliwie.
|
|
damianlxlx5 Temat założony przez niniejszego użytkownika |
» 2014-01-30 13:19:21 A dokładniej to czego nie możesz zrozumieć.Chodzi mi oto że jak program poprosi mnie o wprowadzenie pierwszej liczby całkowitej i ja celowo zamiast liczby wprowadzę jakąś literę i dopiero pożniej gdy mi się wyświetli napis "Liczba musi być liczbą całkowitą" wprowadzę poprawnie liczbę i pożniej gdy program poprosi mnie abym wprowadził drugą liczbę całkowitą a ja znowu zamiast liczby wprowadzę literę i wyświetli mi się komunikat "Liczba musi być liczbą całkowitą" i dopiero teraz wprowadzę liczbę to program wyświetli jako wynik mnożenia tych dwóch liczb liczbę 0 nie wiem dlaczego. Czy już rozumiesz ? |
|
alixir |
» 2014-01-30 13:30:16 Od razu lepiej. Ale ogólnie nie widzę finalnego kodu na którym testujesz. Ten z poprzedniej strony po drobnych przeróbkach działa poprawnie i nie widzę efektu o którym mówisz. |
|
damianlxlx5 Temat założony przez niniejszego użytkownika |
» 2014-01-30 13:34:47 Cieszę się że już rozumiesz.A oto kod który obecnie testuję i który nadal nie działa po wielu próbach mojej przeróbki:
#include <iostream> #include <windows.h> using namespace std; main ()
{ bool good, bad; float liczba,cyfra; float suma ;
{ M: cout << "Wprowadz liczbe calkowita" << endl; cin >> liczba ; while( cin.fail() ) { cin.clear(); cin.ignore( 50, '\n' ); cout << "Liczba musi byc liczba calkowita:\nWprowadz ponownie liczbe:"<<endl; cin.clear (); cin.sync(); cin >> liczba;
}
cout <<"Wprowadz druga liczbe calkowita" <<endl; cin >> cyfra ; while( cin.fail() ) { cin.clear(); cin.ignore( 50, '\n' ); cout << "Liczba musi byc liczba calkowita:\nWprowadz ponownie liczbe:"<<endl; cin.clear (); cin.sync(); cin >> liczba; }
suma =liczba * cyfra ; good = cin.good(); bad = cin.bad(); cin.clear(); cin.sync(); }
if (suma < 100)
{ cout << "Suma dwoch liczb ktore podales nie przekracza 100" <<endl; cout << "Wynik mnozenia tych dwoch liczb wynosi : " <<suma<< endl; cout << "Znakomicie" <<endl; Sleep(2000) ; goto M ; return 1; }
else {
cout << "Suma liczb przekracza 100" <<endl; cout << "Wynik nie zostanie zwrocony" <<endl; cout << "Sprobuj ponownie" <<endl; Sleep(2000) ; goto M; |
|
alixir |
» 2014-01-30 13:36:57 W dwóch pętlach wczytujesz pod tą samą zmienną: cin >> liczba; |
|
1 2 « 3 » 4 5 6 |