Осуществить сдвиг элементов массива в направлении младших индексов на заданное количество позиций - C (СИ)
Формулировка задачи:
Осуществить сдвиг элементов массива Y (m) в направлении младших индексов на заданное количество позиций k <m заполняя нулями позиции, какие освобождаются
помогите , массивы не понимаю .
Решение задачи: «Осуществить сдвиг элементов массива в направлении младших индексов на заданное количество позиций»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- int gen_rand_range(int start, int stop) {
- return (rand() % (stop - start));
- }
- // Смещение элементов массива влево
- void shift_left(int m, int k, int *arr) {
- int i = k; // Для просмотра массива с точки отсчета
- for(; i < m; ++i) {
- arr[i - k] = arr[i]; // смещение елемнта влево
- }
- // заполнение нолями
- for(i = m - k; i < m; ++i) {
- arr[i] = 0;
- }
- }
- void print_array(int m, int *arr) {
- int i = 0;
- int line = m / 2;
- for(; i < m; ++i) {
- if(i == line) {
- fprintf(stdout, "\n");
- }
- fprintf(stdout, "%3d ", arr[i]);
- }
- }
- void init_array(int m, int start, int stop, int *arr) {
- int i = 0;
- for(; i < m; ++i) {
- arr[i] = gen_rand_range(start, stop);
- }
- }
- int main(int argc, char *argv[]) {
- srand(time(NULL));
- int SIZE = 10;
- int POINT = 4;
- int arr[SIZE];
- init_array(SIZE, 0, 5, arr);
- print_array(SIZE, arr);
- fprintf(stdout, "\n---------------------\n");
- shift_left(SIZE, POINT, arr);
- print_array(SIZE, arr);
- fprintf(stdout, "\n---------------------\n");
- return 0;
- }
Объяснение кода листинга программы
- #include
, #include , #include - включение необходимых для работы программы заголовочных файлов - int gen_rand_range(int start, int stop) - генерация случайного числа в заданном диапазоне
- *void shift_left(int m, int k, int arr)** - сдвиг элементов массива влево на k позиций
- *void print_array(int m, int arr)** - вывод элементов массива на экран в виде столбца
- *void init_array(int m, int start, int stop, int arr)** - инициализация элементов массива случайными числами в заданном диапазоне
- *int main(int argc, char argv[])** - точка входа в программу
- srand(time(NULL)); - инициализация генератора случайных чисел текущим временем
- int SIZE = 10;, int POINT = 4; - определение размеров массива и количества сдвигаемых элементов
- int arr[SIZE]; - создание массива типа int на 10 элементов
- init_array(SIZE, 0, 5, arr); - инициализация массива случайными числами от 0 до 5
- print_array(SIZE, arr); - вывод инициализированного массива на экран
- fprintf(stdout,
\n---------------------\n
); - разделительный столбец на экране - shift_left(SIZE, POINT, arr); - сдвиг элементов массива влево на 4 позиции
- print_array(SIZE, arr); - вывод измененного массива на экран
- fprintf(stdout,
\n---------------------\n
); - разделительный столбец на экране - return 0; - завершение работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д