Увеличение размера массива, не теряя информации из него - 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; }
Объяснение кода листинга программы
- Увеличение размера массива путем умножения его на два.
- Выделение памяти под новый массив.
- Копирование исходных данных в новый массив.
- Освобождение памяти под исходным массивом.
- Возвращение указателя на новый массив.
- Проверка успешности выделения памяти под новым массивом.
- Вывод нового массива на экран.
- Освобождение памяти под новым массивом.
- Проверка успешности выделения памяти под новым массивом.
- Вывод сообщения об ошибке.
- Вывод исходного массива на экран.
- Вывод нового массива на экран.
- Проверка успешности выделения памяти под новым массивом.
- Вывод сообщения об ошибке.
- Вывод исходного массива на экран.
- Вывод нового массива на экран.
- Проверка успешности выделения памяти под новым массивом.
- Вывод сообщения об ошибке.
- Вывод исходного массива на экран.
- Вывод нового массива на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д