oop-一道简单的OOP题目……不会做……求源程序 半小时内速求……

问题描述

一道简单的OOP题目……不会做……求源程序 半小时内速求……

有个虚拟足球俱乐部的球队经济人又新招了5名队员,他写了下面的代码,为新队员建了
一个数组,并输出数组的所有元素。其中字符串是队员的名字,而数字则是队员的年龄。
不过有个队员的名字他竟不记得了(他的名字只好用"???"表示,年龄为0)。
(1)请你为``队员"这种对象定义一个类(队员信息的输出格式自定),使程序能编译通
过(不应通过修改main()函数来完成此要求)。要求每个队员的姓名和年龄都是常量。
int main ( )
{
Member newCommers[5] = { Member( "Zhang San", 22),
Member( "Li Si", 19),
Member( "Wang Wu", 18),
Member ( "Zhao Liu", 24) };
for ( int i=0; i<5; i++)
cout << newCommers[i] << endl;
return 0;
}
(2)经济人在主程序中增加了下面的语句,想通过姓名的拼写来查询队员年龄。请你继
续他的工作,完成程序其他部分。
string name[5] = { "Zhang San", "Li Si",
"Wang Wu", "Zhao Liu",
"Pin Yin" };
MemberList list(newCommers , 5);
for (i=0; i<5; i++)
cout << list[name[i]] << endl;

解决方案

http://codepad.org/lTwqgCbo

 #include <iostream>
#include <string>
using namespace std;

class Member
{
    public:
    int age;
    string name;
    Member() { age = 0; name=""; }
    Member(string n, int a)
    {
        name=n;
        age=a;
    }
    friend ostream& operator << (ostream& output, Member& m)
    {
       if (m.age == 0)
           output<<"???"<<endl;
       else
           output<<m.name<<" "<<m.age<<endl;
       return output;
    }
};
int main()
{
Member newCommers[5] = { Member( "Zhang San", 22),
Member( "Li Si", 19),
Member( "Wang Wu", 18),
Member( "Zhao Liu", 24) };
for ( int i=0; i<5; i++)
cout << newCommers[i] << endl;
return 0;
}

Zhang San 22

Li Si 19

Wang Wu 18

Zhao Liu 24

???

解决方案二:

另一个问题请先采纳再提供,省得写了半天你跑了。

解决方案三:

 #include <iostream>
#include <string>
using namespace std;

class Member
{
    public:
    int age;
    string name;
    Member() { age = 0; name=""; }
    Member(string n, int a)
    {
        name=n;
        age=a;
    }
    friend ostream& operator << (ostream& output, Member& m)
    {
       if (m.age == 0)
           output<<"???"<<endl;
       else
           output<<m.name<<" "<<m.age<<endl;
       return output;
    }
    friend ostream& operator << (ostream& output, Member * m)
    {
       if (m->age == 0)
           output<<"???"<<endl;
       else
           output<<m->name<<" "<<m->age<<endl;
       return output;
    }
};
class MemberList
{
    private: Member* members;
    private: int count;
    public: MemberList(Member m[], int c)
    {
        members=m; count=c;
    }
    Member* const operator[](const string s)
    {
        for (int i=0;i<count;i++)
            if (members[i].name == s) return &members[i];
        return new Member();
    }
};
int main()
{
Member newCommers[5] = { Member( "Zhang San", 22),
Member( "Li Si", 19),
Member( "Wang Wu", 18),
Member( "Zhao Liu", 24) };
for ( int i=0; i<5; i++)
cout << newCommers[i] << endl;

string name[5] = { "Zhang San", "Li Si",
"Wang Wu", "Zhao Liu",
"Pin Yin" };
MemberList list(newCommers , 5);
for (int i=0; i<5; i++)
cout << list[name[i]] << endl;

return 0;
}

解决方案四:

http://codepad.org/XF13zSUr

Zhang San 22

Li Si 19

Wang Wu 18

Zhao Liu 24

???

Zhang San 22

Li Si 19

Wang Wu 18

Zhao Liu 24

???

时间: 2024-11-08 20:16:32

oop-一道简单的OOP题目……不会做……求源程序 半小时内速求……的相关文章

c++问题-一道简单的c++题目,求解此段代码错哪了

问题描述 一道简单的c++题目,求解此段代码错哪了 题目是第四题,求解此段代码错哪了 解决方案 你的sum每次枚举完n后,要清0 解决方案二: i在每次循环结束都要置0或1 否则从第二轮循环开始i都是从上次结束的地方开始的 所以没有输出

gui- 新手求教一道简单的字符串题目。。

问题描述 新手求教一道简单的字符串题目.. 假设一道包含n个单词的题,经蓝神读过之后,虽然单词的长度和 数量都没有变化,但内容可能已经面目全非了.现在,蓝神的队友需要你帮忙计算一下原题与蓝神读过之 后的题的相似度.单个单词相似度的计算方法是蓝神读之前和读过之后没有变化的字母个数除以单词长度 乘上百分之百,总的相似度等于所有单词相似度的平均值. Input 第一行一个整数T(T <= 200),代表蓝神读了T次题.每次第一行一个整数n(0 < n <= 100),代表这次的题有n个单词,接

一道简单的Map题目求解答

问题描述 packageMap;importjava.util.HashMap;importjava.util.Map;classDog{Stringname;Dog(Stringname){this.name=name;}@Overridepublicbooleanequals(Objectarg0){//TODOAuto-generatedmethodstubif((arg0instanceofDog)&&(((Dog)arg0).name==name)){System.out.pri

c++-求教简单C++ OOP题目 关于Log库的简易编写

问题描述 求教简单C++ OOP题目 关于Log库的简易编写 Log是用来对复杂程序进行调试的常用手段,用来实现log的库也是我们非常常用的程序 库之一.请你设计一个简化的log程序库,做到如下几点: a) 能够支持三种不同的log目的地(控制台.文件.数据库)及这三种目的地的自由 组合,目的地可以动态变化,未来可能需要加入更多种类的目的地(比如限制长度 的文件): b) 能够支持三种不同的log格式(简单不带任何附加信息,附带短格式表示的当前时 间,附带长格式表示的当前时间),格式可以动态变化

一道c语言的题目,求解答

问题描述 一道c语言的题目,求解答 有函数原型为void f(int,int *);主函数中有变量定义:int a,*p=&a,b[10];则下列几种调用错误的是: A·f(a,p) B·f(*p,b) C·f(b,&a) D·f(*p,p) 我的想法是:子函数要接收一个整形变量,一个指针变量,那么B选项中b不是指针常量么? 求助大神们解答!谢谢! 答案是C 解决方案 C B中 b 是数组名,可以看作 const 的指针 C中第一个参数是b,但实际参数是 int 解决方案二: B 选项中的

c++-求各位大神来看一道简单的C++题,

问题描述 求各位大神来看一道简单的C++题, 这里是题目,后面附上我码的程序 设计一个简单计算器.用户输入四则运算表达式,程序输出正确结果.当表达式中数据格式或运算符输入错误,程序给出错误信息.要求: (1)表达式的左.右操作数可以为整数或实数. (2)运算符限制为+,-,*,/ (3)输入表达式允许有前导空格,允许在运算符前后嵌入空格. 检测表达式由以下函数完成: void check(char *input, int &a, double &y, int &op, char *

c str-c++中c_str()函数--一道简单的机试题

问题描述 c++中c_str()函数--一道简单的机试题 题目描述:输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串.输入:测试数据有多组,输入字符串.输出:对于每组输入输出处理后的结果.样例输入:bacd样例输出:abcd源代码: #include#include#include#include#includeusing namespace std; int main() { int i = 0jnum; string in; char* arr = new char

有关一道遍历算法的题目

问题描述 有关一道遍历算法的题目 有道题目,有一个点A和若干点,所有的点之间都互相可以连通,并且该连线上都有一个对应的权值,如何设计算法从A点出发遍历所有的点然后回到A点,所得到的权值和最小,并且每个点都可以经过不止一次(没C币了抱歉啊) 解决方案 这个就是迪杰斯特拉算法么,你百度一下实现方法. 解决方案二: 听来的一道算法题目一道算法题目的解法分享一道很有意思的算法题目 解决方案三: 如果这个问题每个点都只能经过一次的话就是一个标准的旅行商(TSP)问题.你可以百度下,解决方法有很多.除了楼上

c语言-一道简单的C语言程序设计题

问题描述 一道简单的C语言程序设计题 产生30个[10,100]之间的随机整数到5行6列的数组中,求其中最大值和最小值,并把最大值元素和右上角元素对调,把最小值元素和左上角元素对调.按行.列格式输出重排前.后的情况.(提示:随机函数rand( )的函数值产生一个0~32767之间的随机数, rand( )和 srand(seed)定义在stdlib.h头文件中.先利用以下两条语句:scanf("%u", &seed); srand(seed); 来初始化rand( )的起始值.