文(std::string
)とフレーズの束()の2つの引数を受け取る関数を作成することになっていstd::vector<std::string>>
ます。ベクトルに含まれている文のすべての単語について、回文を作成し、それらを結合する必要があります(例:compile-> compileelipmoc)。また、2つのENTERが押されるまで、入力が使用可能であることを確認する必要があります。この問題は、関数を呼び出した後に発生し、無限ループに陥っているように見えます。なぜこの無限ループが発生するのですか?
#include <iostream>
#include <vector>
#include <string>
typedef std::vector<std::string> Vektor;
typedef std::string String;
void ReverseString(String &s1)
{
char temp(0);
for(int i(0); i < s1.size()/2; i++) {
temp = s1.at(i);
s1.at(i) = s1.at(s1.length()-1-i);
s1.at(s1.length()-1-i) = temp;
}
}
void CreatePalindrome(String s, Vektor v)
{
bool white_space(true);
bool go_on(false);
String compare;
for(int i(0); i < s.size(); i++) {
for(;;) {
if(s.at(i) == '\n' || i == s.size()-1) {
go_on == true;
break;
}
compare+=s.at(i);
}
if(go_on) {
for(int j(0); j < v.size(); j++) {
if(compare == v.at(j)) {
ReverseString(v.at(j));
if(i != s.size()-1) v.at(j)+=' ';
s.insert(i, v.at(j));
}
}
}
compare.clear();
}
}
int main ()
{
String sentence, phrase;
Vektor v1;
char character(0);
std::cout << "Enter your sentence: ";
std::getline(std::cin, sentence);
std::cout << "Enter phrases: ";
for(;;) {
character = std::cin.get();
if(character == '\n') break;
for(;;) {
phrase.push_back(character);
character = std::cin.get();
if(character == '\n') break;
}
v1.push_back(phrase);
phrase.clear();
}
CreatePalindrome(sentence, v1);
std::cout << "After the transformation, the sentence is: " << sentence;
return 0;
}
for(;;) {
if(s.at(i) == '\n' || i == s.size()-1) {
go_on == true;
break;
}
compare+=s.at(i);
}
あなたの唯一の方法はそれを経由することif
ですが、あなたはループでs
も変更もしないi
ので、決して壊れることはありません!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加