| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 942 人关注过本帖
标题:很菜的问题
只看楼主 加入收藏
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
 问题点数:0 回复次数:17 
很菜的问题
请问:

if(strcmp(game[i].playname,name)==0)

定义game为一个类的对象数组, playname[8]为char 类型,name[8]为另一个类中的char类型变量
为什么比较不了``
搜索更多相关主题的帖子: game 
2006-09-10 07:39
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 

playname[8]为char 类型,name[8]为另一个类中的char类型变量
你确定这里可以访问其他类的私有成员么


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-09-10 08:12
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

playname[8]为公有,在name[8]的类中使用它``

2006-09-10 09:54
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 
是否需要看一下我的草稿程序----全部代码
2006-09-10 09:56
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
当然需要看一下,以免你表达的意思不是我们所理解的意思

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-09-10 10:14
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

#include<iostream>
#include<string>

using namespace std;
static int k=0;

void sm()
{
cout<<"\t\t申请游戏账号说明\n";
cout<<"a.账号位数不得大于8位字符,可为字母";
cout<<"或数字组合,也可以是单独的字母或数字,";
cout<<"但必须以字母开头\n";
cout<<"b.游戏密码不得大于6位字符,可为字母";
cout<<"或数字组合,也可以是单独的字线或数字\n";
}

void sm1()
{
cout<<"\t\t游戏说明\n";
cout<<"1.进入游戏,请输入'1'\n";
cout<<"2.申请帐号,请输入'2'\n";
cout<<"3.退出,请输入'0'\n";
cout<<"请选择功能:";
}


class play
{
public:
string playname;
string playkey;
play(string n,string k)
{
playname=n;
playkey=k;
}
};

class goplay
{
private:
string name;
string key;
string key1;
public:
int nameworng,nameworng1,f,i,keyworng;
string s;
void nscanf()
{
sm();
cout<<"帐号:";
cin>>name;
f=name.size();
for(i=0;i<f;i++)
if(!(((name[i]>='a'&&name[i]<='z')||
(name[i]>='A'&&name[i]<='Z')||
(name[i]>='0'&&name[i]<='9'))&&
(name[0]>='a'&&name[0]<='z')||
(name[0]>='A'&&name[0]<='Z')))
{nameworng=1;break;}
for(i=k;i>=0;i--)
if(strcmp(game[i].playname,name)==0)
{nameworng1=1;break;}
}
void npd()
{
while(f>8||nameworng==1||nameworng1==1)
{
if(f>8)
{
cout<<"你申请的帐号大于8位字符\n";
nscanf();
}
if(nameworng==1)
{
cout<<"你的帐号含有非法字符\n";
nscanf();
}
if(nameworng1==1)
{
cout<<"你申请的账号以存在\n";
nscanf();
}
}
game[++k].playname=name;
}
void kscanf()
{
cout<<"密码:";
cin>>key;
f=key.size();
for(i=0;i<f;i++)
if(!((key[i]>='a'&&key[i]<='z')||
(key[i]>='A'&&key[i]<='Z')||
(key[i]>='0'&&key[i]<='9')))
{keyworng=1;break;}
}
void kpd()
{
while(f>6||keyworng==1)
{
if(f>6)
{
cout<<"你的密码大于6位字符\n";
kscanf();
}
if(keyworng==1)
{
cout<<"你的密码含有非法字符\n";
kscanf();
}
}
}
void kscanf1()
{
cout<<"验证密码:";
cin>>key1;
while(!strcmp(key,key1)=0)
{
cout<<"密码不一致,请重设\n";
kscanf();
kpd();
cout<<"验证密码:";
cin>>key1;
}
game[k].playkey=key;
cout<<"恭喜你,以申请成功,OY\n";
}
};

class comeplay
{
private:
string goname;
string gokey;
public:
void print()
{
cout<<"帐号码:";
cin>>goname;
cout<<"密码:";
cin>>gokey;
for(int i=0;i<=k;i++)
if(strcmp(game[i].playname,goname)=0&&
strcmp(game[i].playkey,gokey)=0)
int right=1;
if(right==1)
cout<<"欢迎进入本游戏,祝你在游戏中愉快!\n";
else
cout<<"你输入的账号不存在,请申请\n";
}
};


int main()
{
play game[100]={{"gogogo","123456"}};
goplay dc1;
comeplay dc2;
int x;
sm1();
cin>>x;
do
{
switch(x)
{
case 1:
dc1.nscanf();
dc1.npd();
dc1.kscanf();
dc1.kpd();
dc1.kscanf1();
break;
case 2:
dc2.print();
break;
case 0:
exit(0);
default:cout<<"你的输入有误,请重新输入\n";
}
sm1();
cin>>x;
}while(x!=0);
getchar();
return 0;
}

2006-09-10 10:22
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
你真的是可爱,我看了半天你的game在哪声明的,竟然可以在类中的成员函数中使用,所以,我首先看:是不是成员变量,结果不是,我又看:是不是全局变量,结果又不是。

后来在main中看到了!!!

你好可爱,怎么可以这样用呢?

你把这个play类型的数组作为参数传进去还差不多,或则在类中搞个play类型的指针。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-09-10 12:10
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 
我以前写的都是C的程序多``
现在才改行去C++不久``不容易啊``
哈哈`
我主要是英语不好``出错提示是英文的我看不懂```平常都是靠自己那一点可怜的知识``
在加上没有高手指点``靠自己自学好乱的``我试试看你说的方法
这是没改前的出错提示:
-------------------Configuration: wer - Win32 Debug--------------------
Compiling...
gggg.cpp
F:\VC++6.0\MSDev98\MyProjects\wer\gggg.cpp(62) : error C2065: 'game' : undeclared identifier
F:\VC++6.0\MSDev98\MyProjects\wer\gggg.cpp(62) : error C2109: subscript requires array or pointer type
F:\VC++6.0\MSDev98\MyProjects\wer\gggg.cpp(62) : error C2228: left of '.playname' must have class/struct/union type
F:\VC++6.0\MSDev98\MyProjects\wer\gggg.cpp(85) : error C2109: subscript requires array or pointer type
F:\VC++6.0\MSDev98\MyProjects\wer\gggg.cpp(85) : error C2228: left of '.playname' must have class/struct/union type
F:\VC++6.0\MSDev98\MyProjects\wer\gggg.cpp(118) : error C2664: 'strcmp' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
F:\VC++6.0\MSDev98\MyProjects\wer\gggg.cpp(118) : fatal error C1903: unable to recover from previous error(s); stopping compilation
执行 cl.exe 时出错.
2006-09-10 15:37
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

我对string函数还不是很了解`
我还是用char算了`搞定了


#include<iostream>
#include<string>

using namespace std;
static int k=0;

void sm()
{cout<<"\t____________________________________________________\n";
cout<<"\t\t\t***申请游戏账号说明***\n";
cout<<"\t\ta.账号位数不得大于8位字符,可为字母或数字组合,\n";
cout<<"\t\t 也可以是单独的字母或数字,但必须以字母开头\n";
cout<<"\t\tb.游戏密码不得大于6位字符,可为字母或数字组合\n";
cout<<"\t\t ,也可以是单独的字线或数字\n";
cout<<"\t____________________________________________________\n";
}

void sm1()
{cout<<"\t__________________________________________\n";
cout<<"\t\t\t***游戏说明***\n\n";
cout<<"\t\t1.进入游戏,请输入“1”。\n";
cout<<"\t\t2.申请帐号,请输入“2”。\n";
cout<<"\t\t3.退出,请输入“0”。\n";
cout<<"\t__________________________________________\n\n";
cout<<"请选择功能:";
}


class
{
public:
char playname[8];
char playkey[7];

}game[100]={{"gogogo","123456"}};;


class goplay
{
private:
char name[8];
char key[7];
char key1[7];
public:
int nameworng,nameworng1,f,i,keyworng;
string s;
void nscanf()
{
sm();
cout<<"帐号:";
cin>>name;
f=strlen(name);
for(i=0;i<f;i++)
if(!(((name[i]>='a'&&name[i]<='z')||
(name[i]>='A'&&name[i]<='Z')||
(name[i]>='0'&&name[i]<='9'))&&
(name[0]>='a'&&name[0]<='z')||
(name[0]>='A'&&name[0]<='Z')))
{nameworng=1;break;}
for(i=k;i>=0;i--)
if(strcmp(game[i].playname,name)==0)
{nameworng1=1;break;}
}
void npd()
{
while(f>8||nameworng==1||nameworng1==1)
{
if(f>8)
{
cout<<"你申请的帐号大于8位字符\n";
nscanf();
}
if(nameworng==1)
{
cout<<"你的帐号含有非法字符\n";
nscanf();
}
if(nameworng1==1)
{
cout<<"你申请的账号以存在\n";
nscanf();
}
}
strcpy(game[++k].playname,name);
}
void kscanf()
{
cout<<"密码:";
cin>>key;
f=strlen(key);
for(i=0;i<f;i++)
if(!((key[i]>='a'&&key[i]<='z')||
(key[i]>='A'&&key[i]<='Z')||
(key[i]>='0'&&key[i]<='9')))
{keyworng=1;break;}
}
void kpd()
{
while(f>6||keyworng==1)
{
if(f>6)
{
cout<<"你的密码大于6位字符\n";
kscanf();
}
if(keyworng==1)
{
cout<<"你的密码含有非法字符\n";
kscanf();
}
}
}
void kscanf1()
{
cout<<"验证密码:";
cin>>key1;
while(!strcmp(key,key1)==0)
{
cout<<"密码不一致,请重设\n";
kscanf();
kpd();
cout<<"验证密码:";
cin>>key1;
}
strcpy(game[k].playkey,key);
cout<<"恭喜你,以申请成功,OY\n";
}
};

class comeplay
{
private:
char goname[8];
char gokey[7];
public:
int right;
void print()
{
cout<<"帐号:";
cin>>goname;
cout<<"密码:";
cin>>gokey;
for(int i=0;i<=k;i++)
if(strcmp(game[i].playname,goname)==0&&
strcmp(game[i].playkey,gokey)==0)
right=1;
if(right==1)
cout<<"欢迎进入本游戏,祝你在游戏中愉快!\n";
else
cout<<"你输入的账号不存在,请申请\n";
}
};


int main()
{

goplay dc1;
comeplay dc2;
int x;
sm1();
cin>>x;
do
{
switch(x)
{
case 2:
dc1.nscanf();
dc1.npd();
dc1.kscanf();
dc1.kpd();
dc1.kscanf1();
break;
case 1:

dc2.print();
break;
case 0:
exit(0);
default:cout<<"你的输入有误,请重新输入\n";
}
sm1();
cin>>x;
}while(x!=0);
getchar();
return 0;
}

2006-09-10 16:22
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
恩,可以自己解决问题就是值得赞一个的~!

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-09-10 18:01
快速回复:很菜的问题
数据加载中...
 
   



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

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