回 帖 发 新 帖 刷新版面

主题:用txt文件输入时的问题,请指点

求最大公约数
#include <iostream>
using namespace std;
int common_divisor(int x,int y);
int main()
{  
    int num1,num2;
    cin>>num1>>num2;
        if(num1<=0||num2<=0)
        cout<<"no GCD"<<endl;
    else
    cout<<"GCD("<<num1<<","<<num2<<")="<<common_divisor(num1,num2)<<endl;

    return 0;
}
int common_divisor(int num1,int num2)
{
    int r;
    if(num1<num2)
    {
        int temp;
        temp=num1;
        num1=num2;
        num2=temp;
    }

    while(num2!=0)
    {
        r=num1%num2;
        num1=num2;
        num2=r;
    }
    return num1;

}
比如in.txt文件内容是:
3 4
-1 4
5 7
34 6
在cmd中结果导出到out.txt文件后,发现out.txt文件只有3 4的结果
这个程序怎么写,才能按txt文件内容出答案呢?

回复列表 (共5个回复)

沙发

你上面没有文件相关代码啊?

板凳

"你上面没有文件相关代码啊?"什么意思?

3 楼

哦,我明白了,你是否是用DOS重定向将输出输出到文件,但是结果不是预期的?

4 楼

[quote]哦,我明白了,你是否是用DOS重定向将输出输出到文件,但是结果不是预期的?[/quote]
恩!
我想它输出所有的结果一次保存在out.txt里面

5 楼

问题是你的代码中一次只处理2个数字,也就是一次输入,所以你的out自然只有一个结果。

你可以在你的代码中修改成循环读取和输出,比如循环读取:

[code=c]
int main()
{  
    int num1, num2;

    // 循环读取,如果输入的不是数字,如输入字符,则停止
    while (cin >> num1 >> num2)    
    {
        if (num1<=0||num2<=0)
            cout<<"no GCD"<<endl;
        else
            cout << "GCD(" << num1 << "," << num2 << ") = " 
                 << common_divisor(num1,num2) << endl;
    }
    return 0;
}
[/code]

我来回复

您尚未登录,请登录后再回复。点此登录或注册