Нужно разобрать строку sum += (i / 2) ? i : 0;
как работает это условие и как его заменить через оператор if
Код:
#include "pch.h"
#include <iostream>
int main()
{
int n, sum = 0;
std::cin >> n;
for (int i = 2; i <= n; i = i +2)
{
sum += (i / 2) ? i : 0;
}
std::cout << sum;
return (0);
}
sum += (i / 2) ? i : 0;
Прибавить к sum
, если значение i/2
ненулевое, число i
, в противном случае - 0:
if (i/2) sum += i;
(поскольку в ветви else
ничего не меняется - ее просто отбрасываем...)
Только вот смысла в этом - никакого. Так как для вашего цикла i/2
всегда больше нуля - так что
for (int i = 2; i <= n; i = i +2)
{
sum += (i / 2) ? i : 0;
}
С легкостью переписывается как
for (int i = 2; i <= n; i = i +2)
{
sum += i;
}
Или еще проще, с учетом, что изначально sum
равно 0:
sum = (n/2)*(1+n/2);
Вариант попроще:
if (i > 1) sum += i;
но поскольку цикл начинается с двойки, то можно условие вообще не проверять.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Почему следующая программа выбрасывает исключение std::bad_alloc?
Нужно,что бы при выборе изображения оно перемещалось в корневую папку программы, как это можно реализовать ? Пытался через Filescopy и Files