zzzt
Джа велик! Джа жив! Слава Джа!
Итак. Мне нужно получить от пользователя массив на любое количество элементов (N), а потом сделать сдвиг вправо (K). K естественно задается пользователем, но по условию K строго меньше N.
Особенность: сдвиг "циклический" - элементы с правого края при нехватки "места" переносятся в начало массива.
Нет, не думайте, я не прошу написать программу за меня. Я спокойно написал программу по получению от пользователя массива любого размера. Также я подумал, что будет удобно сдвигать числа при помощи второго, пустого массива идентичного размера. Вот:
В данном случае вот этот кусок:
Есть попытка организовать сдвиг, но она не работает. Это всего лишь один из десятков вариантов. Я уже голову сломал)
Прошу помочь составить алгоритм сдвига.
Большое спасибо заранее
Попросил помощи на профессианальном форуме программистов. Привели слишком сложные примеры. Мне нужен только алгоритм. Я так понимаю это как и у меня должен быть цикл с несколькими условиями типа if
Особенность: сдвиг "циклический" - элементы с правого края при нехватки "места" переносятся в начало массива.
Нет, не думайте, я не прошу написать программу за меня. Я спокойно написал программу по получению от пользователя массива любого размера. Также я подумал, что будет удобно сдвигать числа при помощи второго, пустого массива идентичного размера. Вот:
Код:
#include <stdio.h>
#include <fstream.h>
#include <alloc.h>
#include <conio.h>
void main ()
{
clrscr();
int *A,N,K,i,*B;
printf(" Введите количество элементов массива: ");
scanf("%d",&N);
A=(int*)malloc(N*sizeof(int));
B=(int*)malloc(N*sizeof(int));
for(i=0;i<N;i++)
{
printf(" Введите A[%d]= ",i); scanf("%d",&A[i]);
}
printf("\n\n МАССИВ:\n");
for(i=0;i<N;i++)
{
printf(" %d",A[i]);
}
printf("\n\n Введите число сдвигов [=>]: "); scanf("%d",&K);
if(K>=N||K==0) printf(" !!! Сдвиг невозможен");
for(i=0;i<N;i++)
{
if(i==0) B[i]=A[N-1];
else B[i]=A[i-K];
}
printf("\n\n МАССИВ:\n");
for(i=0;i<N;i++)
{
printf(" %d",B[i]);
}
free(B);
free(A);
getch();
}
Код:
for(i=0;i<N;i++)
{
if(i==0) B[i]=A[N-1];
else B[i]=A[i-K];
}
Прошу помочь составить алгоритм сдвига.
Большое спасибо заранее
Попросил помощи на профессианальном форуме программистов. Привели слишком сложные примеры. Мне нужен только алгоритм. Я так понимаю это как и у меня должен быть цикл с несколькими условиями типа if