這個賦值要求使用3個輸入文件和3個輸出文件,但現在我只嘗試一個。該程序應該包含一個函數模板,用於按升序對數組值進行排序。該函數將接收一個無序數組並返回一個有序數組。該功能不應該執行任何輸入或輸出。C++輸入輸出排序
我的代碼中存在如下所示:
#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的多次遞歸正在讓我失望。任何幫助將不勝感激。
** C++不是Java。**除非必要,否則不要使用'new'。 'main'函數總是返回** int ** **。 –
有很多關於閱讀數字的例子,請嘗試搜索「stackoverflow C++讀取文件」。 –
你應該首先閱讀所有的數字,然後一旦閱讀,你排序的數字。你的代碼似乎是讀取第一個數字,排序,讀取下一個數字,排序兩個數字等。所以它看起來像一個基本的邏輯問題,而不是知道Java和不知道C++之間的問題。 – PaulMcKenzie