[在C ++中输出错误数字的数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[在C ++中输出错误数字的数组相关的知识,希望对你有一定的参考价值。
我的目标是让玩家为数组输入一堆数字,然后将该数组写入文本文件。它的另一部分是能够从文本文件中接收一堆数字,并将它们放入从高到低的排序数组中,然后输出该数组。但是由于某种原因,我遇到了很多错误,这些错误是我可以解决的一些研究带来的。不幸的是,在一种非常令人困惑的情况下,我通过输出数组的每个元素进行测试,以确保未排序的数组正确。这不是最终程序的一部分,而是目前的测试。我有一个for循环,它可以正常运行,并按预期输出每个数字。然后,在下一个for循环中,应该发生完全相同的事情,但是输出的数字都被弄乱了。我不明白如何。下面的代码
void readFile(string fName) {
string fileName = fName + ".txt";
ifstream myFile(fileName);
char c;
string num;
int count = 0;
// Bring the array from file to int array
while (!myFile.eof()) {
myFile.get(c);
if (isspace(c) && num != "") {
int n = stoi(num);
intArray[count] = n;
count++;
num = "";
continue;
}
if (!myFile.eof()) {
num += c;
}
}
for (int i = 0; i < 10; i++) {
cout << intArray[i] << endl;
}
// Sort the array higest to lowest
for (int i = 0; i < 10; i++) {
cout << intArray[i] << " ";
for (int j = 9; j >= i; j--) {
if (j == 0) {
continue;
}
if (intArray[j] > intArray[j - 1]) {
int temp = arr[j];
intArray[j] = intArray[j - 1];
intArray[j - 1] = temp;
}
}
cout << endl;
}
}
对上面的格式感到抱歉,它很奇怪,因此可以想象代码在函数内。
这是输出的内容:
1
2
3
4
5
6
7
8
99
234
1
1
1
1
1
1
1
1
1
1
系列1之前的数字是实际的数组,而1显然是根据代码最后一部分中cout的数组,它说cout << intArray [i]
答案
您的数组似乎已排序。全部被打印的原因是由于cout <<
在外部循环中的位置。
考虑内循环的第一次迭代后数组的外观:
234,1,2,3,4,5,6,7,8,99
现在考虑您已在外部循环中将i
递增到1。当您对数组intArray[i]
进行索引时,第i
个元素现在为1,因为您已将其正确移动到该位置。每次,您都将较小的元素上移到数组中的一个位置,然后索引到1
所在的位置。
请勿在对排序的数组进行排序时尝试打印它。而是将其循环并在排序后将其打印。
以上是关于[在C ++中输出错误数字的数组的主要内容,如果未能解决你的问题,请参考以下文章