Вращение массива с указанным c номером вращения - PullRequest
0 голосов
/ 21 февраля 2020

Итак, я пытаюсь выполнить операцию поворота указанное количество раз.

#include <iostream>
using namespace std;
void result_arr_one_rotation (int arr [], int n){
  // int one_rotate_arr[n];
  int p=arr[0];
   for (int i=0;i<n-1;++i){
    arr[i]=arr[i+1];
  }
  arr[n]=p;
  //return arr;
}


int main(){
//n stands for total number of elements in array and d stands for number of rotation
  int n,d;
  cin>>n>>d;
  int arr[n];
  //to take elements of array
  for(int i=0;i<n;i++){
    cin>>arr[i];
  }
  //int rotated_arr[n];
  for (int i=0;i<d;i++){
      result_arr_one_rotation(arr,n);
      //cout<<arr[i]<<" ";
  }
  for (int i=0;i<n;i++){
    cout<<arr[i]<<" ";
  }

  return 0;
}

Теперь функция result_arr_one_rotation вращает элементы на один индекс. Чтобы сохранить 0-й элемент индекса, я создал переменную p, которая была назначена наконец. Вы можете увидеть это по строке 'arr [n] = p'. Теперь я повернулся в d раз, так как пользователь может свободно использовать, сколько раз он вращается. И тогда я просто распечатываю элементы.

Теперь вот проблема, когда я дал такие данные, как

5 which is number of elements(n)
2 number of rotation d
1 2 3 4 5 -> answer it should be
3 4 5 5 5-> this is the answer comes out

Пожалуйста, кто-нибудь скажите мне, что я сделал неправильно здесь

1 Ответ

0 голосов
/ 21 февраля 2020

Последний индекс, который вы используете в этом l oop

for (int i=0;i<n-1;++i){
    arr[i]=arr[i+1];
}

, равен n-2. Допустимые индексы в массивах - от 0 до размера-1. Здесь

arr[n]=p;

вы получаете доступ к массиву за пределами. Если вы хотите назначить последний элемент, это будет arr[n-1] = p;

Если вы не хотите использовать std::rotate, потому что это упражнение, я все равно призываю вас используйте std::vector, потому что вы используете массив переменной длины, который не является стандартным C ++. На самом деле в C ++ нет необходимости в VLA, потому что он имеет std::vector. Они больше похожи на C, и g cc предлагает их как нестандартное расширение также в C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...