С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/75: Рейтинг темы: голосов - 75, средняя оценка - 4.92
 Аватар для Snickers077
15 / 12 / 7
Регистрация: 12.01.2014
Сообщений: 62

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

31.03.2014, 16:55. Показов 15645. Ответов 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)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2014, 16:55
Ответы с готовыми решениями:

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

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

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

4
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.03.2014, 16:58
Лучший ответ Сообщение было отмечено Snickers077 как решение

Решение

Переделайте под свои нужды:
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
15 / 12 / 7
Регистрация: 12.01.2014
Сообщений: 62
31.03.2014, 17:09  [ТС]
А для особо одаренных можно объяснить как это работает на пальцах. И что за функция cin.peek()?
0
238 / 49 / 6
Регистрация: 10.06.2012
Сообщений: 268
Записей в блоге: 1
31.03.2014, 17:44
Попробуйте:
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
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.03.2014, 17:58
Цитата Сообщение от Snickers077 Посмотреть сообщение
И что за функция cin.peek()
http://www.cplusplus.com/refer... ream/peek/

Добавлено через 2 минуты
Цитата Сообщение от Snickers077 Посмотреть сообщение
А для особо одаренных можно объяснить как это работает на пальцах.
Нужен фильтр ввода данных
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.03.2014, 17:58
Помогаю со студенческими работами здесь

Проверка набора символов на возможность составить числовой палиндром
На вход программы подаётся строка из произвольных символов. Необходимо выяснить, можно ли составить из этих символов числовой...

Простейшая арифметическая операция. проверка на числовой ввод
Хотел сделать проверку на ввод числа, но моя реализация не работает. Прошу помочь разобраться. #include &lt;stdio.h&gt; #include...

Ввод числовой переменной
Есть ли готовый вариант класса tedit для ввода числовых типов? Хочется, чтобы как аргумент он получал ссылку на переменную. При...

Ввод числовой последовательности через textbox
Здравствуйте!! Пожалуйста помогите мне!!! Я хочу вводить числовую последовательность через Текстбокс без использования приславутого...

Графическое окно с swing, числовой ввод
Здравствуйте! У меня возникли сложности с работой по jave. Нужно сделать графическое окно с помощью swing. Подскажите как сделать: 1. в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru