![](/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.