Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2022, 00:37   #11
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Раз пошла такая ...
Код:
    const int max  = 10;   
    int    m[max] = {-10, 1, 2, 0, 4, 5, 6, 0, 8, 0};
    int k = 0;                         // Встречено нулей
    int summa = 0;
    for (int i = 0; i < max; i++) 
    {
        if (m[i] == 0) k += 1;         // Встречено нулей
        if (k == 2) break;             // Достаточно нулей
        if (k > 0)  summa += m[i];     // Считаем сумму, если был ноль
    }
    if (k != 2) summa = 0;             // Корректируем сумму
    printf("Summa = %d.", summa);
Для суммирования можно написать и такое условие:
Код:
if (k > 0 && m[i] != 0)  summa += m[i];
если не хочется суммировать первый нулевой элемент.
Как-то так, ...
ViktorR на форуме Ответить с цитированием
Старый 28.12.2022, 05:13   #12
jillitil
Форумчанин
 
Аватар для jillitil
 
Регистрация: 17.10.2018
Сообщений: 184
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
если не хочется суммировать первый нулевой элемент.
Тогда достаточно поменять порядок строк
Код:
        if (k > 0)  summa += m[i];     
        if (m[i] == 0) k += 1;         
        if (k == 2) break;
Но просуммирует последний нолик

Можно обойтись двумя проверками.
Код:
    for (int i = 0; i < max; i++)
    {
	if (k == 1)  summa += m[i];
	if (((k += (m[i] == 0)) == 2)) break;
    }
Челендж: Кто сделает в один иф?
jillitil вне форума Ответить с цитированием
Старый 28.12.2022, 07:57   #13
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от jillitil Посмотреть сообщение
Челендж: Кто сделает в один иф?
Код:
for (int i = 0; i < max && k < 2; k += (m[i++] == 0))
    if (k) summa += m[i];
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму чисел из данного набора, расположенных между последними двумя нулями h1p6x Общие вопросы C/C++ 3 29.11.2019 11:39
Вывести сумму чисел, расположенных между последними двумя нулями. Язык Си Yakoff Помощь студентам 6 12.11.2012 15:59
Вставка нулей в массив. Сумма элементов между нулями. Язык С++ annka93 Помощь студентам 1 30.10.2011 19:50
Дан одномерный массив. Найдите сумму максимального и последнего элементов массива. Delphi. buyaka cha Помощь студентам 4 15.11.2010 13:46
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива HazelHen Общие вопросы C/C++ 2 29.03.2009 15:16