«Напишите программу, которая позволяет пользователю вводить целое число для размера массива. Рекомендуется использовать Malloc. Произвольно генерировать целое число для каждого элемента массива. несильно, чтобы повернуть массив Вращение массива означает, что каждый элемент сдвигается вправо или влево на один индекс, а последний элемент массива также перемещается на первое место»C Программирование - перемещение элементов в массиве
. Пример: 31 83 91
В каком направлении перемещаться и сколько раз? - Слева
Сколько раз вы хотели бы сменить? 2
Конечный результат: 91 31 83
В настоящее время мой код. Это не смещается.
#include <stdio.h>
#include <stdlib.h>
int main(){
int i, temp, swapped;
int SlotNumber;
int *ptr;
char direction;
int ShiftAmount;
printf("How many slots would you like in your array?\n");
scanf("%d", &SlotNumber);
for(i=0;i<SlotNumber;i++){
printf("%d \t", rand());
}
ptr = (int *)malloc(SlotNumber*sizeof(int));
printf("\nWhich direction would you like to shift it to? R/L?\n");
scanf(" %c", &direction);
printf("\nHow many times would you like to shift?\n");
scanf("%d", &ShiftAmount);
if((direction=='R')||(direction=='r')){
while(1){
swapped = 0;
for(i=0;i<ptr+1;i++){
if(ptr[1]>ptr[i+ShiftAmount]){
int temp = ptr[i];
ptr[i] = ptr[i+ShiftAmount];
ptr[i+ShiftAmount] =temp;
swapped = 1;
}
}
if(swapped == 0);
break;
}
}
printf("\nNewList\n");
for(i=0;i<ptr;i++){
printf("%d \t",ptr[i]);
}
return 0;
}
1) Вы не заполняете массив ptr ничем. 2) Вам просто нужно сдвинуть элементы. Вам все равно, каковы их значения, поэтому нет причин проверять, превышает ли значение элемента значение другого элемента. Однако вам нужно проверить, находится ли новая позиция внутри границ массива и предпринять соответствующие действия, если это не так. – FredK
Текст говорит, что вам нужно сдвинуть элемент '1'. Однако пример запрашивает у пользователя «сколько раз», которые они хотят сдвинуть. Таким образом, по существу это сдвиг элементов 'n'. Смещение с помощью элементов 'n' является более общей и более интересной задачей, чем смещение на' 1'. Итак, что на самом деле требуется? Сдвинуть на '1' или сдвинуть на' n'? Или требуется выполнить сдвиг на 'n' через последовательные смены на' 1'? – AnT