Удалить первый элемент массива с заданным значением - C (СИ)

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

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

Нужна помощь. Если можно с комментариями, буду очень благодарен. Задание: 1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел. 2) Распечатать полученный массив. 3) Удалить первый элемент с заданным значением. 4) Сдвинуть массив циклически на К элементов вправо. 5) Распечатать полученный массив.

Решение задачи: «Удалить первый элемент массива с заданным значением»

textual
Листинг программы
#include <stdio.h>
#include <time.h>
#include <Windows.h>
 
// Defined values for changing array size, low and high border of the array
#define ARRAY_SIZE                  8
#define NEW_ARRAY_SIZE  (ARRAY_SIZE-1)
#define LOW_BORDER                -30
#define HIGH_BORDER                30
 
 
int main(void)
{
    srand(time(NULL));
 
    // Variables initialization
    int i, j;
    int arr[ARRAY_SIZE];
    int new_arr[NEW_ARRAY_SIZE];
    int del_el = 0, pos = 0, found = 0, shift = 0;
    
    for (i = 0; i < ARRAY_SIZE; i++)
    {
        // TASK1. Generating and printing in the console window generated array with rand() function
        arr[i] = rand() % (HIGH_BORDER - LOW_BORDER + 1) + LOW_BORDER;
        // TASK2. Outputting the generated array to the console
        printf("%d  ",arr[i]);
    }
    
    // Processing user's input of the element to be deleted
    printf("\nEnter the element to be deleted: ");
    scanf("%d", &del_el);
    
    // Search for the entered del_el element in array arr[ARRAY_SIZE]
    for (i = 0; i < ARRAY_SIZE; i++)
    {
        if (arr[i] == del_el)
        {
            found = 1;
            pos = i;
            break;
        }
    }
 
    if (found == 1) // If element was found(entered correctly)
    {
        for (i = 0, j = 0; i < ARRAY_SIZE, j < NEW_ARRAY_SIZE; i++,j++)
        {
            if (i == pos)
            {
                j--;
                continue;
            }
            new_arr[j] = arr[i];
        }
    }
    else // Jump here if user has entered the element which is not in the array
        printf("Element %d is not found in the vector\n", del_el);
    
    // TASK4. Shifting the array on the entered number of positions
    printf("Enter the value of the right shift: ");
    scanf("%d", &shift);
 
    shift %= NEW_ARRAY_SIZE;
    while (shift)
    {
        int tmp = new_arr[NEW_ARRAY_SIZE - 1];
        for (int i = NEW_ARRAY_SIZE - 1; i>0; i--)
            new_arr[i] = new_arr[i - 1];
            new_arr[0] = tmp;
            shift--;
    }
 
    // TASK5. Outputting the resultant array after all the operations
    printf("The resultant array after the removing of the element with the entered value is \n");
    for (i = 0; i < NEW_ARRAY_SIZE; i++)
    {
        printf("%d  ", new_arr[i]);
    }
    printf("\n");
    system("pause");
    return 0;
}

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

  1. Установить размер массива, границу нижнего и верхнего индексов
  2. Сгенерировать и вывести в консоль массив с помощью функции rand()
  3. Попросить пользователя ввести элемент для удаления
  4. Найти введенный элемент в массиве
  5. Создать новый массив с уменьшенным размером
  6. Сдвинуть элементы массива на введенное количество позиций вправо
  7. Вывести полученный массив в консоль

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


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

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

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