#c #arrays
Вопрос:
Я решал проблему, которая описана ниже в коде. Это работает только для числа T=1, но когда я ставлю 2 (или выше), эта ошибка возникает при вводе второго набора чисел, которые помещаются во второй массив. Я новичок в программировании и понятия не имею, почему это происходит. Код работает для таких чисел, как: 1
/*
Monk and Rotation
Monk loves to preform different operations on arrays, and so being the principal of Hackerearth School, he assigned a task to his new student Mishki. Mishki will be provided with an integer array A of size N and an integer K , where she needs to rotate the array in the right direction by K steps and then print the resultant array. As she is new to the school, please help her to complete the task.
Input:
The first line will consists of one integer T denoting the number of test cases.
For each test case:
1) The first line consists of two integers N and K, N being the number of elements in the array and K denotes the number of steps of rotation.
2) The next line consists of N space separated integers , denoting the elements of the array A.
Output:
Print the required array.
*/
#include <string>
#include <iostream>
using namespace std;
void rotateArray(int t, int n, int k, int *K, int*N, int**A){
int *temp = new int[k];
int *temp2 = new int[n-k];
for(int i=0; i<k; i ){
temp[i] = A[t][(n-k) i];
cout<<temp[i]<<" ";
}
for(int j=0; j<n-k; j ){
temp2[j] = A[t][j];
cout<<temp2[j]<<" ";
}
}
int main(){
int T;
cin>>T;
int *K = new int [T];
int *N = new int [T];
int **A = new int*[T];
for(int i=0; i<T; i ){
cin>>N[i]>>K[i];
A[i] = new int [N[i]];
for(int j=0; j<N[i]; j ){
int temp;
cin>>temp;
A[i][j] = temp;
}
}
for(int k=0; k<T; k ){
rotateArray2(k, N[k], K[k], K, N, A);
}
return 0;
}
Комментарии:
1. Ваша ошибка, вероятно, здесь
int *temp2 = new int[n-k];
, возможно, k больше n, так что n-k отрицательно.