私はC++を初めて使いました。今はAccelerated C++という本から学んでいます。私は第3章(ベクトル)を終えて、この練習に来ました:std :: coutはforループの中で動作しません
"それぞれの単語が入力に何回現れるかを数えるためのプログラムを書いてください。
いくつかの考えの後、私はそれに取り組み始めました。私はプログラムをテストしたかったのですが、std :: coutは動作しませんでした。私はcout << "test";
を私のコードのいくつかの場所に貼り付けて問題の場所を見ています。結論として、最初のfor-loopの内部では動作しません。ベクタを扱っているので、問題を解決するためにマップを使用することをお勧めしません。変数は英語ではないので、何が起こっているのかを知るためにいくつか翻訳します:
recenica - 文章です。 rijec - 言葉。 vel_vektora - ベクトルのサイズ。 duz_recenice - センテンスの長さ。 br_ponavljanja - 文中に単語が現れる回数。
#include <vector>
#include <iostream>
#include <string>
using std::string; using std::vector;
using std::cin; using std::cout;
using std::endl;
int main()
{
string rijec;
vector<string> recenica;
while (cin >> rijec) recenica.push_back(rijec);
cout << endl;
typedef vector<string>::size_type vel_vektora;
vel_vektora duz_recenice = recenica.size();
cout << "test0, ";
for (int i = 0; i < duz_recenice - 1; ++i)
{
cout << "test, !";
int br_ponavljanja = 1;
for (int j = i + 1; j < duz_recenice; ++j)
{
cout << "test2, ";
if (recenica[i] == recenica[j])
{
cout << "test3, ";
++br_ponavljanja;
recenica.erase(recenica.begin() + j);
}
cout << "test4, ";
}
cout << recenica[i] << ": " << br_ponavljanja << endl;
}
cout << "test5, ";
getchar();
return 0;
}
std::cout
の問題点は何ですか?
私はあなたのアプリケーションをデバッガでステップバイステップで実行し、問題の原因を突き止めるために変数の値を見ることをお勧めします。あなたがベクトル内に単語が1つしかない場合、外側のforループは実行されません –
どうして "うまくいかない"のですか? – ybungalobill
@マリアス:+1コーナーケースについて考えると、常に良いデバッグヒントです。 – fredoverflow