2016-10-11 2 views
0

프로그램을 작성 중이며 아래의 기능을 제외한 모든 것이 올바르게 작동합니다. 첫 번째 루프에 대한 사용자 입력이 1-69 사이이고 두 번째 루프가 1-26 사이가되도록 최선을 다하는 것이 궁금합니다.사용자가 입력 할 수있는 숫자 범위를 설정하는 데 문제가 있습니다.

나는 do/while 루프는 오류가 발생했습니다.

//*********************************************** 
//Case 4 lets you input your own lottery numbers* 
//*********************************************** 
void case4() 
{ 
    cout << numberprint << endl; 
    tickettop(); 
    int array_pick[4]; 
    int pballp; 
    for (int i = 0; i < 5; i++) 
    { 
     cout << evalue << i + 1 << space1; 
     do 
     { 
     cin >> array_pick[i]; 
     } while (array_pick > 0 && array_pick <= 69); //Here is where I get an error for array_pick <= 69 (operand types are incompatible (int * and int)) 
    } 
    for (int i = 0; i < 1; i++) 
    { 
     cout << eball; 
     cin >> pballp; 
    } 
    cout << endl << endl; 
    ofs << endl; 
    ticketbottom(); 
    ofs << bar << box << bar << endl; 
} 
+0

'while (! (array_pick> 0 && array_pick <= 69));'두 번째 시도가 표시되지 않습니다. – LogicStuff

답변

1
int lottonumber; 

ask: //goto label 
cin >> lottonumber; //prompt value in console 
//if lower than 1 or higher than 69, goto label 
if (lottonumber < 1 || lottonumber > 69)goto ask; 

사람들은 goto 라벨을 싫어하지만,이 경우는 문제가되지 않습니다. while 루프와 for 루프는 코드를 더 이해하기 쉽고 조직화 할 수있게 해줍니다. goto 레이블은 프로그램을 느리게 만들거나 '나쁘게'만들지 않을 것입니다. 단지 구성하기가 더 어려워 질 것입니다. 또는이 경우 더 쉽습니다.

1

코드에 여러 가지 문제가 있습니다. 이 라인이 문제가 있습니다

} while (array_pick > 0 && array_pick <= 69); 

은 첫째, 당신은 정수 배열을 비교하는 컴파일러 오류가 어디에서 오는지, 그입니다. 두 번째로 조건은 현재와 반대가되어야합니다. 즉, 사용자가 올바른 값을 입력 할 때까지 루프가 계속되기를 원하므로 입력 한 값이 범위를 벗어나면 실제로 조건이 참이어야합니다 .

cout << eball; 
do 
{ 
    cin >> pballp; 
} while (pballp < 0 || pballp > 26); 

그러나 다른 문제가 :

} while (array_pick[i] < 0 || array_pick[i] > 69); 

, 그냥 조건을 변경하면 동일한 do...while 구조를 사용할 수있는 두 번째 입력을 확인하려면 :

은 당신이 아마 할 말은 이것이다 귀하의 코드와 함께 비록 그 나머지는 구문적으로는으로, 내가 말할 수있는 한 정확합니다.

첫 번째 루프는 array_pick 배열 범위를 벗어납니다. ,

for (int i = 0; i < 5; i++) 

i 값 0, 1, 2, 3 4 걸리지 만이 루프에서 수정하는 배열 int array_pick[4]로 정의되므로, 단지 인덱스 0, 1 요소가있을 것이다 2 및 3입니다.

두 번째 for은 루프가 단일 반복 만 수행하기 때문에 무의미합니다.

관련 문제