C++ enum和数组

enumCOMMAND{READ,WRITE,LISTENING,LOOKING};//以下内容是错误的,也是想请教的如何实现的部分COMMANDcmd[4];cmd[4... enum COMMAND {
READ,
WRITE,
LISTENING,
LOOKING
};
//以下内容是错误的,也是想请教的如何实现的部分
COMMAND cmd[4];
cmd[4] = {
READ,
WRITE,
LISTENING,
LOOKING
};
/*********************************************************************************/
srand((unsigned)time(NULL))
int ia[40];
for(int i = 0; i < 40; ++i)
{
ia[i] = rand()%(3+1);
cout << cmd[ia[i]] << " ";
};
cout <<endl;
主要是想实现如下功能:
用枚举名COMMAND来声明一个这种类型的变量,并且把定义COMMAND中的符号常量全部存入一个数组中,这样,可以通过生成的随机数来随机取得任意一个。
如果这个思路行不通,烦请告知该如何做
//以下内容是错误的,也是想请教的如何实现的部分
COMMAND cmd[4];
cmd[4] = {
READ,
WRITE,
LISTENING,
LOOKING
};
这部分,不一定是要把枚举中的所有符号常量全放入(这样的话就很easy了),主要是考虑只放一部分情况。eg:
COMMAND cmd[4];
cmd[4] = {
READ,
LOOKING
};
这种情况,如果可以转换为数组形式,就可以直接用0~2的随机数,随机取出任何一个。
展开
 我来答
viichi
2014-08-11
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

为你写了一段代码,希望你通过阅读代码,能够帮助到你

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
enum COMMAND {
INVALID = -1,
READ = 0,
WRITE,
LISTENING,
LOOKING,
_COMMAND_COUNT
};
const char * COMMAND_NAME[] = {
"READ",
"WRITE",
"LISTENING",
"LOOKING"
};
const char * convertToName(COMMAND cmd) {
if (cmd >= 0 && cmd < _COMMAND_COUNT) {
return COMMAND_NAME[cmd];
}
return "<INVALID>";
}
COMMAND convertFromName(const char *name) {
for (int i = 0; i < _COMMAND_COUNT; ++i) {
if (!strcmp(COMMAND_NAME[i], name)) {
return (COMMAND)i;
}
}
return INVALID;
}
int main() {
srand((unsigned int)time(0));

const int kMaxNum = 4;
char buf[128];
COMMAND cmd[kMaxNum];
int count = 0;
do  {
printf("input command (or empty to finish):");
if (*gets(buf)) {
COMMAND c = convertFromName(buf);
if (c == INVALID) {
printf("<invalid command>\n");
} else {
cmd[count++] = c;
}
} else {
break;
}
} while (count < kMaxNum);
printf("input the number of random command:");
int n = 0;
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
printf("%d. %s\n", i + 1, convertToName(cmd[rand() % count]));
}
return 0;
}
intehel
2014-08-11
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
COMMAND cmd[4];
cmd[4] = {
READ,
WRITE,
LISTENING,
LOOKING
};
改成
COMMAND cmd[4] = {
READ,
WRITE,
LISTENING,
LOOKING
};
追问
如何让打印出来显示的字符形式,而不是整数
追答
那再定义一个

enum COMMAND_TEXT {
TEXT("READ“),
TEXT("WRITE“),
TEXT("LISTENING“),
TEXT("LOOKING“)};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式