Замена статического массива на динамический - 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, что означает успешное завершение работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д