Сдвиг массива | Кто может объяснить условие? - 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;
}

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

  1. Включаем заголовочный файл для работы с вводом/выводом
  2. Включаем заголовочный файл для установки локали
  3. Устанавливаем локаль на русскую с помощью функции setlocale(LC_ALL, Ru)
  4. Создаем массив a типа int с семью элементами и инициализируем его значениями от 0 до 6
  5. Вычисляем размер массива n с помощью выражения sizeof(a) / sizeof(a[0])
  6. Запрашиваем у пользователя значение k с помощью функции scanf() и сохраняем его в переменную k
  7. Вычисляем индекс i равный n-1
  8. Проверяем, что k не превышает размер массива n-1 и выводим сообщение Нет такой позиции! и завершаем программу, если условие выполняется
  9. Уменьшаем значение k на 1, чтобы корректно работать со сдвигом массива
  10. Сохраняем последний элемент массива a[n-1] в переменную lastElement
  11. Используем цикл for для сдвига элементов массива a с i=n-1 до i=k-1. Значение i уменьшается на 1 на каждой итерации цикла.
  12. На каждой итерации цикла a[i] присваивается значение a[i-1], т.е. элементы сдвигаются вправо
  13. Последний элемент массива a[k] присваивается значение lastElement, т.е. элементы сдвигаются влево до заполнения нужных позиций
  14. Используем цикл for для вывода всех элементов массива a на экран с помощью функции printf()
  15. Возвращаем 0, чтобы указать, что программа успешно завершилась

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


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

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

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