Просуммируйте все числа, кратные 9, из интервалов [50, 100], [300, 400] и [800, 1000] - C (СИ)
Формулировка задачи:
Помогите, пожалуйста. Просуммируйте все числа, кратные 9, из интервалов [50, 100], [300, 400]
и [800, 1000]. язык си
Решение задачи: «Просуммируйте все числа, кратные 9, из интервалов [50, 100], [300, 400] и [800, 1000]»
textual
Листинг программы
#include <stdio.h> int multiple_sum(int nLeft, int nRight, int nDivider, int * pSum) { if ( nDivider == 0 ) return -1; while ( nLeft % nDivider ) ++nLeft; while ( nRight % nDivider ) --nRight; if ( nLeft > nRight ) return -1; *pSum = ( nLeft + nRight ) * ( ( nRight - nLeft ) / nDivider + 1 ) / 2; return 0; } int main(void) { int left, right, divider, sum; while ( printf("Left: ") && scanf("%d", &left) == 1 && printf("Right: ") && scanf("%d", &right) == 1 && printf("Divider: ") && scanf("%d", ÷r) == 1 ) { if ( multiple_sum(left, right, divider, &sum ) ) printf("Wrong parameters!\n"); else printf("Sum: %d\n\n", sum); } return 0; }
Объяснение кода листинга программы
- Объявлены функции
multiple_sum
иmain
. - В функции
multiple_sum
проверяется деление на ноль. - Затем в функции
multiple_sum
два цикла while:- Первый цикл while наращивает значение переменной
nLeft
до ближайшего большего числа, кратногоnDivider
. - Второй цикл while уменьшает значение переменной
nRight
до ближайшего меньшего числа, кратногоnDivider
. - Если
nLeft
становится большеnRight
, функция возвращает -1.
- Первый цикл while наращивает значение переменной
- В функции
main
объявлены переменныеleft
,right
,divider
,sum
. - Затем в функции
main
цикл while, который выполняется до тех пор, пока пользователь вводит корректные значения дляleft
,right
,divider
. - Если значения введены корректно, вызывается функция
multiple_sum
, и результат выводится на экран. - Если параметры введены некорректно, выводится сообщение об ошибке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д