Замена статического массива на динамический - C (СИ)
Формулировка задачи:
Здравствуйте. Есть код программы по переводу из десятичной в двоичную. В ней используется статический массив , из-за чего в результате вместо допустим 111000 выдает 0000111000. Необходимо заменить статический массив на динамический,желательно используя оператор new . Изменить в рамках данного кода .
#include <stdio.h> #include <stdlib.h> #define N 10 int main () { int a[N],k,i,glass; int n; printf("n = "); scanf("%d", &n); printf(" (Dec) = "); for (i=0;i<N;i++) { if (n%2==0) { a[i]=0; } else { a[i]=1; } n=n/2; } for (i=0; i<N/2; i++) { glass=a[i]; a[i]=a[N-1-i]; a[N-1-i]=glass; } for (i=0;i<N;i++) { printf("%2d",a[i]); } printf(" (Bin)\n"); return 0; }
Решение задачи: «Замена статического массива на динамический»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main(void) { int* bin = NULL; int n, i, N, temp; scanf("%d", &n); bin = malloc(sizeof(int) * 8); N = 0; while (n > 0) { if (n % 2 == 0) bin[N] = 0; else bin[N] = 1; N++; n = n / 2; } for (i = 0; i < N / 2; i++) { temp = bin[i]; bin[i] = bin[N - 1 - i]; bin[N - 1 - i] = temp; } for (i = 0; i < N; i++) printf("%2d ", bin[i]); printf("\n"); free(bin); return 0; }
Объяснение кода листинга программы
В этом коде выполняется следующие действия:
- Сначала пользователю предлагается ввести число, которое будет использоваться для заполнения динамического массива.
- Динамический массив bin выделяется с помощью функции malloc. В данном случае массив состоит из 8 элементов, но в дальнейшем его размер может быть изменен.
- Переменная N инициализируется нулем. Она используется для отслеживания количества элементов в массиве.
- Затем выполняется цикл while, который заполняет массив бинарными числами. Для этого число n делится на 2, и результат сохраняется в переменной bin[N].
- После того как число n становится равным нулю, цикл завершается.
- Далее выполняется цикл for, который меняет местами элементы массива, чтобы получить отсортированный массив.
- С помощью цикла for и функции printf выводится на экран значения элементов массива.
- После вывода массива, он освобождается с помощью функции free.
- Программа возвращает 0, что означает успешное завершение работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д