Сдвиг массива | Кто может объяснить условие? - C (СИ)
Формулировка задачи:
Переставить последний элемент массива на место k-го элемента. При этом k-й,(k+1)-й, ..., предпоследний элементы сдвинуть вправо на 1 позицию.
Покажите пример. Например изначально дано 1234567 k=2 , и что в итоге должно получиться???Решение задачи: «Сдвиг массива | Кто может объяснить условие?»
textual
Листинг программы
#include <stdio.h> #include <locale.h> int main() { setlocale(LC_ALL, "Ru"); int a[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; size_t n = sizeof(a) / sizeof(a[0]); size_t k,i; scanf("%d", &k); i=n-1; if(k==0 || k>n-1) {printf("Нет такой позиции!\n"); return 0;} k-=1; int lastElement = a[n-1]; for(; i!=k; --i) { a[i]=a[i-1]; } a[k] = lastElement; for ( i=0; i<n; i++) printf("%d ", a[i]); printf("\n"); return 0; }
Объяснение кода листинга программы
- Включаем заголовочный файл
для работы с вводом/выводом - Включаем заголовочный файл
для установки локали - Устанавливаем локаль на русскую с помощью функции setlocale(LC_ALL,
Ru
) - Создаем массив a типа int с семью элементами и инициализируем его значениями от 0 до 6
- Вычисляем размер массива n с помощью выражения sizeof(a) / sizeof(a[0])
- Запрашиваем у пользователя значение k с помощью функции scanf() и сохраняем его в переменную k
- Вычисляем индекс i равный n-1
- Проверяем, что k не превышает размер массива n-1 и выводим сообщение
Нет такой позиции!
и завершаем программу, если условие выполняется - Уменьшаем значение k на 1, чтобы корректно работать со сдвигом массива
- Сохраняем последний элемент массива a[n-1] в переменную lastElement
- Используем цикл for для сдвига элементов массива a с i=n-1 до i=k-1. Значение i уменьшается на 1 на каждой итерации цикла.
- На каждой итерации цикла a[i] присваивается значение a[i-1], т.е. элементы сдвигаются вправо
- Последний элемент массива a[k] присваивается значение lastElement, т.е. элементы сдвигаются влево до заполнения нужных позиций
- Используем цикл for для вывода всех элементов массива a на экран с помощью функции printf()
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д