Вставка элемента в массив с позицией - PullRequest
0 голосов
/ 14 мая 2019

При вставке в массив мы знаем, что индекс начинается с 0. Итак, если мы хотим вставить элемент в позицию 3, мы должны ввести ввод в позицию 2. Для удобства чтения я хотел бы указать правильное местоположениепозиция 3 означает точно 3, а не 2.

Вот фрагмент кода.

printf("In which position you want to enter the element? ");
scanf("%d",&k);

for (j=n; j>=k; j--)
{
    array[j+1]=array[j];
}

printf("Which element do you want to insert? ");
scanf("%d", &item);

array[k]=item;

n++;

Пример вывода:

How many elements? 5
Enter the values
1
2
4
5
6
In which position you want to enter the element? 2
Which element do you want to insert? 3
After insertion the array is:
1
2
3
4
5
6

Я хочу позициюбыть в 3.

1 Ответ

0 голосов
/ 14 мая 2019

Этот код должен работать.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int *array;

    int size = 0;

    int position, value;

    printf("How many elements do you want to add? ");
    scanf("%d", &size);

    printf("\nEnter the values: \n");

    // allocate the array
    array = malloc(size * sizeof(int));

    // insert the elements
    for(int i = 0; i < size; i++) {
      scanf("%d", &array[i]);
    }

    // print the array
    for(int i = 0; i < size; i++) {
      printf("%d ", array[i]);
    }
    printf("\n");

    // read the position
    printf("In which position you want to enter the element? ");
    scanf("%d",&position);

    // resize the array
    size++;
    array = realloc(array, size * sizeof(int));

    // set the position to the true value
    position--;

    // read the value
    printf("Which element do you want to insert? ");
    scanf("%d", &value);

    // move the elements
    for(int i = size - 1; i > position; i--) {
      array[i] = array[i - 1];
    }

    // insert the array
    array[position] = value;

    // print the value
    for(int i = 0; i < size; i++) {
      printf("%d ", array[i]);
    }
    printf("\n");
}

Конечно, вы должны реализовать некоторую обработку ошибок.Особенно за выдел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...