所以我的问题是为什么我的第四个功能不能按预期运行?它应该是一个数组,然后将其转换为另一个数组的反向副本,我觉得逻辑是合理的,但是最终,当我打印它时,它只是吐出了垃圾数据。我是学生,这是一堂课,我已经给老师发了电子邮件,但她几乎从不回应,所以我想我会问你们。在有人说重复之前,我知道如何反向复制数组还有其他事情,但是我想知道我的逻辑是错的。是什么让这个不起作用。
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <cmath>
using namespace std;
void inputData(ifstream& y, int x[], int a);
void printData(ofstream& y, const int x[], int a);
void copyArray(const int orig[], int dup[], int a);
void revCopy(const int orig[], int rev[], int a);
int main()
{
const int size = 10;
int arr1[size];
int dup[size];
int revdup[size];
ifstream infile;
ofstream outfile;
inputData(infile, arr1, size);
printData(outfile, arr1, size);
copyArray(arr1, dup, size);
revCopy(dup, revdup, size);
printData(outfile, revdup, size);
system("pause");
return 0;
}
void inputData(ifstream& y, int x[], int a)
{
y.open("infile.txt");
for (int i = 0; i < a; i++)
{
y >> x[i];
}
y.close();
}
void printData(ofstream& y, const int x[], int a)
{
y.open("outfile.txt");
for (int i = 0; i < a; i++)
{
y << " " << x[i];
}
y.close();
}
void copyArray(const int orig[], int dup[], int a)
{
for (int i = 0; i < a; i++)
{
dup[i] = orig[i];
cout << dup[i] << endl;
}
}
void revCopy(const int orig[], int rev[], int a)
{
for (int i = a; i >= 0; i--)
{
int n = 0;
rev[n] = orig[i];
cout << rev[n] << " " <<orig[i] << endl;
n++;
}
}
任何帮助将不胜感激。我使用输入文本文件制作第一个数组,然后输出一个数组,然后将最后一个数组输出到文本文件,以检查它是否有效。前三个功能可以正常工作,但最后一个功能并没有给我以我所希望的那样,我对原因感到困惑。
答案 0 :(得分:0)
事实证明,由于累了,这只是几个愚蠢的错误。在我的revCopy方法中,我将int n = 0放入我的for循环中,这使它每次(显然)复位为零。我还尝试在[10]开始索引数组的反向副本。这是行不通的,因为数组中只有10个数据点(0-9),因此逻辑上最后一个数据点是[9]而不是10。一旦完成了这两个简单的更改,程序就可以正常运行。谢谢@ Blastfurnace,@ stark和@crack_iT的帮助。
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <cmath>
using namespace std;
void inputData(ifstream& y, int x[], int a);
void printData(ofstream& y, const int x[], int a);
void copyArray(const int orig[], int dup[], int a);
void revCopy(const int orig[], int rev[], int a);
int main()
{
const int size = 10;
int arr1[size];
int dup[size];
int revDup[size];
ifstream infile;
ofstream outfile;
inputData(infile, arr1, size);
printData(outfile, arr1, size);
copyArray(arr1, dup, size);
revCopy(dup, revDup, size);
printData(outfile, revDup, size);
system("pause");
return 0;
}
void inputData(ifstream& y, int x[], int a)
{
y.open("infile.txt");
for (int i = 0; i < a; i++)
{
y >> x[i];
}
y.close();
}
void printData(ofstream& y, const int x[], int a)
{
y.open("outfile.txt");
for (int i = 0; i < a; i++)
{
y << " " << x[i];
}
y.close();
}
void copyArray(const int orig[], int dup[], int a)
{
for (int i = 0; i < a; i++)
{
dup[i] = orig[i];
cout << dup[i] << endl;
}
}
void revCopy(const int orig[], int rev[], int a)
{
int n = 0;
for (int i = (a-1); i >= 0; i--)
{
rev[n] = orig[i];
cout << rev[n] << " " <<orig[i] << endl;
n++;
}
}