Удалить из массивов элементы, указанные пользователем - 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;
}

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

  1. Включаем необходимые заголовочные файлы
  2. Определяем размеры массивов M и C
  3. Создаем функцию для создания динамического массива целых чисел
  4. Создаем функцию для удаления элемента из динамического массива по индексу
  5. Создаем функцию для печати элементов массива
  6. Создаем функцию для заполнения элементов массива случайными числами
  7. В функции main создаем массивы M и C, заполняем их случайными числами, печатаем их содержимое
  8. Запрашиваем у пользователя индекс элемента для удаления из массива M
  9. Если пользователь ввел корректный индекс, удаляем элемент из массива M, печатаем обновленный массив M, освобождаем память
  10. Если пользователь ввел некорректный индекс, выводим сообщение об ошибке
  11. Запрашиваем у пользователя индекс элемента для удаления из массива C
  12. Если пользователь ввел корректный индекс, удаляем элемент из массива C, печатаем обновленный массив C, освобождаем память
  13. Если пользователь ввел некорректный индекс, выводим сообщение об ошибке
  14. Возвращаем успешный результат выполнения программы

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


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

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

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