Как добавить элементы в подмножество в c и сохранить их в некотором массиве или некотором типе данных, чтобы я мог получить доступ к каждой сумме для дальнейшего сравнения? - PullRequest
0 голосов
/ 17 февраля 2020

Я сгенерировал подмножество набора. Я хочу вычислить сумму этого набора, например, вывод:

Enter the elements of main set :3
1
2
There are 8 subsets
Subset 7 = 3 1 2
Subset 6 = 1 2
Subset 5 = 3 2
Subset 4 = 2
Subset 3 = 3 1
Subset 2 = 1
Subset 1 = 3
Subset 0 =

Здесь из вывода я хочу вычислить сумму 1 + 2 + 3,1. + 2,3 + 2, ... то же самое для всех подмножеств, но сумма должна быть такой, чтобы я мог получить доступ к каждой из сумм для дальнейшего сравнения, как мне это сделать?

#include <stdio.h>

void print_subset(int subset, int *set) {
    int pos=0;
    printf("Subset %d = ", subset);
    while (subset) {
        if (subset & 1) {
            printf("%d ", set[pos]);
        }
        subset >>= 1;
        pos++;
    }
    printf("\n");
}

int main() {
    int no_of_element=3;
    int no_of_subset,x,a[50];

    printf("Enter the elements of main set :");
    for(x=0;x<no_of_element;x++)
        scanf("%d",&a[x]);

    no_of_subset= (1 << no_of_element);
    printf("There are %d subsets\n", no_of_subset);

    for (; no_of_subset--;) {
        print_subset(no_of_subset, a);
    }
}

1 Ответ

0 голосов
/ 17 февраля 2020

Вот ваш код с суммой:

void print_subset(int subset, int *set) {
    int pos=0;
    int sum=0;
    printf("Subset %d = ", subset);
    while (subset) {
        if (subset & 1) {
            printf("%d ", set[pos]);
            sum+=set[pos];
        }
        subset >>= 1;
        pos++;
    }
    printf("==> Sum = %d \n", sum);
}

int main() {
    int no_of_element=3;
    int no_of_subset,x,a[50];

    printf("Enter the elements of main set :");
    for(x=0;x<no_of_element;x++)
        scanf("%d",&a[x]);

    no_of_subset= (1 << no_of_element);
    printf("There are %d subsets\n", no_of_subset);

    for (; no_of_subset--;) {
        print_subset(no_of_subset, a);
    }
}

Результат:
enter image description here

...