Составить функцию подсчета всех возможных сумм чисел в строке - 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, указывающее на успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д