2016-09-19 5 views
0

このデータシーケンスは「3 11 5 5 5 2 4 6 6 7 3 -8」としてください。直前の値と同じ値は、連続重複と見なされます。この例では、3つの連続した複製があります:2番目と3番目の5と2番目の6です。最後の3は連続する複製ではないことに注意してください。先頭に7があるためです。 ループを使用して負の数で終わる、負でない整数のシーケンス。コードがループを終了すると、遭遇した連続した重複の数が表示されます。上記の場合、その値は3になります。負数で終了するループを書き込む方法(MyProgrammingLab 11138)

これは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; 
+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; 
} 

EDIT - Bob__によって示唆されるように、単一の1 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

うれしい! –

関連する問題