Осуществить сдвиг массива вправо на k позиций - C (СИ)

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

Осуществить сдвиг вправо на k позиций, где k-число элементов, расположенных между его минимальным и максимальным элементами

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

textual
#include <stdio.h>
#include <math.h>
#define N 10
 
int IndexMin (int *mas)
{
    int i;
    int min = 0;
    for (i=1; i<N; i++)
        if (mas[i] < mas[min])
            min = i;
    return min;
}
 
int IndexMax (int *mas)
{
    int i;
    int max = 0;
    for (i=1; i<N; i++)
        if (mas[i] > mas[max])
            max = i;
    return max;
}
 
void Shift (int *mas, int k)
{
    int i,j,tmp;
    for (i=1; i<=k; i++)
    {
        tmp = mas[N-1];
        for (j=N-1; j>0; j--)
            mas[j] = mas[j-1];
        mas[0] = tmp;
    }
}
 
int main()
{
    int a[N]={0};
    int i;
    for (i=0; i<N; i++)
    {
        printf ("A[%d] = ",i);
        scanf ("%d",&a[i]);
    }
    Shift (a,abs(IndexMax(a)-IndexMin(a)-1));
    for (i=0; i<N; i++)
        printf ("%d ",a[i]);
    printf ("\n");
    return 0;
}
Эта работа вам не подошла?

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

6   голосов, оценка 4.333 из 5


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