Удалить из массивов элементы, указанные пользователем - C (СИ)
Формулировка задачи:
Доброй ночи.
Помогите с программой, заранее спасибо.
Удалить из массивов М(10) и С(12) элементы, указанные пользователем (по 1 из массива).
Как это сделать через функции?
Решение задачи: «Удалить из массивов элементы, указанные пользователем»
textual
Листинг программы
#ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define SIZE_M 10 #define SIZE_C 12 int* create_int_array(size_t size) { return (int*)malloc(sizeof(int) * size); } void delete_int_array_index(int* ptr, const size_t old_size, const size_t index) { memmove(ptr + index, ptr + index + 1, (old_size - index) * sizeof(int)); realloc(ptr, old_size * sizeof(int) - sizeof(int)); } void print(const int* p, size_t size) { while (size--) printf("%d ", *p++); putchar('\n'); } void fill(int* ptr, size_t size) { while (size--) *ptr++ = rand() % 20; } int main(void) { size_t index = 0; int *m, *c; srand(time(0)); m = create_int_array(SIZE_M); c = create_int_array(SIZE_C); fill(m, SIZE_M); fill(c, SIZE_C); print(m, SIZE_M); print(c, SIZE_C); printf(">"); if (scanf("%u", &index) == 1 && index < SIZE_M) { delete_int_array_index(m, SIZE_M, index); print(m, SIZE_M - 1); free(m); } else { puts("Invalid array index"); } printf(">"); if (scanf("%u", &index) == 1 && index < SIZE_C) { delete_int_array_index(c, SIZE_C, index); print(c, SIZE_C - 1); free(c); } else { puts("Invalid array index"); } return EXIT_SUCCESS; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем размеры массивов M и C
- Создаем функцию для создания динамического массива целых чисел
- Создаем функцию для удаления элемента из динамического массива по индексу
- Создаем функцию для печати элементов массива
- Создаем функцию для заполнения элементов массива случайными числами
- В функции main создаем массивы M и C, заполняем их случайными числами, печатаем их содержимое
- Запрашиваем у пользователя индекс элемента для удаления из массива M
- Если пользователь ввел корректный индекс, удаляем элемент из массива M, печатаем обновленный массив M, освобождаем память
- Если пользователь ввел некорректный индекс, выводим сообщение об ошибке
- Запрашиваем у пользователя индекс элемента для удаления из массива C
- Если пользователь ввел корректный индекс, удаляем элемент из массива C, печатаем обновленный массив C, освобождаем память
- Если пользователь ввел некорректный индекс, выводим сообщение об ошибке
- Возвращаем успешный результат выполнения программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д