Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Lekcja 26 - zabezpieczenie

Ostatnio zmodyfikowano 2014-01-09 20:28
Autor Wiadomość
Duninho
Temat założony przez niniejszego użytkownika
Lekcja 26 - zabezpieczenie
» 2014-01-09 19:59:18
C/C++
#include <iostream>
#include <string>

using namespace std;

void wczytajOsobe( string & imie, string & nazwisko, int & wiek, int i )
{
    cout << "Dane osoby " << i + 1 << "." << endl;
    cout << "Podaj imie:";
    getline( cin, imie );
    cin.clear();
    cout << "Podaj nazwisko:";
    getline( cin, nazwisko );
    cin.clear();
    do
    {
        cin.sync();
        cin.clear();
        cout << "Podaj wiek:";
        cin >> wiek;
    } while( cin.fail() == 1 );
   
}

void wypiszOsobe( string imie, string nazwisko, int wiek, int i )
{
    cout << endl << "Dane osoby " << i + 1 << "." << endl;
    cout << "Imie: " << imie << endl;
    cout << "Nazwisko: " << nazwisko << endl;
    cout << "Wiek: " << wiek << endl;
}

int main()
{
    string imie[ 2 ];
    string nazwisko[ 2 ];
    int wiek[ 2 ];
   
    for( int i = 0; i < 2; i++ )
         wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ], i );
   
    for( int i = 0; i < 2; i++ )
         wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ], i );
   
    return 0;
}

Pętla sprawdzająca poprawność wpisania wieku wykonuje się bez końca ignorując cin >> wiek
Normalnie pętla ta działa dobrze w innych przykładach albo ja już trace zmysły.
W każdym razie, prosiłbym o pomoc i wytłumaczenie/skierowanie na dobrą drogę.
Pozdrawiam.
P-101704
leon_w
» 2014-01-09 20:28:58
Najpierw czyść flagi błędu, później czyść bufor strumienia.
P-101709
« 1 »
  Strona 1 z 1