Удалить из массивов элементы, указанные пользователем - C (СИ)

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

Доброй ночи. Помогите с программой, заранее спасибо. Удалить из массивов М(10) и С(12) элементы, указанные пользователем (по 1 из массива). Как это сделать через функции?


textual

Код к задаче: «Удалить из массивов элементы, указанные пользователем - C (СИ)»

#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;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

5   голосов, оценка 4.200 из 5

Источник
Похожие ответы