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