Осуществить сдвиг элементов массива в ​​направлении младших индексов на заданное количество позиций - C (СИ)

Формулировка задачи:

Осуществить сдвиг элементов массива Y (m) в ​​направлении младших индексов на заданное количество позиций k <m заполняя нулями позиции, какие освобождаются помогите , массивы не понимаю .

Код к задаче: «Осуществить сдвиг элементов массива в ​​направлении младших индексов на заданное количество позиций - C (СИ)»

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;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

15   голосов, оценка 3.800 из 5


СДЕЛАЙТЕ РЕПОСТ