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

Охота на ошибки, при неправильном вводе - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Считывание чисел до нажатия Enter http://www.cyberforum.ru/cpp-beginners/thread927303.html
Нужна функция, благодаря которой цикл будет выполнятся до нажатия Enter.
C++ Функции. Генерация строк Здравствуйте, форумчане. Помогите реализовать программу. Напишите программу на С++, которая использует три определяемых пользователем функции ( включая main ( ) ) , и результатом ее выполнения является следующий вывод: Three blind mice Three blind mice See how they run See how they run Одна функция , вызываемая два раза, должна генерировать первые две строки , а вторая функция , также... http://www.cyberforum.ru/cpp-beginners/thread927296.html
Нахождение пароля C++
Появился один немного странный вопрос, а конкретно он касается мини-взлома своего же кода, если это вообще можно назвать взломом. Вот простые несколько строчек кода, которые требуют ввод определенного пароля на вход в программу while(pas != "12345") { system("cls"); cin>>pas;
Динамически или статически C++
Что лучше для олимпиад, динамически выделять память, или статически. В исходниках крутых олимпиадников в основном вижу, что под массив выделяют память вот так: const int N = 2222222; char s; Либо сразу массив большой, а потом используют лишь часть памяти, либо константу, которую потом используют для массивов. Только не совсем понимаю, почему они это делают это же усложняет работу с ними,...
C++ Сравнение строк (символьные массивы), игнорируя регистровые различия http://www.cyberforum.ru/cpp-beginners/thread927269.html
Я недавно начал изучать С++ и все не как не пойму что не так с моей программой... Задача: Напишите программу, которая предлагает пользователю ввести две строки, а затем сравнивает их, игнорируя "регистровые" различия, т.е. прописные и строчные буквы ваша программа должна воспринимать как одинаковые. Проблема с самим сравнением, в результате получается что строка 1 всегда больше 2, но если они...
C++ Таблица умножения Написал программу которая делает такое: 1.Юзер вводит число, таблицу умножения которого нужно вывести 2.Выводится таблица умножения этого числа Например: 1 1 * 1 = 1 1 * 2 = 2 ... подробнее

Показать сообщение отдельно
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
23.07.2013, 00:27     Охота на ошибки, при неправильном вводе
В общем проблема такая. Если есть переменная типа int, а туда с клавы вводят какой-нибудь символ, то программе это не нравится и она начинает блевать. Т.е. в потоке cin остается кое-что нехорошее, что нужно убрать. Я пытался перехватить эту ошибку и перехватил, однако после этой ошибки программа завершается и загрязненный поток cin остается бесполезным, а мне это не нужно. Я пытался очистить поток функцией std::cin.clear() , но как-то бесполезно. Как мне исцелить этот поток? Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <windows.h>
#include <stdexcept>
 
int main()
try {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int x;
    while(true)
    {
        std::cout<<"Введите число (int)\n";
        std::cin>>x;
        if(x == 93) break; // Цикл завершается, при вводе 93
        if(!std::cin)
        {
           // throw std::runtime_error("Ошибка, это не число.Поробуйте еще разок\n"); //Ловушка для ошибки
            std::cin.clear();
            std::cout<<"Ошибка, это не число.Поробуйте еще разок\n";
        }
    }
 
    std::cout<<"Если вы читаете это, значит начали выполнятся те инструкции, которые идут после цикла \n";
    return 0;
}
 
catch (std::runtime_error& e)
{
    std::cerr<<e.what()<<std::endl;
}
 
catch(...)
{
    std::cout<<"Другая ошибка : С \n";
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru