Составить функцию подсчета всех возможных сумм чисел в строке - C (СИ)
Формулировка задачи:
Составить функцию подсчета всех возможных сумм чисел в строке.
Пример:
3 ->количество элементов
2 3 4
Вывод: 2 3 4 5 6 7 9
Решение задачи: «Составить функцию подсчета всех возможных сумм чисел в строке»
textual
Листинг программы
#include <stdio.h> int pow2(int n) { return (n==0)?1:2*pow2(n-1); } void AllSums(int *Arr, int n) { int c,b,i,s,j; b=pow2(n)-1; for (i=1; i<=b; i++) { c=i; s=0; for (j=0; j<n; j++) { if (c%2) { printf("%d ",Arr[j]); s+=Arr[j]; } c=c/2; } printf("S=%d\n",s); } return; } int main(int argc, char *argv[]) { int Arr[8]={2,3,4,6,1,-1,7,11}; AllSums(Arr,8); system("PAUSE"); return EXIT_SUCCESS; }
Объяснение кода листинга программы
- В функции main создается массив Arr размером 8, инициализированный значениями {2,3,4,6,1,-1,7,11}.
- Функция AllSums вызывается с аргументами Arr и 8.
- В функции AllSums создаются следующие переменные:
- c - для хранения остатка от деления на 2 текущего числа в двоичном представлении числа n.
- b - для хранения количества чисел, которые могут быть представлены в двоичной системе в пределах n.
- i - для хранения текущего числа в двоичной системе.
- s - для хранения суммы чисел, которые имеют ненулевой остаток при делении на 2.
- j - для хранения индекса текущего числа в массиве Arr.
- Используя цикл for, в функции AllSums перебираются все возможные числа в двоичной системе от 1 до n.
- Для каждого числа i в двоичной системе выполняется следующее:
- c устанавливается равным i.
- с помощью цикла for перебираются все числа от 0 до n-1.
- если остаток от деления c на 2 ненулевой, то:
- число c выводится на экран.
- к переменной s прибавляется соответствующее число из массива Arr.
- c делится на 2.
- После завершения цикла for для текущего числа i выводится на экран значение переменной s.
- В конце функции main вызывается функция system(
PAUSE
), чтобы приостановить выполнение программы до нажатия клавиши. - В конце функции main возвращается значение EXIT_SUCCESS, указывающее на успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д