2017-06-29 1 views
0

これは私のベアを理解するための私の最初の試みです。私はそれが初心者だとわかります。私はコードを読み直しましたが、私は論理的な結論を見つけることができません。実行時に、開始時刻と終了時刻の間に改行が作成されません。肯定的および否定的なアドバイスが評価されます。endlは実行されていないようです

#include <iostream> 
#include <string> 
#include <vector> 
using namespace std; 

int main() { 
    //start time and end time of shift 
    vector <int> vstart; 
    vector <int> vend; 
    vector <string> days_of_week = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; 
    int start, end; 
    while (cin >> start) { 
     vstart.push_back(start); 
    } 
    while (cin >> end) { 
     vend.push_back(end); 
    } 

    for (string d : days_of_week) { 
     cout << d << "\t"; 
    } 
    cout << endl << "---------------------------------------------------------\n"; 
    for (int s : vstart) { 
     cout << s << "\t"; 
    } 
    cout << endl; 
    for (int e : vend) { 
     cout << e << "\t"; 
    } 
    cout << endl; 
}  
+2

特定の入力については、予想される出力と実際の出力を表示できますか? –

+0

冗長なコピー操作を避けたい場合は 'for(const string&d:days_of_week)'を使うべきです。 – voltento

+0

出力には、days_of_weekで定義された曜日とタブで区切られた曜日と、改行と、改行と、各改行の開始時刻と、改行と、各シフトの終了時刻のバリアーが続きます。 – NewToThis

答えて

1

このコード部分を見てみましょう。最初のループでは

while (cin >> start) { 
    vstart.push_back(start); 
} 
while (cin >> end) { 
    vend.push_back(end); 
} 

cin>>startは、ファイルの終わりバイトに達した、または別の方法で失敗するまで、あなたは値を読み込みます。しかし、あなたはその失敗状態をクリアしません。 2番目のループで新しい入力を読み取るには、cin.clear();に電話する必要があります。

while (cin >> start) { 
    vstart.push_back(start); 
} 
cin.clear(); 
while (cin >> end) { 
    vend.push_back(end); 
} 

さらに読書:Why would we call cin.clear() and cin.ignore() after reading input?

1

このwhileループは、それが成功しint値を抽出することができますように実行します。それは7つの数字を読んだ後に停止することを知らず、すべての入力をvstartに入れています。

while (cin >> start) { 
    vstart.push_back(start); 
} 

私はあなたが7つの値を読んだ後に停止するためのロジックが含まれ、このforループのような何かをしたいと思います。

for (int i = 0; (i < 7) && (cin >> start); ++i) { 
    vstart.push_back(start); 
} 
関連する問題