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

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

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

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

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

Задан текст. Найти все слова, содержащие латинские буквы (a, e, i, o, u). Напечатать эти слова в порядке увеличения количества букв (a, e, i, o, u).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2014, 22:18     Найти все слова, содержащие латинские буквы (a, e, i, o, u)
Посмотрите здесь:
C++ Строки (вывести все слова, содержащие только латинские буквы)
C++ В предложении найти и вывести на экран все слова, содержащие ровно две буквы “d”
C++ Найти в тексте слова, в которых присутствуют только заглавные латинские буквы
C++ Найдите все слова в предложении, содержащие по две буквы М, не стоящие рядом, и определите их количество
В строке найти слова содержащие ровно две буквы d C++
C++ Найти в тексте слова, содержащие две одинаковые буквы, стоящие рядом
C++ Найти все слова, содержащие подстроку
Найти все слова, содержащие подстроку ‘рок’ C++
C++ Вычислить множество, содержащие все буквы из А и все буквы из В
В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра C++
C++ Для заданного достаточно длинного слова найти в имеющемся тексте все слова, в которых использованы только буквы, имеющиеся в заданном слове
C++ Поменять все буквы а на a (русские на латинские) и к на k

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
2419 / 1113 / 240
Регистрация: 30.11.2013
Сообщений: 3,661
08.05.2014, 23:49     Найти все слова, содержащие латинские буквы (a, e, i, o, u) #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);   
}
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
09.05.2014, 00:49     Найти все слова, содержащие латинские буквы (a, e, i, o, u) #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;
}
Ответ Создать тему
Опции темы

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