| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 198 人关注过本帖
标题:求助大神,如何在类的对象中编写一个比较函数,比较total最大值,输出最大值 ...
只看楼主 收藏
初心少年
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-12-28
结帖率:0
  已结贴   问题点数:20  回复次数:6   
求助大神,如何在类的对象中编写一个比较函数,比较total最大值,输出最大值的值和姓名?
#include<iostream>
using namespace std;
class teacher
{
public:
     teacher(char s[10],int a,int b,int c,int d);
private:
    char name[10];
    int wage;
    int fwage;
    int bonus;
    int total;
   
};
teacher::teacher(char s[10],int a,int b,int c,int d)
{
    strcpy(name,s);
    wage=a;
    fwage=b;
    bonus=c;
    d=a+b+c;
    total=d;
}
void main()
{

        teacher teach[5]={teacher("贾宇",2300,1980,2000,0),teacher("张莹",1908,2000,1000,0),teacher("李蒙",2490,1080,980,0),
            teacher("王同辽",980,1200,680,0),teacher("叶库伦",1290,1800,390,0)};
        teacher*q=teach;
        
}
2017-12-28 16:59
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:224
帖 子:5343
专家分:29807
注 册:2011-1-18
  得分:10 
听不懂,瞎猜猜
程序代码:
#include <iostream>
#include <string>

class teacher
{
public:
    teacher( const std::string& name, int wage, int fwage, int bonus );
private:
    std::string name_;
    int wage_;
    int fwage_;
    int bonus_;
    int total_;

    friend bool operator<( const teacher& lhs, const teacher& rhs ) noexcept;
    friend std::ostream& operator<<( std::ostream& os, const teacher& t );
};

teacher::teacher( const std::string& name, int wage, int fwage, int bonus )
                : name_(name), wage_(wage), fwage_(fwage), bonus_(bonus), total_(wage+fwage+bonus)
{
}

bool operator<( const teacher& lhs, const teacher& rhs ) noexcept
{
    return lhs.total_ < rhs.total_;
}

std::ostream& operator<<( std::ostream& os, const teacher& t )
{
    return os << '(' << t.name_ << ',' << t.wage_ << ',' << t.fwage_ << ',' << t.bonus_ << ',' << t.total_ << ')';
}

#include <algorithm>
//#include <iterator>
using namespace std;

int main( void )
{
    teacher teach[] = { teacher("贾宇",  2300,1980,2000)
                      , teacher("张莹",  1908,2000,1000)
                      , teacher("李蒙",  2490,1080, 980)
                      , teacher("王同辽", 980,1200, 680)
                      , teacher("叶库伦",1290,1800, 390) };

    //copy( begin(teach), end(teach), std::ostream_iterator<teacher>(cout,"\n") );

    auto itor = max_element( begin(teach), end(teach) );
    cout << *itor << endl;
}

2017-12-29 08:37
初心少年
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-12-28
  得分:0 
谢谢版主!!!但是作为c++新手我不太懂bool operator<( const teacher& lhs, const teacher& rhs ) noexcept
  friend bool operator<( const teacher& lhs, const teacher& rhs ) noexcept;
    friend std::ostream& operator<<( std::ostream& os, const teacher& t );这些是什么函数?望指教
附件: 您没有浏览附件的权限,请 登录注册
2017-12-29 09:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:224
帖 子:5343
专家分:29807
注 册:2011-1-18
  得分:0 
回复 3楼 初心少年
你用的是什么编译器,怎么连 noexcept specifier 都不认识?不过,没关系,你将noexcept删掉即可。

bool operator<( const teacher& lhs, const teacher& rhs )
是比较两个 teacher 对象的大小。
比如 teacher a=……, b=……;
a < b 即调用 operator<(a,b)

std::ostream& operator<<( std::ostream& os, const teacher& t );
是输出 teacher 对象
比如 cout << a 即调用 operator<<(cout,a)
2017-12-29 12:03
liaohs
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:5
帖 子:48
专家分:203
注 册:2017-11-26
  得分:10 
一个对象就是一个老师,没有最大问题。
只有管理所有老师的人,才能计算最大值。
因此,应该单独设置一个管理类,包含所有老师,类中设置一个方法,来求最大值。
2017-12-30 21:11
初心少年
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-12-28
  得分:0 
回复 3楼 初心少年
谢谢!谢谢版主!
2018-01-05 20:02
初心少年
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-12-28
  得分:0 
回复 4楼 rjsp
谢谢!启发很大
2018-01-05 20:03







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

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