[在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 ++中输出错误数字的数组的主要内容,如果未能解决你的问题,请参考以下文章

急!!!C语言:输出两组数组中相同的数字

怎样在c语言中输入不少于10个数字的数组,急求

编程算法 - 和为s的两个数字 代码(C)

为啥这段代码输出这么多数字? [复制]

JavaScript数字数组怎么按数字大小排序?

在c语言中怎么输入一组数字存储在数组里