Если в массиве присутствует заданное значение - удалить его, иначе добавить в конец массива - C (СИ)

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

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

Определить, есть ли в целочисленном массиве Q(10) заданное число Х, и если есть, то удалить его (если встречается неоднократно, то удалить все), а если нет, то добавить в конец массива.

Решение задачи: «Если в массиве присутствует заданное значение - удалить его, иначе добавить в конец массива»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int size = 10, *Q, i, j, x, count = 0;
    Q = malloc(size * sizeof*Q);
    if(!Q){
        fprintf(stderr, "Error allocate memory!");
        exit(1);
    }
    srand(time(NULL));
    for(i = 0; i < size; i++)
        printf("%d ", Q[i] = rand() % 20);
    putchar('\n');
    puts("Enter number:");
    while(1 != scanf("%d", &x)){
        puts("Incorrect data enter!Try again.");
        while(getchar() != '\n');
    }
    for(i = 0; i < size; i++){
        if(Q[i] == x){
            count++;
            for(j = i; j < size - 1; j++)
                Q[j] = Q[j + 1];
        }
    }
    if(count){
        size -= count;
        for(i = 0; i < size; i++)
            printf("%d ", Q[i]);
        putchar('\n');
    }
    else{
        size++;
        Q = realloc(Q, size * sizeof*Q);
        if(!Q){
            fprintf(stderr, "Error allocate memory!");
            exit(1);
        }
        for(i = 0; i < size; i++){
            if(i == size - 1)
                Q[i] = x;
            printf("%d ", Q[i]);
        }
        putchar('\n');
    }
    return 0;
}

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


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

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

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