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