2016-09-19 1 views
0

"3 11 5 5 5 2 4 6 6 7 3 -8"의 데이터 순서를 고려하십시오. 바로 이전 값과 동일한 값은 연속 중복으로 간주됩니다. 이 예제에서는 세 번째 연속 된 중복이 있습니다 : 두 번째 및 세 번째 5s 및 두 번째 6. 세 번째 앞에 연속 된 중복되지 않습니다. 루프를 사용하여 일부를 읽는 코드를 작성하십시오 음수로 끝나는 음수가 아닌 정수 시퀀스. 코드가 루프를 빠져 나오면 연속 된 중복 횟수가 인쇄됩니다. 위의 경우 해당 값은 3이됩니다.음수로 끝나는 루프를 작성하는 방법 (MyProgrammingLab 11138)

이것은 MyProgrammingLab exercise 11138의 질문입니다. C++로 작성해야하며 아직 어떤 배열도 사용할 수 없습니다. 도와 주셔서 정말 감사합니다. 정말 감사.

int firstNumber; 
int secondNumber; 
int duplicates; 

secondNumber = duplicates = 0; 
cin >> firstNumber; 

while (firstNumber > -1 && secondNumber > -1) 
{ 
    secondNumber 
    if (firstNumber == secondNumber) 
    { 
     duplicates++ 
    } 
    firstNumber = secondNumber; 
} 

cout << duplicates; 
+4

'secondNumber'는 유효한 문이 아닙니다. –

+0

구문 오류 이외에도 컴파일하고 실행할 때 어떤 일이 발생합니까? 'cin >> firstNumber'는 while 루프 외부에 있으므로 더 이상의 입력을 요구하지 않습니다. –

+1

코드 작성을 시작하기 전에 계획을 세우는 데 필요한 단계들의 순서도/도표/목록을 작성하십시오. 이전에 알고리즘을 알아내는 데 도움이되었습니다. 이걸 가지고 올바른 길을 가고 있습니다. 누락 된 단계를 채우십시오. – qxz

답변

1

당신은 거의 다 있습니다 : 여기

는 내가 지금까지 가지고있는 것입니다. 조금만 변경하면됩니다.

cin >> firstNumber; 
while (firstNumber > -1) { // only firstNumber alone can handle this. 
    cin >> secondNumber; 
    if (firstNumber == secondNumber) 
     duplicates++; 
    else 
     firstNumber = secondNumber; 
} 

편집 - Bob__에 의해 제안은 하나 하나 cin도이 문제를 해결할 수 있습니다.

int firstNumber,secondNumber = -1, duplicates = 0; 
do { 
    cin >> firstNumber; 
    if (secondNumber == -1) { 
     secondNumber = firstNumber; 
    }else { 
     if (secondNumber == firstNumber) 
      duplicates++; 
     else 
      secondNumber = firstNumber; 
    } 
} while(firstNumber > 0); 
+2

while 조건에서 하나의'cin' ('firstNumber'를 읽으려고)을 사용하고'secondNumber = firstNumber; '만 사용하여 ... –

+0

당신 모두에게 고마워요. 나는 영원히 그 사람에 붙어 있었다. 좋은 하루 되세요! – GrantaOmega

+0

도움이 되니 기쁩니다 !!! –

관련 문제