Переставить последний элемент динамического массива на место k-ого элемента - C (СИ)

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

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

Переставить последний элемент массива на место k-ого элемента. При этом k-ый, (k+1)-ый,..., предпоследний элементы сдвинуть вправо на 1 позицию.

Решение задачи: «Переставить последний элемент динамического массива на место k-ого элемента»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
 
void array_shift(int *pt, int n, int k) {
 
    int temp, i;
    temp = pt[n - 1];
    for  (i = n-1; i > k; i--)
    {
        pt[i] = pt[i - 1];
    }
    pt[k] = temp;
}
 
int main(void) {
    int i, k, n;
    int *mas = (int*)malloc(N*sizeof(int));
    printf("Enter size of array ");
    scanf_s("%d", &n);
    printf("\n");
    srand(time(NULL));
    for (i = 0; i<n; ++i) 
        {
            mas[i] = rand() % 100;
            printf("%d\t", mas[i]);
        }   
    printf("Enter value of k ");
    scanf_s("%d", &k);
    array_shift(mas, n, k);
    printf("\n");
    for (i = 0; i<n; ++i)
    {
        printf("%d\t", mas[i]);
    }
    free(mas);
    system("pause");
    return 0;
}

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

В данном коде выполняется перестановка последнего элемента динамического массива на место k-ого элемента.

  1. В начале программы подключаются необходимые заголовочные файлы: • stdio.h - для работы с функциями ввода-вывода; • stdlib.h - для работы с функцией malloc и free; • time.h - для инициализации генератора случайных чисел.
  2. Затем определяются переменные: • N - размер массива; • n - количество элементов в массиве; • k - номер элемента, на который необходимо переставить последний элемент массива; • mas - указатель на начало массива.
  3. Далее, в функции main, запрашивается размер массива и сохраняется в переменной n.
  4. Массив инициализируется случайными числами от 0 до 99 с помощью функции rand().
  5. После вывода начального состояния массива, запрашивается номер элемента, на который необходимо переставить последний элемент массива.
  6. Вызывается функция array_shift, которая переставляет последний элемент массива на место k-ого элемента.
  7. Выводится обновленное состояние массива.
  8. В конце программы выполняется освобождение памяти, выделенной под массив, с помощью функции free().

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

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