2012-04-19 2 views
1

"동적"이라고 기대되는 배열을 채우려고하므로 런타임에 필요한만큼 많은 항목을 입력 할 수 있습니다. 그러나, 배열, 이는 내가 NthTeam가, 채우기되지 가리키는 포인터를 추정하는 :이 작업을 수행 내 코드에서 cin >> NthTeam[(playerCounter - 1) * STND_NO_GAMES + (i - 1)]를 사용할 때, 그러나이 배열을 입력 값으로 채우려면 어떻게해야합니까?

int* NthTeam = NULL;  

NthTeam = (int*)realloc(NthTeam,(playerCounter*STND_NO_GAMES)*sizeof(int)); 

// loops through each player's standard number of games 
for (int i = 1; i <= STND_NO_GAMES; i++) { 
    //input the score into the remalloced array 
    cout << "Enter player " << playerCounter << "'s score " << i << ": "; 
    cin >> inputValue; 
    NthTeam[((playerCounter-1)*STND_NO_GAMES+(i-1)))] = SanityCheck(inputValue); 
} 

을 ... 배열 웁니다.

저는 this link에서 NthTeam을 일반 배열처럼 사용할 수 있다고 믿게되었지만, 여기서는 그런 생각이 들지 않습니다. 그냥 cin을 사용할 수없는 이유는 배열에 입력하기 전에 입력에 대한 유효성 검사를 수행해야하기 때문입니다.

나는 인터넷 검색을 매우 어렵게 생각합니다. 그것의 대부분은 내가 지금있는 곳에서 너무 복잡합니다.

+0

안녕하세요, 질문에 태그를 C로 지정했지만 코드가 C++처럼 보입니다. 그것이 어느 것이 었는지 분명히하십시오. – MByD

+0

왜 malloc이 아닌 realloc을 사용하고 있습니까? – TJD

+0

당신은'realloc'을 사용해서는 안됩니다. 이것은 크기 변경을 위해 메모리를 다시 할당하기위한 것입니다. 'malloc' 또는'calloc'을 사용해야합니다. – twain249

답변

0

C++로 프로그래밍한다고 가정하면 표준 라이브러리가 도움이 될 것입니다. 예 : std::vector. 여기에 뇌사 수정, 그리고 #include <vector>하십시오 :

std::vector<int> NthTeam;  

// loop through each player's standard number of games 
// inputting the score into the vector 

for (int i = 1; i <= STND_NO_GAMES; i++) { 
    cout << "Enter player " << playerCounter << "'s score " << i << ": "; 
    cin >> inputValue; 
    NthTeam.push_back(SanityCheck(inputValue)); 
} 

당신은 잘못된 입력 입력 할 때 ("토마토"의 점수를 입력 등) 무슨 일이 일어날 지 생각해야합니까. 이 오류 상태가 cin의 오류 상태에 미치는 영향, 마지막 시도에서 오류가 발생했을 때 다른 정수를 읽으려고하면 무엇을 할 것인지, 어떤 문자가 inputValue이 될지 고려하십시오.

"SanityCheck"가 필요한 경우일지도 모르지만 정수 만 확인하면됩니다.

관련 문제