![](/img/trans.png)
[英]How to read (small) integers from ASCII text files into adequate data arrays in C++
[英]C++: How to swap integers in text files?
編寫一個程序來讀取兩個輸入文件“input1.txt”和“input2.txt”,它們只包含整數。 該程序應形成一個output文件“output.txt”。 該程序應將兩個輸入文件合並為一個 output 文件。 程序應該比較從兩個文件中讀取的數字。 在第一列寫一個較小的數字,在第二列寫一個更大的數字。 在第三列中,寫下哪個文件中的數字較小。 如果它們相同,請在第三欄中寫“相同”。
我在使用這個程序時遇到了問題,因為首先我是一個初學者,而且我還在學習。 到目前為止,這是我的代碼,它不完整,但我不知道下一步該做什么。
int number1, number2, counter1 = 0, counter2 = 0, pom = 0;
ifstream input1;
ifstream input2;
ofstream output;
while (input1 >> number1) {
counter1++;
output << number1 << " ";
}
while (input2 >> number2) {
counter2++;
output << number2 << " ";
}
if (counter1 > counter2)
pom = number1;
for (int i = 0; i < counter1; i++) {
input1 >> number1;
input2 >> number2;
if (number1 < number2)
{
output << number1 << number2;
output << "First" << "\n";
}
else if (number1 > number2)
{
number1 = number2;
number2 = pom;
output << number1 << number2;
output << "Second" << "\n";
}
else
{
output << number1 << number2;
output << "Same" << "\n";
}
}
input1.close();
input2.close();
output.close();
return 0;
這是一個簡單的例子:
while ((input1 >> number1) && (input2 >> number2))
{
if (number1 == number2)
{
output << number1 << "\t" << number2 << "\t" << "Same\n";
}
else
{
if (number1 < number2)
{
output << number1 << "\t" << number2 << "\t" << "First\n";
}
else
{
output << number2 << "\t" << number1 << "\t" << "Second\n";
}
}
}
在上面的示例中,兩個數字都被讀取。 while
循環已經開始。
我喜歡先從==
條件開始,通常以 2 次比較結束,並且可以很好地嵌套。
編輯1:output 簡化
還有一個替代方案,它只有一個 output 語句:
while ((input1 >> number1) && (input2 >> number2))
{
int largest;
int smallest;
std::string result;
if (number1 == number2)
{
smallest = number1;
largest = number1;
result = "Same";
}
else
{
if (number1 < number2)
{
smallest = number1;
largest = number2;
result = "First";
}
else
{
smallest = number2;
largest = number1;
result = "Second";
}
}
output << smallest << "\t" << largest << "\t" << result << "\n";
}
您的代碼有很多錯誤。 就像您沒有向 stream 函數提供輸入一樣,您首先計算位數然后進行比較。 此代碼功能齊全。
[input1.txt]
1 2 4 5 6 7 8 8
[input2.txt]
1 9 8 7 6 5 3 4
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int number1, number2;
ifstream f1("input1.txt");
ifstream f2("input2.txt");
ofstream output("output.txt");
if (!f1.is_open() || !f2.is_open() || !output.is_open())
{
cout << "One of your file isn't opening.";
return 0;
}
while ((f1 >> number1) && (f2 >> number2))
{
if (number1 > number2)
output << number1 << " " << number2 << " First\n";
else if (number2 > number1)
output << number2 << " " << number1 << " Second\n";
else
output << number1 << " " << number2 << " same\n";
}
f1.close();
f2.close();
output.close();
return 0;
}
[output.txt]
1 1 same
9 2 Second
8 4 Second
7 5 Second
6 6 same
7 5 First
8 3 First
8 4 First
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.