Выполнить попарное суммирование произвольного конечного ряда чисел - C (СИ)
Формулировка задачи:
Выполнить попарное суммирование произвольного конечного ряда чисел
следующим образом. На первом этапе суммировать попарно рядом стоящие
числа, на втором - результаты первого этапа аналогичным образом, и т.д., пока
не останется одно число.
Решение задачи: «Выполнить попарное суммирование произвольного конечного ряда чисел»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, n, *p;
puts("Enter array's size:");
scanf("%d", &n);
p = malloc(n * sizeof(p));
for(i = 0; i < n; ++i)
printf("%d ", p[i] = rand() % 100);
printf("\n");
while(n > 1){
for(i = 1, j = 0; i < n; i += 2, ++j)
printf("%d ",p[j] = p[i] + p[i - 1]);
n /= 2;
printf("\n");
}
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные i, j, n, p типа int.
- Выводится сообщение
Enter array's size:, после чего программа считывает из консоли размер массива (n). - Выделяется память под массив p с помощью malloc.
- В цикле заполняются элементы массива p случайными числами от 0 до 99 с помощью функции rand().
- Выводится на экран заполненный массив.
- Начинается цикл, который будет выполняться, пока размер массива больше 1.
- Внутренний цикл проходит по нечетным индексам массива (начиная с 1 и пропуская четные индексы), складывая соответствующие элементы и записывая результат в элемент с четным индексом.
- Размер массива уменьшается в два раза.
- Выводится на экран результат суммирования.
- Цикл повторяется до тех пор, пока размер массива больше 1.
- Программа возвращает 0, заканчивая свою работу.