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的随机数,随机取出任何一个。 展开
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的随机数,随机取出任何一个。 展开
2个回答
展开全部
为你写了一段代码,希望你通过阅读代码,能够帮助到你
#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;
}
展开全部
COMMAND cmd[4];
cmd[4] = {
READ,
WRITE,
LISTENING,
LOOKING
};
改成
COMMAND cmd[4] = {
READ,
WRITE,
LISTENING,
LOOKING
};
cmd[4] = {
READ,
WRITE,
LISTENING,
LOOKING
};
改成
COMMAND cmd[4] = {
READ,
WRITE,
LISTENING,
LOOKING
};
追问
如何让打印出来显示的字符形式,而不是整数
追答
那再定义一个
enum COMMAND_TEXT {
TEXT("READ“),
TEXT("WRITE“),
TEXT("LISTENING“),
TEXT("LOOKING“)};
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询