注册 登录
编程论坛 C++教室

请问这个程序可以简化点吗,请各位高手指点~~

小茫 发布于 2010-10-12 17:45, 1048 次点击
编写一个程序,用来求两个整数或3个整数中的最大数。如果输入两个整数,程序就输出这两个整数中的最大数,如果输入3个整数,程序就输出这3个整数中的最大数(利用重载函数)。
下面这个是我自己写的,程序正确执行了,可是好像太繁琐了?
本人是菜鸟一只,不要笑话。。
#include<iostream>
using namespace std;

int  largest(int num1,int num2)
{
    if(num1>num2)
        return num1;
    else
        return num2;
}

int  largest(int num3,int num4,int num5)
{
    int  temp;

    if(num3>num4)
        temp=num3;
    else
        temp=num4;
   
    if(temp>num5)
        return temp;
    else
        return num5;
}

void main()
{
    cout<<"how many intergers to compare:";
   
    int  lar;
    int  times;
    cin>>times;
    if(times==2)
    {
        int  num1,num2;
        cin>>num1>>num2;
        lar=largest(num1,num2);
    }
    else
    {
        int  num3,num4,num5;
        cin>>num3>>num4>>num5;
        lar=largest(num3,num4,num5);
    }
   
    cout<<"\n";
    cout<<lar<<endl;
}
12 回复
#2
myth_feng2010-10-12 17:58
int  largest(int num3,int num4,int num5)
{
   return largest(largest(num3,num4),num5);
}
//调用第一个函数会简单一点。。。。
#3
寒风中的细雨2010-10-12 18:12
up
#4
lscalin2010-10-12 19:44
程序代码:
int  largest(int x, int y )
{

    return x>y?x:y;
}

int  largest(int x, int y, int z)
{

    return  largest(largest(x,y),z);
}我也来试试
借用了2楼兄弟的法子

[ 本帖最后由 lscalin 于 2010-10-12 19:46 编辑 ]
#5
tornador2010-10-12 21:25
#include<iostream>
using namespace std;
float com(float a,float b)
{
    return a>b?a:b;
}
float com(float a,float b,float c)
{
    return (a>b?a:b)>c?(a>b?a:b):c;
}
void main()
{
    float a,b,c;
    int n=0;
    cout<<"input the number you want to compare"<<endl;
    cin>>n;
    cout<<"input the numbers"<<endl;
    if(n==2)
    {
        cin>>a>>b;
        cout<<com(a,b)<<" is larger"<<endl;
    }
    else if(n==3)
    {
        cin>>a>>b>>c;
        cout<<com(a,b,c)<<" is largest"<<endl;
    }
    else
        cout<<"error  check the number"<<endl;
}
这个怎么样?
#6
yxwsbobo2010-10-12 21:45
程序代码:

int GetLargest(int a,int b,int c= 1<<(sizeof(int)*8-1))
{
    if(a>b)
        return (a>c?a:c);
    return (b>c?b:c);
}
#7
pangding2010-10-12 22:29
6楼的漂亮~
#8
寒风中的细雨2010-10-13 01:26
主函数用三个变量就可以
#9
lscalin2010-10-13 10:04
6楼的说实在没看懂,能否讲解下
#10
lintaoyn2010-10-13 11:50
回复 9楼 lscalin
int c= 1<<(sizeof(int)*8-1) //获取类型为int的数的最小的值。
sizeof(int)*8获取int占用的位的大小。
#11
lscalin2010-10-13 12:08
以下是引用lintaoyn在2010-10-13 11:50:14的发言:

int c= 1<<(sizeof(int)*8-1) //获取类型为int的数的最小的值。
sizeof(int)*8获取int占用的位的大小。
学习了,谢谢
#12
小茫2010-10-13 18:26
回复 5楼 tornador
不错不错~~ 这样看,其实能简化的还不少阿,哎,惭愧阿
#13
小茫2010-10-13 18:31
回复 6楼 yxwsbobo
真是太高了~高手。。请问一下这个是有三个参数的那个函数吗?
1