Предмет: Информатика, автор: nikita000999

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


Giammy: for (int i = 0; i < s.length();i++) {
if (s.length() == 3) { cout << s << endl; }
Giammy: Что вы пытаетесь сделать этой частью кода?
nikita000999: пройтись с нулевого индекса строки до размера
Giammy: А проверкой?
Giammy: Вы s.length() раз проверяете ВСЮ строку на равенство 3
Giammy: Не каждое слово, а всю строку

Ответы

Автор ответа: ЯковПервый
1
//Во-первых, строку нужно принимать через gerline, ибо через cin у вас в строку запишутся символы до первого пробела. Во -вторых, поиск слов из 3 символов выполнен неправильно, точнее он сработает в одном только случае, если вы введете строку из 3 символов, и то выведет 3 раза одно и то же слово.

//Вот как сделал я:

#include <iostream>

using namespace std;

int main()
{
string str;

int Size;
int ArrIndex = 0;

cout « "Enter string: ";
getline (cin, str);

string Element[str.length()];

for (int i = 0; i < str.length(); i++)
{
if (str[i] != ' ' && str[i] != '.')
Element[ArrIndex] += str[i];

else
ArrIndex++;
}

cout « endl;

for (int j = 0; j < str.length(); j++)
{
Size = 0;

for (int k = 0; k < Element[j].length(); k++)
Size++;

if (Size == 3)
cout « Element[j] « endl;
}

return 0;
}
Приложения:
Похожие вопросы