Замена статического массива на динамический - 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;
}

Объяснение кода листинга программы

В этом коде выполняется следующие действия:

  1. Сначала пользователю предлагается ввести число, которое будет использоваться для заполнения динамического массива.
  2. Динамический массив bin выделяется с помощью функции malloc. В данном случае массив состоит из 8 элементов, но в дальнейшем его размер может быть изменен.
  3. Переменная N инициализируется нулем. Она используется для отслеживания количества элементов в массиве.
  4. Затем выполняется цикл while, который заполняет массив бинарными числами. Для этого число n делится на 2, и результат сохраняется в переменной bin[N].
  5. После того как число n становится равным нулю, цикл завершается.
  6. Далее выполняется цикл for, который меняет местами элементы массива, чтобы получить отсортированный массив.
  7. С помощью цикла for и функции printf выводится на экран значения элементов массива.
  8. После вывода массива, он освобождается с помощью функции free.
  9. Программа возвращает 0, что означает успешное завершение работы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5
Похожие ответы