Выделение подмножества множества n при n равном 32 не работает - C (СИ)
Формулировка задачи:
выделяет подмножества множества n при n равном 32 не работает как это исправить
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> void qwe(int n); FILE *fn; int main(void) { int n; double t; fn=fopen("result.txt","w"); printf("enter number\n"); scanf("%d", &n); t= clock (); qwe (n); t= clock()-t; t/= CLOCKS_PER_SEC; printf("our time is %lg",t); return 0; } void qwe(int n) {int j; unsigned m,i,d; d=pow(2,n); for (i=1; i<=d; i++) { m=i; for (j=1; j<=n; j++) { if ((m&1)!=0) fprintf (fn,"%d ",j); m>>=1; } fprintf(fn, "\n"); } }
Решение задачи: «Выделение подмножества множества n при n равном 32 не работает»
textual
Листинг программы
d = 1 << n;
Объяснение кода листинга программы
В данном коде происходит следующее:
- Переменная
n
инициализируется значением 32. - Вычисляется значение переменной
d
путем сдвига двоичного представления числа1
наn
позиций вправо. Примечание: В двоичной системе счисления число1
представляется как00000001
, а число32
как00000020
. При сдвиге числа1
на32
позиции вправо, получается число00000080
, которое затем интерпретируется как10000000
в десятичной системе счисления, что равно 131072. Таким образом, значение переменнойd
равно 131072.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д