capajera18 Temat założony przez niniejszego użytkownika |
pomoc z zabezpieczeniem przed wpisaniem literki » 2011-04-28 18:47:55 Cześć wszystkim
Mam problem taki że nie wiem gdzie umieścić ten że kod podany KILKA DNI TEMU przez pana Elano92
if( spr == false ) do { cout << "Prosilem o podanie liczby : "; cin.clear(); cin.sync(); cin >> liczba; spr = cin.good(); } while( !spr );
cout << "podales liczbe" << liczba;
mianowicie nie wiem gdzie go dokładnie umieścić(czy może nie rozumiem) w moim programie
#include <iostream> #include <conio.h>
using namespace std;
int main() { int liczba; do { cout << "Podaj liczbe "; cin >> liczba; bool sprawdz = cin.good(); cout << "\nPodales liczbe " << liczba << endl; if( sprawdz == false ) do { cout << "\nLiczbe , nie literke " << endl; cin >> liczba; cin.sync(); cin.clear(); sprawdz = cin.good(); } while( !sprawdz ); } while( 1 ); getch(); return 0; }
Mniej wiecej rozumiem ten kodzik przedstawioy przez Pana Elano92
(Oznacza on: 1 Zadeklarował zmienną bool nazywajac ją spr i dał jej wartość cin.good();
2 dalej założył warunek if() ze jeżeli spr jest równe false to wykonaj kod poniżej czyli petle do...while
W petli prosi o podanie liczby jak wiadomo, ustawia zawartość czyszczenia strumienia wejściowego czyli czyści flagi błedu oraz bufor strumienia dalej przypisuje ponownie dla nazwy spr wartosc cin.good();
i konczy petle while negacją spr czyli true(chyba, moge sie mylić :))
I teraz mam problem bo nie rozumiem dokładnie gdzie zamieścić kod podany PRZEZ Pana Elano92 któremu estem wdzieczny za poświecony mi czas na odp.
Czy mogłby ktos mi powiezdziec dlaczego moj zapis jest błędny ?? Bo wariuje ten program i przy okazji ja też .
napisałem już jeden kalkulator i zabezpieczyłem go w taki sposób tylko że chyba przypadkiem jest zabezpieczony ale nie rozumiem dokładnie gdzie go zamieścić prosze o pomoc. |
|
dmx81 |
» 2011-04-28 18:55:05 i konczy petle while negacją spr czyli true(chyba, moge sie mylić :))
|
nie konczy petli while. do{...}while(!warunek) //
oznacza, rob, to co miedzy nawiasami, dopoki prawda jest to, co jest w nawiasie przy while a nawias przy while mowi - prawda jest to, ze warunek == false (negacja "istnienia" warunek). Dopoki warunek == false, tak dlugo bedzie powtarzana petla do{}while jesli znasz wskazniki, to char * wskaznik = NULL; if( !wskaznik ) return true;
wskaznik na zmienna typu char na wartosc NULL, a wiec nawias przy if bedzie prawda |
|
capajera18 Temat założony przez niniejszego użytkownika |
» 2011-04-28 19:00:59 aha czyli gdzie mam dokładnie umieścić ten pierwszy kod w moim programie ??
nie nie znam jeszcze wskazników ale chetnie poznam jak dobrze opanuje lekcje z petlą WHILE
|
|
SeaMonster131 |
» 2011-04-28 19:43:21 jesli znasz wskazniki, to ... |
No nie przesadzaj, on nie zna jeszcze podstaw a Ty mu ze wskaźnikami wyjeżdżasz? To jest oczywiste że ich nie zna ekhem... :p aha czyli gdzie mam dokładnie umieścić ten pierwszy kod w moim programie ?? |
Pokombinuj troche :) Wiele razy kombinowanie spotka Cie jeszcze w przyszłości :) |
|
capajera18 Temat założony przez niniejszego użytkownika |
» 2011-04-28 19:46:46 kurcze kombinowalem w swoim kalkulatorze :) i jakoś wyszło , kalkulator ten mam na kompie u siebie w domu a u brata właśnie jestem daleko od domu :)
Więc zalezy mi naprawde by zrozumieć gdzie umieścić ten kod i dlaczego w tym a nie iinym miejscu :) |
|
capajera18 Temat założony przez niniejszego użytkownika |
» 2011-04-28 19:55:22 żeeeeeeeeee cooo ???
Przestawienie w inne miejsce flag pomogło o kurcze ale świry :)
#include <iostream> #include <conio.h>
using namespace std;
int main() { int liczba; do { cout << "Podaj liczbe "; cin >> liczba; bool sprawdz = cin.good(); if( sprawdz == false ) do { cout << "\nLiczbe, nie literke " << endl; cin >> liczba; sprawdz = cin.good(); cin.clear(); cin.sync(); } while( !sprawdz ); cout << "Liczba 0 konczy program " << endl; cout << "\nPodales liczbe " << liczba << endl; } while( liczba != 0 ); getch(); return 0; }
ALE SWIRY :) UDAŁO SIĘ :)
Ale dlaczego akurat to ???
A nie jak poprzednio przy opisie problem kiedy podalem kod mojego programu ?
Czy może ktoś mi to wytłumaczyć ?
Prosze Prosze Prosze |
|
capajera18 Temat założony przez niniejszego użytkownika |
» 2011-04-29 09:39:14 dobra już wiem dlaczego :)
Poprostu pomyliłem zapis
z takim
Ale dlaczego kolejność w tym jest taka ważna ?
Ten poniższy zapis powodował że mój program wariował przy wpisaniu literki. |
|
DejaVu |
» 2011-04-29 15:49:30 No bo nie chciał się wykonać sync w momencie gdy była ustawiona flaga błędu. |
|
« 1 » 2 |