Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три буквы. 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;
}
Не работает,почему?Может по другому как-то?

17 Ноя 2019 в 19:54
432 +1
0
Ответы
1

Проблема заключается в том, что вы проверяете длину всей строки вместо длины отдельного слова. Для выполнения условия "Слова, содержащие три буквы" необходимо разделить строку на отдельные слова и проверить длину каждого слова.

Вот исправленный код:

#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;
}

Теперь код разделяет строку на отдельные слова и проверяет длину каждого слова.

19 Апр 2024 в 01:37
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир