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

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

  1. #include , #include , #include - включение необходимых для работы программы заголовочных файлов
  2. int gen_rand_range(int start, int stop) - генерация случайного числа в заданном диапазоне
  3. *void shift_left(int m, int k, int arr)** - сдвиг элементов массива влево на k позиций
  4. *void print_array(int m, int arr)** - вывод элементов массива на экран в виде столбца
  5. *void init_array(int m, int start, int stop, int arr)** - инициализация элементов массива случайными числами в заданном диапазоне
  6. *int main(int argc, char argv[])** - точка входа в программу
  7. srand(time(NULL)); - инициализация генератора случайных чисел текущим временем
  8. int SIZE = 10;, int POINT = 4; - определение размеров массива и количества сдвигаемых элементов
  9. int arr[SIZE]; - создание массива типа int на 10 элементов
  10. init_array(SIZE, 0, 5, arr); - инициализация массива случайными числами от 0 до 5
  11. print_array(SIZE, arr); - вывод инициализированного массива на экран
  12. fprintf(stdout, \n---------------------\n); - разделительный столбец на экране
  13. shift_left(SIZE, POINT, arr); - сдвиг элементов массива влево на 4 позиции
  14. print_array(SIZE, arr); - вывод измененного массива на экран
  15. fprintf(stdout, \n---------------------\n); - разделительный столбец на экране
  16. return 0; - завершение работы программы

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

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