Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 06.12.2018
Сообщений: 17

При попытке сделать проверку на дурака код ломается

10.01.2019, 21:38. Показов 2127. Ответов 4

Студворк — интернет-сервис помощи студентам
Суть же задачи состоит в том, чтобы в массиве после первого положительного элемента высчитывать сумму всех последующих. Без проверки на дурака код работает нормально. С проверкой запрашивает в 2 раза больше чисел для ввода.
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
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
int main ()
{
    setlocale(0, "Rus");
int a[20], i, n, maxI, k, sum=0;
cout << "Введите размер массива(от 1 до 20)"; cin >> n;
cout << "Введите элементы массива ";
for (i=0; i<n; i++) {
cin >> a[i]; }
if ( cin >> n && cin >> a[i]) 
{
    for (i=0;i<n;i++) 
    {
       if (a[i]>0)
        {
        k=i; break; 
        }
    
    }
    if (a[i]<0) 
    cout << "Все элементы отрицательны"<< endl;  
    for(i = k+1 ; i<n; i++) 
    {
             sum += a[i];
    } 
   cout << "Сумма равна " << sum << endl;
}
else cout << "Вы ввели не то, что требовалось";
    return 0;
    getch ();
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.01.2019, 21:38
Ответы с готовыми решениями:

Сделать проверку ввода от дурака в Builder
Всем привет.Вообщем задача сделать программу ,которая решает квадратные уравнения . Главное условие : чтобы при вводе букв , программа...

как устроить проверку на дурака
Я не могу понять как устроить проверку на дурака. Мне надо, чтобы пользователь при использовании scanf вводил числа, а не символы.Как это...

Как сделать проверку в строке "для дурака" с авто-заменой "," на "." - иначе вылетает
Помогите в программу &quot;запилить&quot; проверку ввода символа (Base, Pawer) &quot;для дурака&quot; с авто-заменой ',' (естественно не читающейся) на...

4
 Аватар для TechnoRat
5 / 4 / 1
Регистрация: 29.08.2018
Сообщений: 12
10.01.2019, 21:52
Цитата Сообщение от Beanst Посмотреть сообщение
if ( cin >> n && cin >> a[i])
А что вот это за проверка? Что конкретно тут проверяется?
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
10.01.2019, 22:01
Beanst, переменную n нужно до цикла for проверять.

Добавлено через 2 минуты
Цитата Сообщение от Beanst Посмотреть сообщение
код работает нормально
ага, мне бы твое чувство нормальности, я был бы счастлив.
0
0 / 0 / 0
Регистрация: 06.12.2018
Сообщений: 17
10.01.2019, 22:02  [ТС]
Цитата Сообщение от _stanislav Посмотреть сообщение
ага, мне бы твое чувство нормальности, я был бы счастлив.
Подскажите тогда что не так, исправим)
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
10.01.2019, 22:36
Лучший ответ Сообщение было отмечено Beanst как решение

Решение

Beanst, по тестируй не проверял. но примерно так
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
44
45
46
47
#include <cstddef>
#include <iostream>
 
constexpr std::size_t error = 20;
 
std::size_t GetIndex(int* a, std::size_t s)
{
    for (std::size_t i = 0; i < s; ++i)
        if (a[i] > 0) return i;
 
    return error;
}
 
int main()
{
    setlocale(0, "Rus");
 
    constexpr std::size_t size = 20;
    int a[size] {};
    std::size_t n;
 
    std::cout << "Введите размер массива(от 1 до 20)"; 
    if (!std::cin >> n || n > size)
    {
        std::cout << "Ошибка";
        return -1;
    }
 
    std::cout << "Введите элементы массива ";
    for (std::size_t i = 0; i < n; ++i)
        std::cin >> a[i];
 
    std::size_t pos = GetIndex(a, n);
    if (pos == error)
    {
        std::cout << "Ошибка";
        return -1;
    }
 
    int result = 0;
    for (std::size_t i = pos; i < n; ++i)
        result += a[i];
 
    std::cout << "Ответ: " << result;
 
    return 0;
}
Добавлено через 7 минут
Beanst, ошибку нашел пока одну, исправь
C++
1
2
3
4
5
6
7
std::cout << "Введите размер массива(от 1 до 20)"; 
std::cin >> n;
if (!std::cin || n > size)
{
    std::cout << "Ошибка";
    return -1;
}
Добавлено через 2 минуты
вроде больше нет ошибок

Добавлено через 7 минут
И помни, ПРЕЖДЕВРЕМЕННАЯ ОПТИМИЗАЦИЯ КОРЕНЬ ВСЕХ ЗОЛ.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.01.2019, 22:36
Помогаю со студенческими работами здесь

Реализовать защиту от дурака (проверку ввода)
Вводится шестизначное число(номер автобусного билета). Нужно выполнить защиту от дурака(чтобы вводились только цифры, а не другие...

Как объединить код и сделать проверку!!!
Здравствуйте. Нужна помощь. Необходимо объединить код и сделать проверку куда было введено число (шестигранник,круг,квадрат,). Я уже...

Сделать проверку, присутствует ли введенный код в массиве
Помогите пожалуйста . Нужно сделать проверку (выходит ли введенный код в массив или нет, если нет то нужно заново запросить ввести код) ...

Как сделать проверку есть ли на сайте такой код
Помогите сделать проверку, допустим у нас есть сайт www.lalala.com/qwazoc.txt, и как проверить что если там есть текст из Edit то у нас все...

Зависает при попытке сделать снимок экрана, при запуске программ, иногда во время сильной загрузки ЦП
При попытке сделать снимок экрана(нажатие на кнопку принт скрин), при запуске некоторых программ, иногда просто во время сильной загрузки...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru