Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Матрицы. Классы. Проверка ввода - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка функции max () | min() http://www.cyberforum.ru/cpp-beginners/thread632299.html
Задача: Дано три числа, записанный в отдельных строках. Упорядочите их в порядке убывания. Программа должна считывать три числа a, b, c, затем программа должна менять их значения так, чтобы стали...
C++ Написать программу, результат работы которой - округление дробного числа до целого по математическим правилам. Здравствуйте, Друзья. Задание: Написать программу, результат работы которой - округление дробного числа до целого по математическим правилам. Вот код #include <iostream> using namespace std;... http://www.cyberforum.ru/cpp-beginners/thread632292.html
rand C++
srand(time(NULL)); int s = rand()%1000 +1; генерирует бред вроде 3,4,7,10,14,19,21,26,29... как сделать чтобы значения были примерно такие : 458,985,100,5,857,40,756
C++ Реализация комбинаторики
Задача имеет следующий вид. Есть набор строка символов неопределенной(заранее) длины. Нужно из данной строки подсчитать и вывести все варианты возможных комбинаций от одного символа и до...
C++ Сложение 2-х целых двоичных чисел, хранящихся в массивах A и B http://www.cyberforum.ru/cpp-beginners/thread632267.html
Задачка из Кормена. Результат записать в массив С. Написал, что-то вроде: int main() { int i,q=0; for(i=n-1;i>=0;i--) { c = a^b^q; q = (q+a+b)>>1; }
C++ задача непонятная Объясните, пожалуйста, что нужно сделать, а то формулу не могу вывести, т.е. что нужно делать и с какой последовательностью. Было бы здорово если объяснение с примером ) подробнее

Показать сообщение отдельно
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
03.08.2012, 22:17  [ТС]
Цитата Сообщение от Intel~lect Посмотреть сообщение
Но так ведь переменная size целого типа, а вы вводите букву Q. Здесь и должна быть ошибка.
Можно сделать проверку на правильный ввод:
C++
1
2
3
4
5
if (!cin)
{
   cin.clear();
   while ( cin.get() != '\n' ) ;
}
Я делаю проверку, но по какой -то причине в 1 случае она работает, а во втором тоже работает, но почему-то не запрашивает ввод у пользователя хотя должна, как-будто я ввел много символов и не очистил поток, а я очистил же или нет?

Вот код этого ужасного момента (случай 2)

C++
1
2
3
4
5
 do{
            fflush(stdin);     //очистили поток
            cout << "Введите размер матриц: ";
            cin >> size;         //иногда при неверно вводе запрашивает заново ввод, а иногда автоматически записывает неизвестное значение и цикл уходит в бесконечнготь
        }while(cin.rdbuf()->in_avail()!=1);
Вот случай 1 в котором всё ок

C++
1
2
3
4
5
6
7
8
9
10
char ch;
 
    cout << "Меню:\n"
        << " 1.Умножение матриц\n"
        << " 2.Сложение матриц\n";
    do{
        fflush(stdin);
        cout << "Выберите действие (0 - выход): ";
        cin >> ch;
    }while(ch < '0' || ch > '2' || cin.rdbuf()->in_avail()!=1);
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru