| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖
标题:关于函数辨别的问题
只看楼主 加入收藏
wxswuwuwu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-5-17
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:11 
关于函数辨别的问题
#include<iostream.h>
int chenji(int,int);
double chenji(double,double);
void main()
{
    int a,b,chenjic;
    cout<<"请输入a,b=";
    cin>>a>>b;
    chenjic=chenji(a,b);
    cout<<"a,b的乘积为"<<chenjic<<endl;
   
    double i,j,chenjid;
    cout<<"请输入i,j=";
    cin>>i>>j;
    chenjid=chenji(i,j);
    cout<<"i,j的乘积为"<<chenjid<<endl;
}
   
    int chenji(int x,int y)
    {
        int m;
        m=x*y;
        return m;
    }
   
    double chenji(double x,double y)
    {
        double m;
        m=x*y;
        return m;
    }
这个是一个求乘积的函数,但是只能分两次输入,第一次是整数,第二次是双精度,如果开始输入小树的话就会出现错误,我想把它修改成能够自动辨别整数和小数然后进行运算,但是想来想去貌似没有什么可行的方法,只能分两次输入,真的就这么悲剧么,还是干脆弃掉int只用double呢?
或者我在cin后加个if语句来辨别小数和整数可行么,但是加个if语句来辨别的话我又该如何来确定小数和整数呢……
残念……
搜索更多相关主题的帖子: return 
2011-05-18 10:25
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
残念=悖论
用double为准。

我们都在路上。。。。。
2011-05-18 11:05
Toomj
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:257
专家分:1826
注 册:2011-5-17
收藏
得分:5 
用函数重载呀,编译器会根据实参和形参的类型及个数的最佳匹配,自动决定调用哪一个函数。
2011-05-18 12:47
wxswuwuwu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-5-17
收藏
得分:0 
不是啊,我执行后直接输入小数,他默认的是第一个,结果就是错误结果了啊,数据溢出了啊
不能识别啊,郁闷了啊
2011-05-18 13:03
linw1225
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:110
专家分:145
注 册:2011-4-7
收藏
得分:1 
用模版,随你怎么输入。

Einmal ist keinmal
2011-05-18 14:19
lixinsbgtf
Rank: 1
等 级:新手上路
帖 子:1
专家分:3
注 册:2006-7-6
收藏
得分:3 
你的问题在于你分两次输入, 第一次的输入你定义的是整形,但是你却非得输入小数,这中情况肯定内存溢出。
就像你定义了16位长度的整型,你非得输入个32位长度的浮点型。不溢出才怪。
对于这种情况,最好就用浮点定义,输入的时候不管输入是整数还是小数,统统接受~!!
2011-05-18 14:35
张瑞涛
Rank: 1
等 级:新手上路
帖 子:8
专家分:8
注 册:2011-5-16
收藏
得分:1 
建议你看一下"模板类"和"函数重载"这个两个知识点,其实,上面的程序你已经用到函数重载了
2011-05-18 15:15
wxswuwuwu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-5-17
收藏
得分:0 
我知道用double就能解决啊,但是我想做成一个系统能够自动辨别整数和小数的啊
上面用的却是是函数重载啊,老实说我对函数重载理解的还不深,只知道能够调用里面的函数而已……
我用模板来试试再说吧……
2011-05-18 17:56
wxswuwuwu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-5-17
收藏
得分:0 
我这回写的应该是模板了吧,怎么还是不行啊
#include<iostream.h>
template<class T>
T chenji(T x,T y)
{
    T t;
        t=x*y;
    return t;
}
void main()
{
    int a,b,chenjic;
    cout<<"请输入a,b="<<endl;
    cin>>a>>b;
    chenjic=chenji(a,b);
    cout<<"a,b的乘积为"<<chenjic<<endl;
   
    double i,j,chenjid;
    cout<<"请输入i,j="<<endl;
    cin>>i>>j;
    chenjid=chenji(i,j);
    cout<<"i,j的乘积为"<<chenjid<<endl;
}
这回写的倒是有点模样了,直接输入小数可以运算两边,第一遍溢出,但是第二遍的结果也不对啊
如果还是先输入整数再输入小数就不会有问题,哪位高手帮忙修改下啊,是在无能为力了……
2011-05-18 18:08
wxswuwuwu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-5-17
收藏
得分:0 
好吧,我被无视了,结贴吧
2011-05-19 18:17
快速回复:关于函数辨别的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020279 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved