字符串,整型,浮点型比较大小,使用运算符重载

  • 题目说明

 【问题描述】完成下面代码,使程序运行结果正确(求两对象的最大值)。
【输入形式】整数1 整数2 浮点数1 浮点数2 字符串1 字符串2
【输出形式】整数 浮点数 字符串
【样例输入】1 2 3.4 5.2 Zhang Li
【样例输出】2 5. Zhang

  • 题目要求 

 使用运算符重载解决这道题

  • 代码实现 
bool operator>(const String& test)
    {
        int i = 0;
        int a = (strlen(test.pData) < strlen(this->pData)) ? strlen(test.pData) : strlen(this->pData);
        for (i = 0; i < a; i++)
        {
            if (test.pData[i] > this->pData[i])
                return false;
            else
                return true;
        }
        if (i == a)
        {
            if (strlen(test.pData) < strlen(this->pData))
                return false;
            else
                return true;
        }

    }
  • 完整代码 
#include<iostream>
#include<string.h>
using  namespace  std;

class  String
{
        char*  pData;
public:
        String(){        pData  =  NULL;  }
        
        String(const  char*  pStr){
                  
int len=strlen(pStr);
				  pData=new char[len+1];
				  strcpy(pData,pStr);

        }
              //拷贝构造函数定义
              String(  
const  String &p
)
        {
                  
int len=strlen(pData);
             pData=new char[len+1];     
			 strcpy(pData,p.pData);

        }
        ~String()
        {
                
delete [] pData; 

        }

            //  ">"  运算符重载
          
bool operator>(const String& test)
    {
        int i = 0;
        int a = (strlen(test.pData) < strlen(this->pData)) ? strlen(test.pData) : strlen(this->pData);
        for (i = 0; i < a; i++)
        {
            if (test.pData[i] > this->pData[i])
                return false;
            else
                return true;
        }
        if (i == a)
        {
            if (strlen(test.pData) < strlen(this->pData))
                return false;
            else
                return true;
        }

    }


          //采用友元形式完成输出运算符重载
          friend  ostream&  operator  <<  (ostream&  out,  const  String&  obj);

};

//输出运算符重载
ostream&  operator  <<  (ostream&  out, const  String&  obj)

{
        cout  <<  obj.pData;
        return  cout;
}
//  设计GetMax函数模板
template<class T>

T GetMax(T a,T b)
{
    return (a > b) ? a : b;
}



int  main()
{
        int  aInt  =  0,  bInt  =  0;
        float  aFloat  =  0.0f,  bFloat  =  0.0f;
        char  temp[50];

        cin  >>  aInt  >>  bInt  >>  aFloat  >>  bFloat;

        cin  >>  temp;
        String  aString(temp);
        
        cin  >>  temp;
        String  bString(temp);

        cout  <<  GetMax(aInt,  bInt)  <<  "  ";

        cout  <<  GetMax(aFloat,  bFloat)  <<  "  ";

        cout  <<  GetMax(aString,  bString)  <<  endl;
          
}
  • 心得体会 

由于本人大一下学期学的是c++,因为它是一门考查课,导致课程安排比较少,学的感觉也比较浅,对于运算符重载呢,可以说我是不会的,但因为明天就要期末考试,便只能硬着头皮学并且希望可以弄懂。 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值