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

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

Восстановить пароль Регистрация
 
Yarikson86
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 28
08.05.2014, 22:18     Найти все слова, содержащие латинские буквы (a, e, i, o, u) #1
Задан текст. Найти все слова, содержащие латинские буквы (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++ Вычислить множество, содержащие все буквы из А и все буквы из В
C++ Найти все слова, содержащие подстроку
Найти все слова, содержащие подстроку ‘рок’ C++
C++ Строки (вывести все слова, содержащие только латинские буквы)
C++ 4. Найдите все слова в предложении, содержащие по две буквы М, не стоящие рядом, и определите их количество
C++ В предложении найти и вывести на экран все слова, содержащие ровно две буквы “d”
C++ Найти в тексте слова, в которых присутствуют только заглавные латинские буквы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2139 / 972 / 223
Регистрация: 30.11.2013
Сообщений: 3,241
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
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
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;
}
Yandex
Объявления
09.05.2014, 00:49     Найти все слова, содержащие латинские буквы (a, e, i, o, u)
Ответ Создать тему
Опции темы

Текущее время: 22:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru