Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Yarikson86
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 28
#1

Найти все слова, содержащие латинские буквы (a, e, i, o, u) - C++

08.05.2014, 22:18. Просмотров 682. Ответов 2
Метки нет (Все метки)

Задан текст. Найти все слова, содержащие латинские буквы (a, e, i, o, u). Напечатать эти слова в порядке увеличения количества букв (a, e, i, o, u).
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2014, 22:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти все слова, содержащие латинские буквы (a, e, i, o, u) (C++):

Строки (вывести все слова, содержащие только латинские буквы) - C++
Здравствуйте, нужно вывести все слова, содержащие только латинские буквы. Задаётся последовательность, в которой слова разделены запятыми,...

В предложении найти и вывести на экран все слова, содержащие ровно две буквы “d” - C++
Всем привет! Помогите написать программу! В предложении найти и вывести на экран все слова, содержащие ровно две буквы “d”. Заранее...

Найти в тексте слова, в которых присутствуют только заглавные латинские буквы - C++
Вводится тест из заглавных и строчных латинских букв, пробелов. Количество символов в тексте не должно превышать 200. Слова разделяются...

Найдите все слова в предложении, содержащие по две буквы М, не стоящие рядом, и определите их количество - C++
Найдите все слова в предложении, содержащие по две буквы М, не стоящие рядом, и определите их количество c++

В строке найти слова содержащие ровно две буквы d - C++
Дана строка, в которой слова разделены одним пробелом. Напечатать все слова , содержащие ровно две буквы d. Помогите. Не знаю как...

Найти в тексте слова, содержащие две одинаковые буквы, стоящие рядом - C++
Имеется строка текста (на любом языке) из нескольких слов, разделённых пробелами и/или знаками препинания. Требуется найти в тексте и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
rikimaru2013
C++ Game Dev
2435 / 1129 / 240
Регистрация: 30.11.2013
Сообщений: 3,686
08.05.2014, 23:49 #2
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <cstring>
 
using namespace std;
 
int Print(char text[], int arr[][3], int current_print, int size)
{
    bool first_show = false;
    if(current_print == 0)
        return 0;
    for(int i=0; i < size;i++)
    {
        if( arr[i][2] == current_print)
        {
            if( first_show == false)
            {
                cout << endl << "Words with " << current_print << " letter's that you seach:" << endl;
                first_show = true;
            }
            for(int z=0;z<arr[i][0];z++)
            {
                cout << *(text+arr[i][1]+z);
            }
            cout << endl;
        }
    }
    return Print(text, arr, current_print-1, size);
}
void main()
{
    
    char text[] = "nyone who reads Old and Middle English literary texts will be familiar with the mid-brown volumes of the EETS, with the symbol of Alfred's jewel embossed on the front cover. Most of the works attributed to King Alfred or to Aelfric, along with some of those by bishop Wulfstan and much anonymous prose and verse from the pre-Conquest period, are to be found within the Society's three series; all of the surviving medieval drama, most of the Middle English romances, much religious and secular prose and verse including the English works of John Gower, Thomas Hoccleve and most of Caxton's prints all find their place in the publications. Without EETS editions, study of medieval English texts would hardly be possible.";
    int size = strlen(text);
 
    const int sssize = 500;
        int result[sssize][3] = {}; // 0 - word_Size, 1 - word_Start, 2 - counter
    int result_counter = 0;
 
    int max_counter_was = 0;
 
    int word_Start = 0;
    int word_Size = 0;
    int counter = 0;
    for(int i=0;i<size+1;i++)
    {
        switch( *(text+i) )
        {
            case '\0':
            case ' ': 
                if(counter > 0)
                {
                    if( counter > max_counter_was)
                        max_counter_was  = counter;
                    result[result_counter][0] = word_Size;
                    result[result_counter][1] = word_Start;
                    result[result_counter][2] = counter;
                    
                    result_counter++;
                }
                counter = 0; 
                word_Size = 0;
                word_Start = i+1; 
                break;
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u': counter++; 
            default: word_Size++; break;
        }
    }
    Print(text, result, max_counter_was, sssize);   
}
0
asics
Freelance
Эксперт С++
2847 / 1784 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
09.05.2014, 00:49 #3
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
33
34
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
#include <sstream>
#include <cctype>
#include <functional>
 
void split(std::vector<std::string> &vec, std::string str)
{
  std::replace_if(str.begin(), str.end(), std::ptr_fun(ispunct), ' ');
  std::istringstream ist(str);
  std::string tmp;
  while(ist >> tmp) vec.push_back(tmp);
}
 
int main()
{
  std::string some_text("afqw gsdgsd. qequwr boauufisdfiq. adas, lol;");
  std::vector<std::string> splited_text;
  split(splited_text, some_text);
  std::multimap<size_t, std::string> table;
  const std::string CHARS("aeiou");
  auto pred = [&](char val) ->bool {return CHARS.find(val) != std::string::npos;};
  for(auto &x : splited_text)
  {
    if(std::find_if(x.begin(), x.end(), pred) != x.end())
      table.insert(std::pair<size_t, std::string>(std::count_if(x.begin(), x.end(), pred), x));
  }
  std::for_each(table.begin(), table.end(), [](std::pair<size_t, std::string> val){
                std::cout << val.first << ' ' << val.second << '\n';});
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2014, 00:49
Привет! Вот еще темы с ответами:

Найти все слова, содержащие подстроку - C++
Дана строка, состоящая из нескольких слов, между соседними словами не менее одного пробела, за последним словом- точка. Найти все слова...

Найти все слова, содержащие подстроку ‘рок’ - C++
Дана строка, состоящая из нескольких слов, между соседними словами не менее одного пробела, за последним словом- точка. Найти все слова...

Вычислить множество, содержащие все буквы из А и все буквы из В - C++
Реализовать 4 способа представления множеств в памяти ЭВМ в программе, которая по заданным множествам A, B, C, D строчный русских букв...

В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра - C++
9. В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра. help


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru