Составить 2 функции. Одна из функций циклически сдвигает массив длины N вправо на k позиций, а другая - на k позиций вле - C (СИ)
Формулировка задачи:
Составить 2 функции. Одна из функций циклически сдвигает массив длины N вправо на k позиций, а другая - на k позиций влево.
1. Составить функцию с оператором return.
2. Преобразовать функцию к void-функции, составленную в рамках языка С.
3. Преобразовать функцию к void-функции, использующую возможно*сти языка C++.
Решение задачи: «Составить 2 функции. Одна из функций циклически сдвигает массив длины N вправо на k позиций, а другая - на k позиций вле»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> void shift_left (int* a, const int n, int k) // сдвиг влево { if (k<0) return; int i, f, t, m = n-1; if (k>n) k %= n; for (i=0; i<k; i++) { t = a[0]; for (f = 1; f<n; f++) a[f-1] = a[f]; a[m] = t; } } int main (void) { srand(time(NULL)); // точка отсчета рнд const int n = 6; // размер массива int a[n]; // массив int i, k; for (i=0; i<n; i++) { a[i] = rand() %n; // заполняем массив случайными printf("%4d", a[i]); // выводим на экран } printf("\n"); printf("input K, please: "); // узнаем величину сдвига влево scanf("%i", &k); shift_left(a, n, k); // сдвигаем влево на k позиций for (i=0; i<n; i++) // массив снова на экран printf("%4d", a[i]); printf("\n"); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем функцию
shift_left
, которая принимает три аргумента: указатель на массив, его размер и величину сдвига. Функция осуществляет сдвиг элементов массива влево на указанное количество позиций - В функции
main
генерируем случайные значения для массива с помощью функцииrand()
. Выводим массив на экран - Запрашиваем у пользователя величину сдвига с помощью функции
scanf()
. Осуществляем сдвиг элементов массива с помощью функцииshift_left()
- Выводим массив после сдвига на экран
- Возвращаем 0, чтобы указать на успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д