Замена статического массива на динамический - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть код программы по переводу из десятичной в двоичную. В ней используется статический массив , из-за чего в результате вместо допустим 111000 выдает 0000111000. Необходимо заменить статический массив на динамический,желательно используя оператор new . Изменить в рамках данного кода .
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 10
  4. int main ()
  5. {
  6. int a[N],k,i,glass;
  7. int n;
  8. printf("n = ");
  9. scanf("%d", &n);
  10.  
  11. printf(" (Dec) = ");
  12.  
  13. for (i=0;i<N;i++) {
  14. if (n%2==0) {
  15. a[i]=0;
  16. } else {
  17. a[i]=1;
  18. }
  19. n=n/2;
  20. }
  21. for (i=0; i<N/2; i++)
  22. {
  23. glass=a[i];
  24. a[i]=a[N-1-i];
  25. a[N-1-i]=glass;
  26. }
  27.  
  28. for (i=0;i<N;i++) {
  29. printf("%2d",a[i]);
  30. }
  31.  
  32. printf(" (Bin)\n");
  33. return 0;
  34. }

Решение задачи: «Замена статического массива на динамический»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   int* bin = NULL;
  7.  
  8.   int n, i, N, temp;
  9.  
  10.   scanf("%d", &n);
  11.  
  12.   bin = malloc(sizeof(int) * 8);
  13.  
  14.   N = 0;
  15.   while (n > 0)
  16.   {
  17.     if (n % 2 == 0)
  18.       bin[N] = 0;
  19.     else
  20.       bin[N] = 1;
  21.    
  22.     N++;
  23.     n = n / 2;
  24.   }
  25.  
  26.   for (i = 0; i < N / 2; i++)
  27.   {
  28.     temp = bin[i];
  29.     bin[i] = bin[N - 1 - i];
  30.     bin[N - 1 - i] = temp;
  31.   }
  32.  
  33.   for (i = 0; i < N; i++) printf("%2d ", bin[i]);
  34.   printf("\n");
  35.  
  36.   free(bin);
  37.  
  38.   return 0;
  39. }

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

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы