如何编写以负数结束的循环(MyProgrammingLab 11138)

How to write loop that ends in negative number (MyProgrammingLab 11138)

本文关键字:循环 MyProgrammingLab 11138 结束 何编写      更新时间:2023-10-16

考虑这个数据序列:"3 11 5 5 5 5 2 4 6 6 7 3 -8"。任何与前一个值相同的值都被认为是连续重复。在本例中,有三个这样的连续重复:第二个和第三个5和第二个6。请注意,最后一个3不是连续的重复,因为它前面有一个7。编写一些代码,使用循环读取这样一个以负数结尾的非负整数序列。当代码退出循环时,它应该打印遇到的连续重复的数目。在上面的例子中,该值为3。

这是来自MyProgrammingLab练习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;

你就快成功了。只需要做一点改变。

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

EDIT -正如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 );