Осуществить сдвиг элементов массива в направлении младших индексов на заданное количество позиций - 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; - завершение работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д