私は現在、ベクトルについて学び、それらを使ってパリンドロームプログラムを作成しようとしています。これは簡単なプログラムですが、これまでのところ、私は「私は何ですか」と認識させようとしています。パリンドロームとして適切に。これは私のプログラムは、これまでのところです:パリンドロームプログラムが正しく比較されていません
#include <vector>
#include <string>
#include <iostream>
using namespace std;
vector <string> sentVec;
void getSent(string sent);
void readBackwards(string sent);
int main()
{
string sent;
getSent(sent);
readBackwards(sent);
return 0;
}
void getSent(string sent)
{
cout << "Enter your sentence:" << endl;
getline (cin,sent);
string currentWord, currentLetter;
for (int i = 0; i < sent.length(); i++)
{
currentLetter = sent[i];
if (currentLetter == " ") // inserts word
{
currentWord += sent[i];
sentVec.push_back(currentWord);
currentWord = "";
}
else if (currentLetter == ".") // inserts period
{
sentVec.push_back(currentWord);
currentWord = sent[i];
sentVec.push_back(currentWord);
}
else
{
currentWord += sent[i];
}
}
}
void readBackwards(string sent)
{
string sentForwards, sentBackwards;
// create sentence forwards and backwards without the period.
for (int i = 0; i < sentVec.size() - 1; i++)
{
sentForwards += sentVec[i];
}
for (int j = sentVec.size() - 2; j >= 0; j--)
{
sentBackwards += sentVec[j];
if (j == sentVec.size() - 2)
{
sentBackwards += " ";
}
}
cout << "Sentence forwards is: " << sentForwards << endl;
cout << "Sentence backwards is: " << sentBackwards << endl;
if (sentForwards == sentBackwards)
{
cout << "This sentence reads the same backwards as forwards." << endl;
}
else
{
cout << "This sentence does not read the same backwards as forwards." << endl;
}
}
私はこのプログラムを実行すると、それが印刷さ:2つの文を比較する際
Enter your sentence:
I am what am I.
Sentence forwards is: I am what am I
Sentence backwards is: I am what am I
This sentence does not read the same backwards as forwards.
なぜこれがあればループをトリガしませんか?
真剣に、文が同じ前後を読み取るかどうかを判断するコードです。 'std :: reverse()'を使った簡単な3行または4行の関数が必要です。 – PaulMcKenzie
はるかに簡単な実装についてはこちらをご覧ください:http://ideone.com/rqJuOe – PaulMcKenzie
何が起きているのかを確認するためにいくつかのログを追加してください。たとえば、両方の文字列の長さを記録します。 –