私のプログラムでは、数字のファイルを読み込もうとしています。私は最初の数字をとり、その数字を配列のサイズにしたいと思います。ファイルを閉じた後、同じファイルを再度開き、残りの数字を配列に格納したいと思います。配列では、バブルソートアルゴリズムを使用して数値をソートし、配列を昇順で表示したいと考えています。txtファイルを2回開くC++
int readData(int * arr);
void bsort(int * arr, int last);
void writeToConsole(int * arr, int last);
void swap(int, int);
int main()
{
ifstream inFile("data.txt");
int arrSize;
inFile >> arrSize;
int * arr = new int[arrSize];
inFile.close();
readData(arr);
writeToConsole(arr, arrSize);
system("pause");
return 0;
}
int readData(int * arr)
{
ifstream read("data.txt");
int index = 0;
for(int i = 0; i < 10; i++)
{
read >> *(arr + index);
index++;
}
read.close();
return *arr;
}
void bsort(int * arr, int last)
{
for (int i = last - 1; i >= 0; i--)
{
for (int j = 1; j <= i; j++)
{
//this block is constant with respect to array size
if (*(arr + (j - 1)) > *(arr + j))
{
int temp = *(arr + (j - 1));
*(arr + (j - 1)) = *(arr + j);
*(arr + j) = temp;
}
}
}
}
void writeToConsole(int * arr, int last)
{
bsort(arr, last);
for (int i = 0; i < last; i++)
{
cout << *(arr + i) << " ";
}
}
void swap(int x, int y)
{
int temp = x;
x = y;
y = temp;
}
つまり、初めてファイルを読み取るときに、格納されている数値が配列のサイズを表します。 2回目にファイルを読むと、最初の番号をスキップして次の番号に進みます。ファイルを読むとき、最初の番号をスキップするにはどうしたらいいですか?どんな助けでも大歓迎です。
ここで私が読みたいファイルの情報です:
9
8
4
7
2
9
5
6
1
3
領域を割り当てる方法上の任意のヒントをして、データを読んで?私は別のポインタ変数を作成することを考えていますが、それは非常に効果的ではないと思います。アドバイスをいただければ幸いです。ありがとう! –