我想创建一个程序,将相同的单词转换为一个单词。我在使用“ while”的地方遇到了代码问题。如果我用“ if”代替“ while”,但是它不如我所愿,所以我需要使用“ while”,但它不能正常工作。它可以编译,但是在输入字符串a之后不起作用。
#include <iostream>
using namespace std;
int main ( ) {
string a;
cout << "Введите string a: ";
getline(cin,a);
for (int i = 0; i < a.length(); i++) {
while (a[i]=a[i+1]) {
for (int z = i; z < a.length(); z++) {
a[z]=a[z+1];
}
}
}
cout << endl << a << endl;
}
答案 0 :(得分:2)
while (a[i]=a[i+1]) {
您可能是说
while (a[i]==a[i+1]) {
=
是分配; ==
是比较。
完成编译时,传递-Wall
以获得有关此类情况的警告。 (如果Microsoft编译器打开警告可能会有所不同;对于其他编译器,-Wall
的意思是“打开警告:所有正常警告”。)
答案 1 :(得分:0)
即使我将while
替换为if
时,它仍然无法按预期工作。令您惊讶的是,您能够使用getline
而无需字符串标题。您还要将字符串a
的前一个字符分配给a
的下一个字符。
请尝试以下操作:
#include <iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
vector<string> dupes;
string word;
string a;
cout<<"Enter line:";
getline(cin , a);
int i = 0; //the counter
while(i <= a.length()) {
if(!isspace(a[i])) {
word += a[i];
} if(isspace(a[i])) {
bool present = (find(dupes.begin() , dupes.end() , word) != dupes.end());
if(!present) {
dupes.push_back(word);
word = "";
}
word = "";
}
++i;
}
}
尽最大可能避免循环嵌套。
答案 2 :(得分:0)
我解决了!
#include <iostream>
using namespace std;
int main ( ) {
setlocale(LC_ALL,"Russian");
cout << "Сборник задач: 7.2" << "\nLv Easy" << "\nExercise #02" << endl << endl;
string a;
cout << "Enter a line: ";
getline(cin,a);
for (int i = 0; i < a.length(); i++) {
for (int j = 0; j < a.length(); j++) {
if (a[i]==a[i+1]) {
for (int z = i; z < a.length(); z++)
a[z]=a[z+1]; } } }
cout << endl << a << endl << endl;
}