Zabezpieczenie przed wprowadzeniem niepoprawnych danych
Ostatnio zmodyfikowano 2012-11-28 01:20
kynol Temat założony przez niniejszego użytkownika |
Zabezpieczenie przed wprowadzeniem niepoprawnych danych » 2012-11-27 15:45:59 Witam. Mam problem mianowicie zabezpieczenie liczby przed wprowadzeniem zlych wartosci zrobilem lecz nie calkiem.. Mianowicie jesli podam jakikolwiek znak, litere to program i tak przechodzi dalej i wypisuje bzdury. Ma ktos pomysl jak temu zaradzic ? Podaje kod #include <cstdlib> #include <iostream> using namespace std;
int main() { int wybor, a; bool zabezpieczenie_liczby, zabezpieczenie; cout << "\tWybierz dzialanie: " << endl; cout << "1 - Post-inkrementacja\n2 - Pre-inkrementacja\n3 - Post-dekrementacja\n4 - Pre-dekrementacja" << endl; do { cout << "Musisz podac tylko liczbe z zakresu od 1 - 4!" << endl; cout << "Wybierasz dzialanie nr: "; cin.clear(); cin.sync(); cin >> wybor; zabezpieczenie = cin.good(); if( zabezpieczenie == true ); else cout << "Program nie akceptuje znakow badz liter!" << endl; } while(( wybor <= 0 ) ||( wybor >= 5 ) ); switch( wybor ) { case 1: { cout << "Wybrales Post-inkrementacje" << endl; do { cout << "Podaj liczbe= "; cin.clear(); cin.sync(); cin >> a; zabezpieczenie_liczby = cin.good(); if( zabezpieczenie_liczby == true ); else cout << "Program nie akceptuje znakow badz liter!" << endl; } while( a < 0 ); cout << "Wynik post-inkrementacji to: " << a++ << endl; cout << "Liczba po przejsciu post-inkrementacji: " << a << endl; } break; case 2: { cout << "Wybrales Pre-inkrementacje" << endl; do { cout << "Podaj liczbe= "; cin.clear(); cin.sync(); cin >> a; zabezpieczenie_liczby = cin.good(); if( zabezpieczenie_liczby == true ); else cout << "Program nie akceptuje znakow badz liter!" << endl; } while( a < 0 ); cout << "Wynik pre-inkrementacji to: " << ++a << endl; } break; case 3: { cout << "Wybrales Post-dekrementacje" << endl; do { cout << "Podaj liczbe= "; cin.clear(); cin.sync(); cin >> a; zabezpieczenie_liczby = cin.good(); if( zabezpieczenie_liczby == true ); else cout << "Program nie akceptuje znakow badz liter!" << endl; } while( a < 0 ); cout << "Wynik post-dekrementacji to: " << a-- << endl; cout << "Liczba po przejsciu post-dekrementacji: " << a << endl; } break; case 4: { cout << "Wybrales Pro-dekrementacje" << endl; do { cout << "Podaj liczbe= "; cin.clear(); cin.sync(); cin >> a; zabezpieczenie_liczby = cin.good(); if( zabezpieczenie_liczby == true ); else cout << "Program nie akceptuje znakow badz liter!" << endl; } while( a < 0 ); cout << "Wynik pro-dekrementacji to: " << --a << endl; } break; } system( "PAUSE" ); return 0; }
|
|
f0g |
» 2012-11-27 16:19:12 Nie jestem w 100% pewien, ale to powinno być po std::cin . |
|
SeaMonster131 |
» 2012-11-27 16:26:37 Mianowicie jesli podam jakikolwiek znak, litere to program i tak przechodzi dalej i wypisuje bzdury |
A gdzie masz warunek, żeby powtarzał dany fragment kodu, kiedy wczytywanie zmiennej nie powiedzie się? Jak napiszesz, tak będzie program działać :) |
|
kynol Temat założony przez niniejszego użytkownika |
» 2012-11-28 01:20:44 Problem rozwiazany daje kod #include <cstdlib> #include <iostream> using namespace std;
int main() { int wybor, a; bool zabezpieczenie_liczby, zabezpieczenie; cout << "Program demonstrujacy:" << endl; cout << "Post-inkrementacje, Pre-dekrementacje, Post-dekrementacje, Pre-inkrementacje" << endl; cout << "\n\n\n"; cout << "\tWybierz dzialanie: " << endl; cout << "1. Post-inkrementacja\n2. Pre-inkrementacja\n3. Post-dekrementacja\n4. Pre-dekrementacja" << endl; do { cout << "Musisz podac tylko liczbe z zakresu od 1 - 4!" << endl; cout << "Wybierasz dzialanie nr: "; cin.clear(); cin.sync(); cin >> wybor; zabezpieczenie = cin.good(); if( zabezpieczenie == true ); else cout << "Program nie akceptuje znakow badz liter!" << endl; } while(( wybor <= 0 ) ||( wybor >= 5 ) ); switch( wybor ) { case 1: { cout << "Wybrales Post-inkrementacje" << endl; cout << "Podaj liczbe= "; cin >> a; zabezpieczenie_liczby = cin.good(); if( !zabezpieczenie_liczby ) { do { cout << "Program nie akceptuje znakow badz liter!" << endl; cout << "Podaj jeszcze raz liczbe= "; cin.clear(); cin.sync(); cin >> a; zabezpieczenie_liczby = cin.good(); } while( !zabezpieczenie_liczby ); } cout << "\tPodana liczba to: " << a++ << endl; cout << "\tLiczba po przejsciu post-inkrementacji: " << a << endl; } break; case 2: { cout << "Wybrales Pre-inkrementacje" << endl; cout << "Podaj liczbe= "; cin >> a; zabezpieczenie_liczby = cin.good(); if( !zabezpieczenie_liczby ) { do { cout << "Program nie akceptuje znakow badz liter!" << endl; cout << "Podaj jeszcze raz liczbe= "; cin.clear(); cin.sync(); cin >> a; zabezpieczenie_liczby = cin.good(); } while( !zabezpieczenie_liczby ); } cout << "\tLiczba po przejsciu pre-inkrementacji to: " << ++a << endl; } break; case 3: { cout << "Wybrales Post-dekrementacje" << endl; cout << "Podaj liczbe= "; cin >> a; zabezpieczenie_liczby = cin.good(); if( !zabezpieczenie_liczby ) { do { cout << "Program nie akceptuje znakow badz liter!" << endl; cout << "Podaj jeszcze raz liczbe= "; cin.clear(); cin.sync(); cin >> a; zabezpieczenie_liczby = cin.good(); } while( !zabezpieczenie_liczby ); } cout << "\tPodana liczba to: " << a-- << endl; cout << "\tLiczba po przejsciu post-dekrementacji: " << a << endl; } break; case 4: { cout << "Wybrales Pro-dekrementacje" << endl; cout << "Podaj liczbe= "; cin >> a; zabezpieczenie_liczby = cin.good(); if( !zabezpieczenie_liczby ) { do { cout << "Program nie akceptuje znakow badz liter!" << endl; cout << "Podaj jeszcze raz liczbe= "; cin.clear(); cin.sync(); cin >> a; zabezpieczenie_liczby = cin.good(); } while( !zabezpieczenie_liczby ); } cout << "\tLiczba po przejsciu pro-dekrementacji to: " << --a << endl; } break; } system( "PAUSE" ); return 0; }
|
|
« 1 » |