Составить функцию подсчета всех возможных сумм чисел в строке - 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;
}

Объяснение кода листинга программы

  1. В функции main создается массив Arr размером 8, инициализированный значениями {2,3,4,6,1,-1,7,11}.
  2. Функция AllSums вызывается с аргументами Arr и 8.
  3. В функции AllSums создаются следующие переменные:
    • c - для хранения остатка от деления на 2 текущего числа в двоичном представлении числа n.
    • b - для хранения количества чисел, которые могут быть представлены в двоичной системе в пределах n.
    • i - для хранения текущего числа в двоичной системе.
    • s - для хранения суммы чисел, которые имеют ненулевой остаток при делении на 2.
    • j - для хранения индекса текущего числа в массиве Arr.
  4. Используя цикл for, в функции AllSums перебираются все возможные числа в двоичной системе от 1 до n.
  5. Для каждого числа i в двоичной системе выполняется следующее:
    • c устанавливается равным i.
    • с помощью цикла for перебираются все числа от 0 до n-1.
    • если остаток от деления c на 2 ненулевой, то:
      • число c выводится на экран.
      • к переменной s прибавляется соответствующее число из массива Arr.
    • c делится на 2.
  6. После завершения цикла for для текущего числа i выводится на экран значение переменной s.
  7. В конце функции main вызывается функция system(PAUSE), чтобы приостановить выполнение программы до нажатия клавиши.
  8. В конце функции main возвращается значение EXIT_SUCCESS, указывающее на успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы