您的位置:程序门 -> .net技术 -> vc.net



c++中实现一个简单类的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


c++中实现一个简单类的问题
发表于:2007-03-21 08:19:33 楼主
请大帮个忙:
设计一个玩家类,属性包括:id、玩家姓名、玩家等级和玩家经验。要求创建5个玩家对象,其中玩家等级随机给出(范围在0~100),同时按给出的玩家id找出对应的玩家信息,同时要按玩家等级进行从高到低排序。
下面是我设计出来的代码:可调试老是出错:(我是在visual   studio   2005   下的vc++玩境下进行的调试)
请高手帮忙解决一下,或者你设计一个出来!

#include   "stdafx.h "
#include <iostream>
#include <cstdlib>
#include <string>
#include <conio.h>

using   namespace   std;

class   player{
private:
char   playerid[20];
char   playername[10];
int     playerlevel;
int     experience;
public:
player();
~player();
void   getplayerinfo();
void   putplayerinfo(player   *ptr);
int   search(player   *ptr,   char   *id);
void   sort(player   *ptr);
};

void   player::getplayerinfo(){
int   cont=0;
cout < < "\n输入玩家的id: ";
cin> > playerid;
cout < < "\n输入玩家的姓名: ";
cin> > playername;
playerlevel=rand();
experience=cont++;
}

void   player::putplayerinfo(player   *ptr){
int   cont=0;
while(   cont <5   )
{
cout < < "             玩家id: " < <ptr[cont].playerid < <endl;
cout < < "         玩家姓名: " < <ptr[cont].playername < <endl;
cout < < "     玩家等级为: " < <ptr[cont].playerlevel < <endl;
cout < < "玩家经验值为: " < <ptr[cont].experience < <endl;
cont++;
}
}


int   search(player   *ptr,char   *id){
for   (   int   i=0;i <5;i++   )
{
if   (   ptr[i].playerid==*id   )
cout < < "你要查找的游戏玩家的id是: " < <ptr[i].playerid;
ptr++;
}
return   0;
}

void   sort(player   *ptr){
for   (   int   i=0;i <5;i++   )
{
int   max=ptr[i].playerlevel;
for   (   int   j=i+1;j <5;j++   )
if   (   max <ptr[j].playerlevel   ){
ptr[i].playerlevel=ptr[j].playerlevel;
ptr[j].playerlevel=max;
}
}
}

int   main()
{
player   p[5];
int   i=0;
while   (   i <5   )
{
p[i].getplayerinfo();
i=i+1;
}
cout < < "请输入要找的玩家姓名: ";
char   *id;
cin> > id;
player   test;
test.search(   p,id   );
test.putplayerinfo(   p[0]   );
test.sort(   p   );
test.putplayerinfo(   p   );

system( "pause ");
return   0;
}

------   已启动生成:   项目:   player,   配置:   debug   win32   ------
正在编译...
player.cpp
f:\my   documents\visual   studio   2005\projects\player\player\player.cpp(53)   :   error   c2248:   'player::playerid '   :   cannot   access   private   member   declared   in   class   'player '
               
f:\my   documents\visual   studio   2005\projects\player\player\player.cpp(14)   :   see   declaration   of   'player::playerid '
               
f:\my   documents\visual   studio   2005\projects\player\player\player.cpp(12)   :   see   declaration   of   'player '

f:\my   documents\visual   studio   2005\projects\player\player\player.cpp(53)   :   error   c2446:   '== '   :   no   conversion   from   'int '   to   'char   * '   conversion   from   integral   type   to   pointer   type   requires   reinterpret_cast,   c-style   cast   or   function-style   cast

f:\my   documents\visual   studio   2005\projects\player\player\player.cpp(53)   :   error   c2040:   '== '   :   'char   [20] '   differs   in   levels   of   indirection   from   'int '

f:\my   documents\visual   studio   2005\projects\player\player\player.cpp(54)   :   error   c2248:   'player::playerid '   :   cannot   access   private   member   declared   in   class   'player '
               
f:\my   documents\visual   studio   2005\projects\player\player\player.cpp(14)   :   see   declaration   of   'player::playerid '
               
f:\my   documents\visual   studio   2005\projects\player\player\player.cpp(12)   :   see   declaration   of   'player '


生成日志保存在“file://f:\my   documents\visual   studio   2005\projects\player\player\debug\buildlog.htm”
player   -   10   个错误,个警告
==========   生成:   0   已成功,   1   已失败,   0   最新,   0   已跳过==========
发表于:2007-03-21 10:59:451楼 得分:0
int   search
====>
int   player::search
..
发表于:2007-03-30 23:23:232楼 得分:0
//   简单的能够编译并可以运行的版本,不过程序经不住测试,漏洞百出。
//   楼主大概是刚学c/c++,慢慢学吧!

#include   "stdafx.h "

#include   "stdafx.h "
#include <iostream>
#include <cstdlib>
#include <string>
#include <conio.h>

using   namespace   std;

class   player
{
private:
char   playerid[20];
char   playername[10];
int     playerlevel;
int     experience;
public:
player();
~player();
void   getplayerinfo();
void   putplayerinfo(player   *ptr);
int   search(player   *ptr,   char   *id);
void   sort(player   *ptr);
};
player::player()
{

}

player::~player()
{

}
void   player::getplayerinfo()
{
int   cont=0;
cout < < "\n输入玩家的id: ";
cin> > playerid;
cout < < "\n输入玩家的姓名: ";
cin> > playername;
playerlevel=rand();
experience=cont++;
}

void   player::putplayerinfo(player   *ptr)
{
int   cont=0;
while(   cont <5   )
{
cout < < "             玩家id: " < <ptr[cont].playerid < <endl;
cout < < "         玩家姓名: " < <ptr[cont].playername < <endl;
cout < < "     玩家等级为: " < <ptr[cont].playerlevel < <endl;
cout < < "玩家经验值为: " < <ptr[cont].experience < <endl;
cont++;
}
}


int   player::search(player   *ptr,char   *id)
{
for   (   int   i=0;i <5;i++   )
{
if   (   strcmp(   ptr[i].playerid,   id   )   ==   0   )
{
cout < < "你要查找的游戏玩家的id是: " < <ptr[i].playerid;
return   0;
}
ptr++;
}
return   0;
}

void   player::sort(player   *ptr)
{
for   (   int   i=0;i <5;i++   )
{
int   max=ptr[i].playerlevel;
for   (   int   j=i+1;j <5;j++   )
if   (   max <ptr[j].playerlevel   )
{
ptr[i].playerlevel=ptr[j].playerlevel;
ptr[j].playerlevel=max;
}
}
}

int   main()
{
player   p[5];
int   i=0;
while   (   i <5   )
{
p[i].getplayerinfo();
i=i+1;
}

cout < < "请输入要找的玩家姓名: ";
char   id[100]   =   {0};
cin> > id;

player   test;
test.search(   p,   id   );
test.putplayerinfo(   &p[0]   );
test.sort(   p   );
test.putplayerinfo(   p   );

system( "pause ");
return   0;
}


发表于:2007-04-01 00:27:253楼 得分:0
这样的问题最好还是自己试着解决,对打基础很有帮助
发表于:2007-04-02 12:29:034楼 得分:0
#include   "stdafx.h "
#include   <iostream>
#include   <string>
#include   <vector>
#include   <algorithm>

using   namespace   std;

class   player
{
private:
string   _id;
string   _name;
int   _lvl;
int   _exp;
public:
player()
:_lvl(0),   _exp(0)
{
}
player(const   string&   id,   const   string&   name,   int   lvl   =   0,   int   exp   =   0);

void   info()   const;
void   modify();

string   id()   const
{
return   _id;
}
int   level()   const
{
return   _lvl;
}
};

player::player(const   string&   id,   const   string&   name,   int   lvl,   int   exp)
{
this-> _id   =   id;
this-> _name   =   name;
this-> _lvl   =   lvl;
this-> _exp   =   exp;
}

void   player::info()   const
{
cout   < <   "             玩家id: "   < <   this-> _id   < <endl;
cout   < <   "         玩家姓名: "   < <   this-> _name   < <endl;
cout   < <   "     玩家等级为: "   < <   this-> _lvl   < <endl;
cout   < <   "玩家经验值为: "   < <   this-> _exp   < <endl;
cout   < <   endl;
}

void   player::modify()
{
}

bool   higherlevelplayer(const   player&   lhs,   const   player&   rhs)
{
return   lhs.level()   >   rhs.level()   ;
}

class   correctplayer
{
private:
const   string*   _name;
public:
correctplayer(const   string&   name)
{
_name   =   &name;
}
bool   operator()   (const   player&   player)
{
return   player.id()   ==   *_name;
}
};

class   playervector
{
private:
vector <player>   _vector;

public:
void   pushback(const   player&   player);
void   sort();
bool   search(const   string&   id,   player&   result)   const;
void   show()   const   ;
};

void   playervector::sort()
{
sort(_vector.begin(),   _vector.end(),   higherlevelplayer);
}

bool   playervector::search(const   string&   id,   player&   result)   const
{
vector <player> ::const_iterator   pos   =   find_if(_vector.begin(),   _vector.end(),   correctplayer(id));
if   (pos   !=   _vector.end())
{
result   =   *pos;
return   true;
}
return   false;
}

void   playervector::pushback(const   player&   player)
{
_vector.push_back(player);
}

void   playervector::show()   const
{
for   (vector <player> ::const_iterator   pos   =   _vector.begin();   pos   !=   _vector.end();   ++pos)
{
pos-> info();
}
}

void   test()
{
playervector   playervector;
playervector.pushback(player( "e ",   "e ",   5,   5));
playervector.pushback(player( "d ",   "d ",   4,   4));
playervector.pushback(player( "a ",   "a ",   1,   1));
playervector.pushback(player( "b ",   "b ",   4,   2));
playervector.pushback(player( "c ",   "c ",   3,   3));

cout   < <   "原始玩家资料: "   < <   endl;
playervector.show();

cout   < <   "排序后的玩家资料: "   < <   endl;
playervector.sort();
playervector.show();

string   searchid;
cout   < <   "需要搜索的玩家id: ";
getline(cin,   searchid);
player   result;
if   (   playervector.search(searchid,   result)   )
{
cout   < <   "搜索结果: "   < <   endl;
result.info();
}
else
{
cout   < <   "没有id匹配的玩家资料 "   < <   endl;
}
}

void   main()
{
test();
}

大概就是这样子吧,关于输入玩家资料部分不写了,好久不用c++,难免有不好的地方。


快速检索

最新资讯
热门点击