2017-01-23 2 views
0

주어진 범위 사이에서 사용자로부터 입력 정수를 가져와야합니다. 나는 그들의 높이와 낮은 것을 얻을 필요가있다. 그러나 루프는 멈추지 않고 왜 나는 모릅니다. 나는 나의 상태가 좋다고 생각했지만 루프는 멈추지 않을 것이다. 그것이 무엇을해야네 서사시 사용자 입력 및 루프 반복 C

int  obtainNumberBetween (const char* descriptionCPtr, int low, int high) { 
    char line[MAX_LINE]; 
    int entry; 
// #define  MAX_LINE 256 

    // YOUR CODE HERE 
do 
    { 
    printf("Please enter the lowest number in the range (%d-%d):\n " ,RANGE_LOWEST ,RANGE_HIGHEST); 
    fgets(line, 256, stdin); 
    low = atoi(line); 
    printf ("The value entered is %d\n", low); 

    } 
    while ((entry < low) || (entry > high)); 

return(entry); 

} 

샘플 출력 :

Please enter the lowest number in the range (0-32767): -6 
Please enter the lowest number in the range (0-32767): 1 
Please enter the highest number in the range (1-32767): 0 
Please enter the highest number in the range (1-32767): 32768 
Please enter the highest number in the range (1-32767): 512 
+1

어떤 항목을 수행하고 있습니까? 어떤 가치가있는 동안 당신은 내부 비교? –

+0

사용자 입력이 '낮음'보다 낮거나 '높음'보다 커야하는 경우 사용자에게 다른 번호를 입력하라는 메시지가 표시됩니다. 사용자가 최종적으로 올바른 번호를 입력하면이 함수는 해당 번호를 반환합니다. – yeny314

+2

낮음 = atoi (라인); 당신은 낮은 곳에 겹쳐 쓰고 있습니다. 당신이 진입하기는 아무것도하지 않고 낮게 수정하기 때문에, 당신은 가장 낮은 가치를 잃었습니다. –

답변

0

가 귀하의 entry 변수가 초기화되지 않았습니다. 그래서이 라인은 정의되지 않은 동작을 호출한다 :

while ((entry < low) || (entry > high)) 

은 아마도 당신은 entry 대신 low에 사용자 입력을 할당해야합니다.

+0

내가 그렇게하면, 나는 어떻게 높은 얻을 것인가? 나는 낮고 높은 사용자로부터 2 정수를 얻을 필요가있다 – yeny314

0

entry에 값을 할당해야합니다. entry이 초기화되지 않았으므로 while 루프의 조건이 항상 true이므로 루프가 중지되지 않습니다.

변화 low = atoi(line);

entry = atop(line); 

로하고 while 루프 후

low = atoi(entry); 

추가.

+0

entry = atoi (line); ? – yeny314

+0

또한 가장 높은 가치를 얻으려면 어떻게해야합니까? 똑같은 것? – yeny314