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

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

Войти
Регистрация
Восстановить пароль
 
Snickers077
7 / 7 / 2
Регистрация: 12.01.2014
Сообщений: 38
#1

Проверка числовой ли ввод - C++

31.03.2014, 16:55. Просмотров 869. Ответов 4
Метки нет (Все метки)

Здравствуйте! Задача такая. Написать программу, читающую в массив double до 10 значений пожертвований. ПРограмма должна прекращать ввод при получении нечисловой величины. Она должна выдавать среднее значение полученных чисел. А так же количество значений в массиве превышающих среднее.

Написал программу, вот что получилось:
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
36
37
38
39
40
41
42
43
#include "stdafx.h"
#include <cctype>
#include <iostream>
const int Razm = 10;
int _tmain(int argc, _TCHAR* argv[])
{
    using namespace std;
    double mpog [Razm];
    int i = 0, j, kb = 0;
    double sum = 0, sred;
    cout << "vvedite 10 znachenii pogertvovanii: ";
    while (i < Razm)
    {
        cin >> mpog[i];
        if (!(isdigit(mpog[i])))// проверка что ввод цифровой
        {
            sum += mpog[i];
                    
        }
        [COLOR="Red"]else {
            cout << "vi vveli ne chislo!"; //прерывание программы в случае нецифрового ввода
            break;
        }[/COLOR]
    
    i = i++;
    
    
    
    }
sred = sum/i;
for (j=0; j < i; j++)
    if (mpog[j] > sred)
        kb = kb++;
 
cout << "Srednee poluchennix chisel ravno: " << sred << endl;
cout << "Kolichestvo chisel vishe srednego ravno: " << kb;
 
 
 
cin.get();
cin.get();
    return 0;
}
Проблема в том, что при введении нечисловой величины (например буквы) компилятор сам прерывает программу и код выделенный красным не выполняется. Как сделать так, чтобы компилятор не прерывал программу, а выполнялась моя проверка на предмет цифрового ввода или это невозможно?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2014, 16:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка числовой ли ввод (C++):

Числовой ввод - C++
Можете пожалуйста подсказать как реализовать функцию, которая с помощью _getch() принимает только клавиши с числами и возвращает то число,...

Проверка числовой строки - C++
В текстбоксе записана какая то строка. Нужно сделать проверку, является ли строка числовой. Если же в строке имеются буквы/символы, то...

Построчный числовой ввод данных в массив - C++
Доброго времени суток! Пожалуйста, подскажите возможный вариант реализации на c++ следующего алгоритма: - объявляется массив a; ...

Проверка на ввод - C++
в borland С нужно осуществить проверку на ввод, пользователь дожлен ввести число, как проверить ввел позльзователь число или что то другое

Проверка на ввод C++ - C++
алгоритм-1: 1)ввод x (например 1) 2)вывод y 3)расчет заново (y/n) (работает) алгоритм -2: 1) ввод x (например 1) 2) вывод...

Проверка на ввод - C++
Есть переменная целочисельная ввожу ее с клавиатуры , но когда ввожу букву нажимаю enter вываливает ексепшын. Нашел функцию isdigit ,...

4
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.03.2014, 16:58 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Переделайте под свои нужды:
C++
1
2
3
4
5
6
7
8
// в строке ввода только цифры, перед которыми могут быть + или -.
int a;
while (!(cin >> a) || (cin.peek() != '\n'))
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Error!" << endl;
}
1
Snickers077
7 / 7 / 2
Регистрация: 12.01.2014
Сообщений: 38
31.03.2014, 17:09  [ТС] #3
А для особо одаренных можно объяснить как это работает на пальцах. И что за функция cin.peek()?
0
Craw
235 / 46 / 4
Регистрация: 10.06.2012
Сообщений: 268
Записей в блоге: 1
31.03.2014, 17:44 #4
Попробуйте:
C++
1
2
3
4
5
6
7
8
9
10
for (int i=0; i<Razm; i++) {
     cin >> mpog[i];
     if (isdigit(mpog[i])) {
          sum+=mpog[i];
     }
     else {
          cout << "Not a number!";
          break;
     }
}
0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.03.2014, 17:58 #5
Цитата Сообщение от Snickers077 Посмотреть сообщение
И что за функция cin.peek()
http://www.cplusplus.com/reference/istream/istream/peek/

Добавлено через 2 минуты
Цитата Сообщение от Snickers077 Посмотреть сообщение
А для особо одаренных можно объяснить как это работает на пальцах.
Нужен фильтр ввода данных
1
31.03.2014, 17:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2014, 17:58
Привет! Вот еще темы с ответами:

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

Проверка на ввод символа - C++
При вводе какого либо символа программа уходит в прострацию надо что бы программ распазновала что это символ и выводила error int main() ...

проверка на неправильный ввод - C++
Ничего в голову не приходит.Как реализовать следующее:При вводе одного слова(не символа) писало ошибка введите минимум 2 слова?Сделал если...

Проверка на ввод строки - C++
Вводим строку (имя). Если в строке есть число, то вывести определённое сообщение. void enterDoc(Doctor *pdoctor, int i) { ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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