2017-09-14 3 views
-4
bool guess(char c) 
{ 
    if (guesses[c]) 
    { 
     guesses[] = c; 
     return true; 
    } 
    else if (c > ='a' && c <= 'z') 
    { 
     guesses[] = c; 
     return false; 
    } 
} 

bool guesses[255] = {}; 

사람이 - z 사이에 char을 입력했는지 확인하고 그렇지 않은 경우 true를 반환해야합니다. 그렇지 않으면 false를 반환합니다. 어느 쪽의 방법이라도 나는 char와 함께 추측을 갱신 할 것이다. 지금 당장 나는 배열에 char을 추가하는 방법을 이해하지 못한다. 그래서 다음에 나는 그것이 거짓 일 것이고 이미 짐작되었다고 말할 것이다. 나는 이것이 ASCII 테이블을 사용하고 있다는 것을 이해한다. 아무도 왜 이것이 작동하지 않습니다 설명 할 수 있습니다.간단한 단어 추측 게임

나는 현재 오류를

']'전

예상되는 주요 표현을 얻을 수 있지만 밖으로 브라켓 수강하면이

을 bool로하는

호환되지 않는 유형의 문자를 얻을 수

어떤 의미가 있지만 어떻게 또한

guesses[c] = c; 

하지만 돈 : 현재 인덱스를 제공하지 않도록, 내가 그렇게 문자 C는 당신은 빈 당신의 브래킷을 떠 났어요

+0

이도 컴파일 않습니다 캐릭터가 눌 렸는지 여부를 추적 할 std::set, 독특한 요소의 컨테이너를 사용하는 대신 고려

bool guesses[26]; if (c >='a' && c <= 'z') guesses[c-'a'] = true; 

: 당신은 단순히 문자를 뺀 올바른 인덱스를 얻을 수 있었다 너에게? *** 추측 [] = c; *** –

+0

배열'bool guesses [255]'는 무엇을 나타내는가? 'guesses [] = c;'라고 쓸 때 당신은 무엇을하고 싶습니까? –

+0

아니요, 당신은 저에게 대답하지 않습니다. 나는 한 줄의 코드의 문자 적 ​​의미를 묻지 않는다. 배열이 무엇을 나타내는 지 묻습니다. 그리고 당신은 똑같은 이유로 해명을위한 두 번째 질문에 대답하지 않습니다. –

답변

1

부울 배열에 진정한 표시됩니다되는 경우 어떻게해야합니까

guesses[c] = true; 

* 컴파일하고 문제를 해결할 것이다 '는 t이 charguesses를 할당 할, 당신은 bool 할당 할 것입니다.
* > =과의 구문 오류가 있습니다.이 질문은 편집기에서 질문에 대한 복사 + 붙여 넣기 문제 일 뿐이라고 생각하지만이 역시 >=으로 고쳐야합니다. 함수 guess은 잠재적으로 반환하지 않을 수도 있습니다 (if 또는 else if이 참이 아닌 경우). 이는 정의되지 않은 동작입니다. 모든 제어 경로가 값을 반환하는지 확인해야하며 가장 높은 경고 수준에서 컴파일해야 이러한 상황에 대해 경고를받을 수 있습니다.

하지만 디자인이 아닙니다.

a-z 문자 만 취급하므로 255 개의 요소를 모두 할당 할 필요가 없습니다.

#include <set> 

std::set<char> guesses; 

bool guess(char c) 
{ 
    // Have we already inserted this character? 
    if (guesses.find(c) != std::end(guesses)) 
    { 
     // Character has already been guessed: 
     std::cout << "This character has already been guessed"; 
     return true; 
    } 
    else if (c >= 'a' && c <= 'z') 
    { 
     // Valid guess: 
     guesses.insert(c); 
     return false; 
    } 
}