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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Skip
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
#1

проблема с проверкой вводимых данных - C++

25.09.2011, 16:03. Просмотров 330. Ответов 4
Метки нет (Все метки)

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
#include <iostream>
#include <conio.h>
using namespace std;
 
double c,f;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    setlocale(LC_ALL, "rus");
 
    cout << "Введите температуру в фаренгейтах: \n";
 
    do
    {
        if (cin >> f)
        {
            c=(f-32)* 5/9;
            cout << "температура в цельсиях : \n" << c;
        }
        else
        {
            cout << "Вы ввели не число\n";
        }
    }
    while (cin.fail());
 
    getch();
    return 0;
}
Если ввести не число то он начинает выводить "Вы ввели не число", но он не запрашивает новое значение f
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2011, 16:03     проблема с проверкой вводимых данных
Посмотрите здесь:

Проблемы с проверкой введённых данных - C++
Никак не могу раобраться с проверкой на ввод числа, символа Которую нужно обязательно добавить Помогите пожалуйста :cry: :sorry: ...

Мини База Данных фамилий с проверкой - C++
Здравствуйте! Помогите пожалуйста написать простую программку на С++ очень буду благодарен! Задание такое: Существует текстовый...

Проверка вводимых данных - C++
#include &lt;iostream&gt; using namespace std; int main() { double a, b, c; cout &lt;&lt; &quot;Enter the first side of the...

Проверка вводимых данных. - C++
предполагается, что функция будет проверять, что ввел пользователь, и, если он ввел не натуральное число заранее заданного диапазона,...

Проверка вводимых данных - C++
Вот часть программы int main(void) { int vop; setlocale(LC_ALL, &quot;Russian&quot;); int mas1, mas2, mas3, outmas; int ke1, ke2,...

Проверка вводимых данных - C++
Доброго времени суток, форумчане. Я столкнулся с такой проблемой: при введении еденицы измерения, если та инициализирована ранее то все...

Посимвольная проверка вводимых данных - C++
Доброго времени суток. Такая проблема: нужно запретить пользователю вводить не цифры и дробные числа через запятую. т.е. 4213 -...

Проверка типа вводимых данных. - C++
Собственно,как осуществить ? К примеру,здесь: int main() { int x; int y; cin &gt;&gt; x;

Проверка корректности вводимых данных - C++
Здравствуйте, подскажите,пожалуйста, как прописать условия проверки. Мне нужно: если вводится радиус e больше одной из сторон, выводилось...

Определение типа вводимых данных - C++
Здравствуйте. Мне, как новичку, нужна помощь. Я делаю программу для работ с функциями. В начале программа просит нажать на цифру 1, 2 или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
25.09.2011, 16:25     проблема с проверкой вводимых данных #2
Там две проблемы. Во-первых не сбрасывается флаг ошибки потока, во-вторых нечисловые символы из потока не извлекаются, обе причины приводят к бесконечным перезапросам.
Я бы, пожалуй, преобразовал бы цикл ввода как-нибудь так:
C++
1
2
3
4
5
6
7
8
9
    while (!(cin >> f))
    {
        cin.clear();
        while (cin.get() != '\n')
            ;
        cout << "Вы ввели не число\n";
    }
    c=(f-32)* 5/9;
    cout << "температура в цельсиях : \n" << c;
Тут, правда, тоже остаётся небольшая проблема. Например если перенаправить ввод из файла с некорректными данными. Надо ещё проверять успешность get() и при ошибке выходить из программы.
Skip
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
25.09.2011, 16:53  [ТС]     проблема с проверкой вводимых данных #3
спасибо большое, ввод будет осуществятся только с клавы
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
25.09.2011, 16:59     проблема с проверкой вводимых данных #4
Как вариант можно не строку пропускать, а слово.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    while (!(cin >> f))
    {
        cin.clear();
        string dummy;
        cin >> dummy;
        if (!cin)
        {
            cerr << "Критическая ошибка ввода" << endl;
            return 1;
        }
        cout << "Вы ввели не число\n";
    }
    c = (f-32) * 5/9;
    cout << "температура в цельсиях : \n" << c;
Nameless One
25.09.2011, 17:00     проблема с проверкой вводимых данных
  #5

Не по теме:

Цитата Сообщение от Skip Посмотреть сообщение
спасибо большое, ввод будет осуществятся только с клавы
это может гарантировать только пользователь, а не разработчик программы

Yandex
Объявления
25.09.2011, 17:00     проблема с проверкой вводимых данных
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru