2017-11-04 10 views
0

ここに私のコードがあります。私はZybooksの出力のスクリーンショットを添付しました。出力は何ですか?私はZybooksが求めているものを正確に出力しようとしていますが、何か縫い目が間違っていることがあります。それはコンパイルしています。または、おそらくZybooksはばかげているだけですか?なぜプログラムはカンマが多すぎると文句を言いますか?

#include <iostream> 
#include <string> 
#include <vector> 
#include <sstream> 
#include <iomanip> 
#include <cstring> 

using namespace std; 

int main() { 

    string title; 
    string col1; 
    string col2; 
    string val; 
    int numCommas = 0; 
    vector<string> stringData; 
    vector<int> intData; 

    cout << "Enter a title for the data:" << endl; 
    getline(cin, title); 
    cout << "You entered: " << title << endl << endl; 

    cout << "Enter the column 1 header:" << endl; 
    getline(cin, col1); 
    cout << "You entered: " << col1 << endl << endl; 

    cout << "Enter the column 2 header:" << endl; 
    getline(cin, col2); 
    cout << "You entered: " << col2 << endl << endl; 

    while (1) { 
     cout << "Enter a data point (-1 to stop input):" << endl; 
     getline(cin, val); 

     if (val == "-1") { 
      break; 
     } 

     if (val.find(',') == -1) { 
      cout << "Error: No comma in string." << endl << endl; 
     } 
     else { 
      for (int i = 0; i < val.length(); i++) { 
       if (val.at(i) == ',') { 
        numCommas++; 
        if (numCommas > 1){ 
         break; 
        } 
       } 
      } 

      if (numCommas == 1) { 
       stringData.push_back(val.substr(0, val.find(','))); 
       intData.push_back(stoi(val.substr(val.find(',') + 1, val.length() - 1))); 
       cout << "Data string: " << val.substr(0, val.find(',')) << endl; 
       cout << "Data integer: " << stoi(val.substr(val.find(',') + 1, val.length() - 1)) << endl; 
      } 
      else { 
       cout << "Error: Too many commas in input." << endl << endl; 
      } 
     } 
    } 

    return 0; 
} 

ありがとうございます。

enter image description here

感謝。

+0

あなたの最初のエラーは[最小、完全で、検証可能な例](https://stackoverflow.com/help/mcve)を投稿していません。 –

答えて

1

あなたの問題は、各著者入力の開始時ではなく、プログラムの開始時にゼロに初期化することです。つまり、それが1を超えると、それは少なくとも(a)の高さであり、将来の入力は常にコンマが多すぎると見なされることを意味します。

各入力をにチェックする直前にゼロに設定するだけです。


(a)のまあ、(それがラップアラウンドする場合)には、ラップアラウンドまで。しかし、それはひどいあなたが入力する必要があるコンマの多く:

+0

コンマを提案していますか? – user4581301

関連する問題