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

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

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

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

31.03.2014, 16:55. Просмотров 735. Ответов 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;
}
Проблема в том, что при введении нечисловой величины (например буквы) компилятор сам прерывает программу и код выделенный красным не выполняется. Как сделать так, чтобы компилятор не прерывал программу, а выполнялась моя проверка на предмет цифрового ввода или это невозможно?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2014, 16:55     Проверка числовой ли ввод
Посмотрите здесь:

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 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;
}
Snickers077
7 / 7 / 2
Регистрация: 12.01.2014
Сообщений: 33
31.03.2014, 17:09  [ТС]     Проверка числовой ли ввод #3
А для особо одаренных можно объяснить как это работает на пальцах. И что за функция cin.peek()?
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;
     }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2014, 17:58     Проверка числовой ли ввод
Еще ссылки по теме:

Проверка на ввод букв - C++
В общем такая проблемка Задача: сделать программу для расчета периметра, площади, медианы, бисектрисы и высоты. # include &lt;stdio.h&gt;; ...

Проверка на ввод пола - C++
#include&lt;iostream&gt; using namespace std; int main() { char sex; cin.getline(sex, 9); if () // проверка на ввод cout &lt;&lt;...

Проверка на ввод данных - C++
В интернете немогу найти примера кода на проверку вводимых данных. Можите написать простинький пример к примеру такой: if...

Проверка на ввод цифр - C++
Здравствуйте! Можно ли как нибудь по лучше это сделать: bool CheckInputData(HWND window, HWND edit) { char buffer; ...

Проверка на ввод числа - C++
do { cin.clear(); cin.sync(); cout &lt;&lt; &quot;Введите N: &quot;; cin&gt;&gt;N; if(cin.fail()) cout&lt;&lt;&quot;Неверный формат!\n&quot;; ...

Проверка на ввод символа - C++
Предположим вместо числа был введен символ, тогда после ввода символа пропускается вторая строчка cin&gt;&gt;b; и далее заного перезапускается...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.03.2014, 17:58     Проверка числовой ли ввод #5
Цитата Сообщение от Snickers077 Посмотреть сообщение
И что за функция cin.peek()
http://www.cplusplus.com/reference/i.../istream/peek/

Добавлено через 2 минуты
Цитата Сообщение от Snickers077 Посмотреть сообщение
А для особо одаренных можно объяснить как это работает на пальцах.
Нужен фильтр ввода данных
Yandex
Объявления
31.03.2014, 17:58     Проверка числовой ли ввод
Ответ Создать тему
Опции темы

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