Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три буквы. C++ // 9rab.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include #include using namespace std; int main() { setlocale(LC_ALL, "Russian"); string s; cout << "Введите фразу" << endl; cin >> s; cout << endl; for (int i = 0; i < s.length();i++) { if (s.length() == 3) { cout << s << endl; } } return 0; } Не работает,почему?Может по другому как-то?
Проблема заключается в том, что вы проверяете длину всей строки вместо длины отдельного слова. Для выполнения условия "Слова, содержащие три буквы" необходимо разделить строку на отдельные слова и проверить длину каждого слова.
Проблема заключается в том, что вы проверяете длину всей строки вместо длины отдельного слова. Для выполнения условия "Слова, содержащие три буквы" необходимо разделить строку на отдельные слова и проверить длину каждого слова.
Вот исправленный код:
#include "stdafx.h"#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
string s;
cout << "Введите фразу: " << endl;
getline(cin, s);
istringstream iss(s);
string word;
while (iss >> word) {
if (word.length() == 3) {
cout << word << endl;
}
}
return 0;
}
Теперь код разделяет строку на отдельные слова и проверяет длину каждого слова.