Защита от ввода буквенных символов с++

294
16 декабря 2017, 07:12

Проблема в том, что после ввода правильного значения (цифры), не предлагается вводить другое значение - size2. Как исправить?

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include "MyClass.h"

using namespace std;
int main()
{   
    MyClass a,b;  
    int size1, size2; 
    cout<<"Enter first size : "; 
    while (!(cin >> size1) || (cin.peek() != '\n')) {
        cin.clear();
        while (cin.get() != '\n');
        cout << "nepravilno";
    }
    cin>>size1;
    cout<<endl<<"Enter second size : ";
    cin>>size2;
    cout<<endl;
    a.set_mass(size1);  
    b.set_mass(size2);
    a.show_mass(); 
    cout<<endl;
    b.show_mass();  
    cout<<endl<<" intersection rezult : "<<endl;
    a.intersection(b); 
    getch();  
    return 0;
}
Answer 1

Смотрите:

while (!(cin >> size1) || (cin.peek() != '\n')) {
    cin.clear();
    while (cin.get() != '\n');
    cout << "nepravilno";
}
cin>>size1;

В первой строке (внутри while) вы уже считали size1. После этого вы влетаете в его считывание второй раз - в

cin>>size1;

и понятно, что до вывода приглашения ввести второе число дело не доходит...

READ ALSO
Совершенная раскраска графа

Совершенная раскраска графа

Здравствуйте, мне необходимо сделать совершенную раскраску графа"Раскраска вершин графа G называется совершенной, если для любых двух вершин...

186
Двусвязный список

Двусвязный список

Подскажите, пожалуйста, как правильно удалить элемент из двусвязного списка и добавить элемент в конец списка? Пример кода, который работает...

215
Выписать цифры числа в обратном порядке с помощью цикла while [требует правки]

Выписать цифры числа в обратном порядке с помощью цикла while [требует правки]

Определить число выписыванием в обратном порядке цифр заданного натуральным числом nРезультат вывести на экран

186
Выписать цифры числа в обратном порядке с помощью цикла while

Выписать цифры числа в обратном порядке с помощью цикла while

У меня есть натуральное число n, как можно вывести его цифры в обратном порядке?

260