Замена статического массива на динамический - 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, что означает успешное завершение работы.