gpt4 book ai didi

C++ 输入输出排序

转载 作者:太空宇宙 更新时间:2023-11-04 13:28:32 26 4
gpt4 key购买 nike

作业要求使用 3 个输入文件和 3 个输出文件,但现在我只尝试一个。该程序应该包含一个函数模板,该模板按升序对值数组进行排序。该函数将接收一个无序数组并返回一个有序数组。该函数不应执行任何输入或输出。

我的代码如下:

#include <iostream>
#include <iostream>
#include <fstream>
using namespace std;

ifstream inNumbers("intTestRead.txt");
ofstream outNumbers("intTestWrite.txt");

template<typename int[], typename int> void SelectionSort(int[], int);
void SelectionSort(int v[], int n)
{
int iMin;
for (int i = 0; i < n - 1; i++)
{
iMin = i;
for (int j = i + 1; j < n; j++)
{
if (v[j] < v[iMin])
{
iMin = j;
}
}
int aux = v[i];
v[i] = v[iMin];
v[iMin] = aux;
}
}

void main()
{
int data[100];
int i;
int length = 0;

if (!inNumbers)
cerr << "intTestRead.txt file could not be opened" << endl;

for (i = 0; i < 100 && inNumbers; ++i)
{
inNumbers >> data[i];
if (inNumbers)
{
length += 1;
}

SelectionSort(data, length);
outNumbers << data[i] << endl;
}
}

我主要使用 Java 编程,现在刚开始使用 C++ 时,我对模板之类的东西感到困惑。排序功能是教授给我们的。我的阅读文件如下所示:

65 40 84 9 79 90 71 93 39 44

它应该是这样的:

9 39 40 44 65 71 79 84 90 93

但是看起来是这样的:

65
65
84
84
84
90
90
93
93
93
-858993460

^^ 我知道是因为我在新行中使用了 endl 结果,但是相同数字的多次递归 + -85 让我失望了。任何帮助将不胜感激。

最佳答案

不要在每次输入后调用排序函数。只需在所有输入准备就绪时调用它即可。

类似于:

void main()
{
int data[100];
int i;
int length = 0;

if (!inNumbers)
cerr << "intTestRead.txt file could not be opened" << endl;

for (i = 0; i < 100 && inNumbers; ++i)
{
inNumbers >> data[i];
if (inNumbers)
{
length += 1;
}
}

SelectionSort(data, length);

for (i = 0; i < length; ++i)
{
outNumbers << data[i] << endl;
}
}

关于C++ 输入输出排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32464704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com