我已经为数组旋转编写了一个 cpp 代码,文件处理部分对我来说有点棘手。代码本身是正确的,但即使文件与代码位于同一目录中,它也因某种原因无法正常工作
#include <math.h>
#include <algorithm>
#include <bits/stdc++.h>
#include <iostream>
#include <fstream>
using namespace std;
int ar[100];
// #define crap ios_base::sync_with_stdio(false);cin.tie(NULL);
int gcd(int a, int b)
{
if (b == 0)
return a;
else
return gcd(b, a % b);
}
void leftRotate(int arr[], int d, int n)
{
d = d % n;
int g_c_d = gcd(d, n);
for (int i = 0; i < g_c_d; i++) {
int temp = arr[i];
int j = i;
while (1) {
int k = j + d;
if (k >= n)
k = k - n;
if (k == i)
break;
arr[j] = arr[k];
j = k;
}
arr[j] = temp;
}
}
//int *func(int m)
//{
// int *p;
// p=new int[m];
// return (p);
//}
int main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
// crap;
int n,d;
cin>>n>>d;
// ar=func(n);
// cout<<sizeof(ar);
for (int i=0;i<n;i++)
{
cin>>ar[i];
}
leftRotate(ar, d, n);
for (int i = 0; i < n; i++)
cout << ar[i] << " ";
return 0;
}
代码本身正在工作并在终端中返回正确的输出,但我似乎无法在这里找到问题,我在没有文件处理的情况下尝试过,它在终端示例输入处给出了返回值 3221225620 是:
5 2
1 2 3 4 5
这里显示了一个可能的错误:
3221225620 (0xC0000094): Zero Division Error
意味着代码中的除数有时可能为零。
至于您的代码(第 20 行:)d = d % n;
,当您n
是时0
,输出将显示return value 3221225620
所以请检查您的数据 "input.txt"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句