6 / 6 / 2
Регистрация: 26.01.2016
Сообщений: 29
1

Вывести слова строки, содержащие не более 4 букв

19.11.2016, 06:38. Показов 6263. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Задание: Вписать строку в консоль. Вывести слова этой строки, состоящие не более чем из 4 букв.

Пример входных данных:
The sea was really rough and the waves were huge. It was so exciting! Canoe was full of water but we weren't scary.
Пример выходных данных:
The sea was and the were huge It was so was full of but we t

Проблема заключается в том, что программа не распознает слово после одинарной кавычки(weren't),а считает ее за символ строки, соответственно не выводит "t" .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream> 
#include <string> 
using namespace std; 
 
int main()
{ 
string arr;
int i = 0;
    while (cin >> arr)
{
        if ( arr.size() <= 4 ) 
        cout<<arr<<" "; 
}
system("pause"); 
return 0; 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2016, 06:38
Ответы с готовыми решениями:

В произвольной тексте на русском языке вывести строки, содержащие более 5 букв "о"
Привет всем! Вобщем у меня проблема, есть задачка: В произвольной тексте на русском языке вывести...

Комбинаторика: сгенерировать слова, содержащие k букв, но никакая буква не должна встречаться более k-2 раз
Написать программу, которая генерирует слова, содержащие k букв (от «а» до «е»), допускающие...

В одной колонке вывести слова без гласных букв, а в другой слова содержащие цифру
Ввести строку. Поделить ее на слова. В одной колонке выводить слова без гласных букв, а в другой...

Вывести слова текста на русском языке, содержащие более двух согласных букв
программа, которая последовательно выводит слова текста на русском языке, содержащие более двух...

8
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
19.11.2016, 07:25 2
C++
1
2
3
4
    std::string str;
    while (getline(std::cin, str)) {
        std::cout << str << "   size - " << str.length();
    }
1
6 / 6 / 2
Регистрация: 26.01.2016
Сообщений: 29
19.11.2016, 07:33  [ТС] 3
ssXXss, Вы считаете количество букв в строке... Не похоже, что это отражает суть моего задания.
0
7780 / 6550 / 2981
Регистрация: 14.04.2014
Сообщений: 28,610
19.11.2016, 07:45 4
Считываешь строку целиком - getline(), затем выделяешь слова - find_first_of()/find_first_not_of().
Или используй regex: Разбиение строки на подстроки
1
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
19.11.2016, 07:49 5
std::string split а дальше выводишь слова с нужными параметрами.
0
6 / 6 / 2
Регистрация: 26.01.2016
Сообщений: 29
20.11.2016, 10:55  [ТС] 6
ssXXss, В общем как-то так получилось
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
using namespace std;
 
int main ()
{
char str[500];
gets(str);
char * der = strtok (str," !',.-"); // указываем разделители слов
    while (der != NULL)                         
    { 
        if (strlen(der)<=4)
        cout <<der<< " ";
    der = strtok (NULL, " !',.-");
    }
cout<<endl;
system("pause");
return 0;
}
Добавлено через 29 минут
Правда новая проблема. Садист-препод сказала, чтобы между словом первого предложения и словом нового(с заглавной буквы которое), было 2 пробела.
Верный результат:
The sea was and the were huge__It was so was full of but we t

Добавлено через 31 минуту
Правильный вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <string>
using namespace std;
int f1(char * str);
int main ()
{
char str[500];
gets(str);
f1(str);
cout<<endl;
system("pause");
return 0;
}
 
int f1(char *str)
{
int hi=0;
char * der = strtok (str," !',.");// указываем разделители слов
    while (der != NULL)         
    { 
        
        if (( isupper(der[0]) && (strlen(der)<=4)) && (hi!=0))
            cout<<" "<<der<<" ";
        else
        if (strlen(der)<=4)
        cout<<der<<" ";
        hi++;
    der = strtok (NULL, " !',.");//переход на следующее слово после разделителя 
    }
    
    return 0;
}
0
7780 / 6550 / 2981
Регистрация: 14.04.2014
Сообщений: 28,610
20.11.2016, 11:11 7
strrok() - древняя функция. Откуда там второму пробелу взяться?
0
6 / 6 / 2
Регистрация: 26.01.2016
Сообщений: 29
20.11.2016, 11:27  [ТС] 8
nmcf, Пришлось добавить условие на пробел перед словом с заглавной буквы...У нашего университета существует сайт, через который мы компилируем задания. На сайте присутствует алгоритм проверяющий правильность ответа, так вот он и бесился, не принимал задание из-за пробела. Скорее всего это загон составителей ответов.
0
nmcf
20.11.2016, 11:32     Вывести слова строки, содержащие не более 4 букв
  #9

Не по теме:

Maslina, тогда рано университетом назвались. :)

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2016, 11:32

Дана строка символов. Найти и вывести все слова, содержащие более двух букв «a»
Задание-&gt; Дана строка символов. Найти и вывести все слова, содержащие более двух букв «a»....

Вывести на печать все слова строки, содержащие четное число букв
Дано строку символов, который состоит из отдельных слов, разделенных интервалом. Вывести на печать...

Напечатать все слова из предложения, содержащие более 6 букв
С клавиатуры ввести предложения. Напечатать все слова из этого предложения, содержащие более 6 букв...

Напечатать все слова из предложения, содержащие более 6 букв
С клавиатуры ввести предложения. Напечатать все слова из этого предложения, содержащие более 6 букв...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru