私は、2つのファイルから整数入力を受け取るプログラムを作成しようとしています。私は昇順に2つのファイルを持ち、出力ファイルはこれらの2つを1つのファイルにマージして、昇順に並べる必要があります。整数を2つの入力ファイルから昇順に並べ替える方法はありますか?
while((fscanf(inputFile1, "%d", &temp1) == 1) && (fscanf(inputFile2, "%d", &temp2) == 1))
{
printf("temp1: %d\n", temp1);
printf("temp2: %d\n", temp2);
if (temp1 > temp2)
{
fprintf(outputFile, "%d\n", temp2);
fprintf(outputFile, "%d\n", temp1);
}
else if (temp1 < temp2)
{
fprintf(outputFile, "%d\n", temp1);
fprintf(outputFile, "%d\n", temp2);
}
else if (temp1 == temp2)
{
fprintf(outputFile, "%d\n", temp1);
fprintf(outputFile, "%d\n", temp2);
}
}
File 1 File 2
5 1
10 43
30 55
50 98
345 500
Output
1
5
10
43
30
55
50
98
345
500
それはほぼ完了ですが、ファイルのいずれかが(> 43 30のような)別のファイル内の前の行よりも多い/少ない数を持っていたときに問題があります。出力が完全にソートされるように、この問題をどのように修正できますか?
同じ外部ループ制御内の両方のファイルを読み取らないでください。その他の条件を使用してください。その中で、ファイルから1つの値を読み込み続ける必要がありますが、それは他のファイルから現在保持されている値よりも小さい値です。フリップフロップの一種。残りの入力でメインループの後にクリーンアップすることを忘れないでください。 –
配列を使用できますか?それとも、あなたのプログラムはそれらなしで動作しますか? – atru