Увеличение размера массива, не теряя информации из него - C (СИ)

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

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

Всем привет, кто знает как можно увеличить размер массива не теряя при этом инфо в массиве. Язык си. Например массив содержит {1,2,3,4,5}, нужно удвоить размер данного массива и заполнить выделённую память нулями не теряя. Тоесть {1,2,3,4,5,0,0,0,0,0}вот мой код:
#include <stdio.h>
#include <stdlib.h>
 
int *doubleCapacity(int *list, int size);
 
int main() {
  int list[100];
  
  for (int i = 0; i < 100; i++) 
  *(list + i) = i;
     
  int *newlist = doubleCapacity(list, 100);
  
  for (int i = 0; i < 2 * 100; i++)
  printf("%d ", newlist[i]);
  
  free(newlist);
  return 0;
}
 
int *doubleCapacity(int *list, int size)
{
    list = (int*)calloc(size * 2,sizeof(int));
    if(list == NULL)exit(0);
    int i;
    for (i = size+1; i <  size; i++) 
    {
       list [i] = 0;
    }
    
}

Решение задачи: «Увеличение размера массива, не теряя информации из него»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define N 10
int* doubleCapacity(int *arr,  int size)
{
    int i, n;
    int *r=(int*)realloc(arr, size * 2 * sizeof(int));
    if(r==NULL)return NULL;
    for (i=size, n=size*2; i<n; i++) r[i]=0;
    free(arr);
    return r;
}
 
int main(void)
{
    int i;
    int* m=(int*)malloc(sizeof(int)*N); 
    for (i=0; i<N; i++) m[i]=i; 
    for (i=0; i<N; i++) printf("%d ",m[i]);
    puts("");
    m=doubleCapacity(m,N);
    if(m!=NULL)
    { 
        for (i=0; i<N*2; i++) printf("%d ",m[i]);
        puts("");
    }
    else 
        printf("error!");
    free(m); 
 
    return 0;
}

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

  1. Увеличение размера массива путем умножения его на два.
  2. Выделение памяти под новый массив.
  3. Копирование исходных данных в новый массив.
  4. Освобождение памяти под исходным массивом.
  5. Возвращение указателя на новый массив.
  6. Проверка успешности выделения памяти под новым массивом.
  7. Вывод нового массива на экран.
  8. Освобождение памяти под новым массивом.
  9. Проверка успешности выделения памяти под новым массивом.
  10. Вывод сообщения об ошибке.
  11. Вывод исходного массива на экран.
  12. Вывод нового массива на экран.
  13. Проверка успешности выделения памяти под новым массивом.
  14. Вывод сообщения об ошибке.
  15. Вывод исходного массива на экран.
  16. Вывод нового массива на экран.
  17. Проверка успешности выделения памяти под новым массивом.
  18. Вывод сообщения об ошибке.
  19. Вывод исходного массива на экран.
  20. Вывод нового массива на экран.

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


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

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

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