Составить функцию подсчета всех возможных сумм чисел в строке - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Составить функцию подсчета всех возможных сумм чисел в строке. Пример: 3 ->количество элементов 2 3 4 Вывод: 2 3 4 5 6 7 9

Решение задачи: «Составить функцию подсчета всех возможных сумм чисел в строке»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. int pow2(int n)
  4. {
  5.     return (n==0)?1:2*pow2(n-1);
  6. }
  7.  
  8. void AllSums(int *Arr, int n)
  9. {
  10.      int c,b,i,s,j;
  11.      b=pow2(n)-1;
  12.      for (i=1; i<=b; i++)
  13.      {
  14.          c=i;
  15.          s=0;
  16.          for (j=0; j<n; j++)
  17.          {
  18.              if (c%2)
  19.              {
  20.                 printf("%d ",Arr[j]);      
  21.                 s+=Arr[j];
  22.              }  
  23.              c=c/2;
  24.          }
  25.          printf("S=%d\n",s);
  26.      }
  27.      return;        
  28. }    
  29.  
  30. int main(int argc, char *argv[])
  31. {
  32.     int Arr[8]={2,3,4,6,1,-1,7,11};
  33.     AllSums(Arr,8);
  34.     system("PAUSE");
  35.     return EXIT_SUCCESS;
  36. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы