Skip to content

Instantly share code, notes, and snippets.

@sese
Last active May 16, 2020 09:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sese/d5547f43ca1e4799ff234c2e2608456a to your computer and use it in GitHub Desktop.
Save sese/d5547f43ca1e4799ff234c2e2608456a to your computer and use it in GitHub Desktop.
Laborator informatica c gnu - lab.7

Laborator 7

Problema 1

Se citeşte un număr întreg pozitiv n. Folosind operatori pe biţi să se afişeze reprezentarea în baza 2 a numărului n.

#include<stdio.h>

#define MAX 64

int main() {

    int n;
    int abin[MAX];
    int alen = 0;

    puts("Introduceti un numar intreg n");
    scanf("%d", &n);
    printf("n = %d\n", n);

    do {
        abin[alen++] = n % 2;
        n /= 2;
    }
    while(n);

    printf("bin = ");
    for(int i = alen-1; i >=0; i--) {
        printf("%d", abin[i]);
    }
    printf("\n");

    return 0;
}

Problema 2

Se citeşte un număr întreg n reprezentând numărul de elemente dintr-o mulţime şi un şir de n valori întregi reprezentând elementele acestei mulţimi. Folosind operatori pe biţi să se afişeze toate submulţimile mulţimii date.

#include<stdio.h>

#define MAX 64


int main() {

    int n;
    int arr[MAX];
    unsigned long long lset = 0;
    unsigned long long i;

    puts("Introduceti un numar intreg n");
    scanf("%d", &n);
    printf("n = %d\n", n);
    printf("Introduceti un sir separat cu spatii de %d elemente:", n);

    for (i = 0; i < n; i++, lset++) {
        scanf("%d", &arr[i]);
        lset <<= 1;
    }

    printf("lset = %llu\n", lset);

    for (i = 1; i <= lset; i++ ) {
        unsigned long long ull = i;
        printf("%d = ", i);
        int rot = 0;
        do {
           if (ull % 2 == 1) {
               printf("%d ", arr[rot]);
           }
           ull >>= 1;
           rot++;
        }
        while(ull > 0);

        printf("\n");
    }

    return 0;
}

Problema 3

Temă: Se citeşte un număr întreg n reprezentând numărul de elemente dintr-o mulţime şi un şir de n valori întregi reprezentând elementele acestei mulţimi. Se citeşte nu număr întreg k<n. Se se afişeze toate submulţimile de k elemente ale mulţimii date.

#include<stdio.h>

#define MAX 64


int main() {

    int n, k;
    int arr[MAX];
    int set[MAX];
    unsigned long long lset = 0;
    unsigned long long i;

    puts("Introduceti un numar de elemente din multume n");
    scanf("%d", &n);
    printf("n = %d\n", n);

    puts("Introduceti marimea partitiei k < n");
    scanf("%d", &k);
    printf("k = %d\n", k);

    printf("Introduceti un sir separat cu spatii de %d elemente:", n);

    for (i = 0; i < n; i++, lset++) {
        scanf("%d", &arr[i]);
        lset <<= 1;
    }

    printf("lset = %llu\n", lset);

    for (i = 1; i <= lset; i++ ) {
        unsigned long long ull = i;
        int rot = 0;
        int nset = 0;
        do {
           if (ull % 2 == 1) {
               set[nset++] = arr[rot];
           }
           ull >>= 1;
           rot++;
        }
        while(ull > 0);

        if (nset == k){
            printf("{");
            for(int j = 0; k < nset; j++) {
                printf("%d ", set[j]);
            }
            printf("}\n");
        }
    }

    return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment