2017-11-18 1 views
-2

임의의 열거 형 변수를 생성하는 rand 함수는 어떻게 사용할 수 있습니까? 이것은 내가 지금까지 가지고있는 것입니다 (쓰레기 숫자가 뱉어 내고 있습니다) :rand() 함수에서 enum 값을 사용하는 방법

enum pieces { FLAG = 'F', BOMB = 'B', MARSHAL = '1', GENERAL = '2', COLONEL = 
       '3', MAJOR = '4', CAPTAIN = '5', LIEUTENANT = '6', SERGEANT = 
       '7', MINER = '8', SPY = 'S' }; 

int gamePieces[12] = { FLAG, BOMB, MARSHAL, GENERAL, COLONEL, MAJOR, 
         CAPTAIN, LIEUTENANT, SEGEANT, MINOR, SPY }; 

int rand_piece = (rand()& gamePieces[12]; 
+2

시도'gamePieces [랜드() % 12]' – vu1p3n0x

+0

코드는 오류가 가득합니다. Misspelt SEGEANT, MINOR, rand_piece에 닫는 대괄호가 없습니다. 크기가 12로 선언되는 동안 열거 형 수가 11입니다. –

답변

1

아마도 엄격하게 가능하지 않을 수 있습니다. 당신은

  1. 검사 어떤 값이 다음 편집 [열거 형 (%) 그것을
  2. 구문 분석을 모듈로 할 정수
  3. 을 생성 할 수
  4. 정수
  5. 에서이 열거 형을 가질 수 있습니다 - 당신은 C++에서 열거 형으로 파싱 할 필요가 없습니다.]

예 :

#include <iostream> 
#include <stdlib.h> 
using namespace std; 

int main() 
{ 
    enum gamePieces { FLAG, BOMB, MARSHAL, GENERAL, COLONEL, MAJOR, 
         CAPTAIN, LIEUTENANT, SEGEANT, MINOR, SPY }; 

    int maxEnumValue = 12; 
    int randPiece = rand() % maxEnumValue; 
    cout << randPiece; 
} 
0

당신은이 범위 0-11에 임의의 숫자를 생성합니다 rand() % 12를 사용할 수 있습니다

int rand_piece = gamePieces[rand() % 12]; 

코드에서 이상의 오류가 있습니다 -이 시도 :

#include <stdlib.h> 

const int numPieces = 11; 

enum pieces { FLAG = 'F', BOMB = 'B', MARSHAL = '1', GENERAL = '2', COLONEL = 
       '3', MAJOR = '4', CAPTAIN = '5', LIEUTENANT = '6', SERGEANT = 
       '7', MINER = '8', SPY = 'S' }; 

int gamePieces[numPieces] = { FLAG, BOMB, MARSHAL, GENERAL, COLONEL, MAJOR, 
         CAPTAIN, LIEUTENANT, SERGEANT, MINER, SPY }; 

int rand_piece = gamePieces[rand() % numPieces]; 

또는 추가 값이 필요하지 않은 경우 :

enum pieces { FLAG, BOMB, MARSHAL, GENERAL, COLONEL, MAJOR, 
       CAPTAIN, LIEUTENANT, SERGEANT, MINER, SPY, 
       MAX_PIECE }; 

int rand_piece = rand() % MAX_PIECE; 
+0

여기에 오류가 있습니다. ------------------ --------------------- ex.cpp : 88 : 44 : 오류 : 'int *'에서 'int'로의 잘못된 변환 [-fpermissive] int rand_piece = gamePieces [rand() % 12]; – Gbrandonconner

+0

@Gbrandonconner 코드에 몇 가지 오류가있었습니다. 업데이트 된 답변보기 –

0

시도 :

int main() 
{ 
    enum pieces { 
     FLAG = 'F', BOMB = 'B', MARSHAL = '1', GENERAL = '2', COLONEL = 
     '3', MAJOR = '4', CAPTAIN = '5', LIEUTENANT = '6', SERGEANT = 
     '7', MINER = '8', SPY = 'S' 
    }; 

    int gamePieces[11] = { FLAG, BOMB, MARSHAL, GENERAL, COLONEL, MAJOR, 
     CAPTAIN, LIEUTENANT, SERGEANT, MAJOR, SPY }; 


    std::cout << char(gamePieces[rand() % 11]) << std::endl; 
    std::cout << char(gamePieces[rand() % 11]) << std::endl; 
    std::cout << char(gamePieces[rand() % 11]) << std::endl; 
    std::cout << char(gamePieces[rand() % 11]) << std::endl; 
    std::cout << char(gamePieces[rand() % 11]) << std::endl; 

    return 0; 
} 

인쇄 :

7 
4 
4 
B 
6 
관련 문제