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

Вывести слова без повторений,которые имеют больше гласных,чем согласных. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ задачки на С++. циклы и двумерные массивы http://www.cyberforum.ru/cpp-beginners/thread354857.html
Помогите решить задачки по C++ к зачету. очень нужно 1. Цикл For... Среди всех n-значных чисел (n = 1,2,3,4) указать те, сумма цифр которых равна данному числу k. 2. двумерные массивы Дана целочисленная квадратная матрица. Найти в каждой строке наиболь¬ший элемент и поменять его местами с элементом главной диагонали. Дана действительная квадратная матрица порядка 2N. Подучить новую матрицу,...
C++ Teacher's Day Teacher’s day is celebrated each year on the first Sunday of the October. Given natural number n, that represents the number of the year. Output the date of the Teacher’s day of that year. Example: Input: 2010 Output 3 http://www.cyberforum.ru/cpp-beginners/thread354842.html
Problem : pow C++
Для натуральных чисел a и n вычислить an. Ввод В первой строке находятся разделённые пробелом a и n. Вывод Выводится одно число - результат без стоящих впереди нулей, стоящих впереди и позади пробелов. Ограничения 1 ≤ a ≤ 9; 1 ≤ n ≤ 7000. Ввод 1 Ввод 2
C++ Triangle
Given 3 positive real numbers x, y, z. Output "YES" if it is possible to construct a triangle with side lengths x, y, z. Output "NO" otherwise. Example: Input: 3 4 5 Output YES Example:
C++ if else http://www.cyberforum.ru/cpp-beginners/thread354827.html
Даны три вещественных числа x, y, z. Вывести "YES", если x<y<z, "NO" в других случаях. Example: Input: 3.1 4.1 5.1 Output YES Example:
C++ значения функции Необходимо вывести на экран значения функции Y(x) для х изменяющихся от xn до xk с шагом h равным h=(xk-xn)/10. при Xn=0,1 X1=1 и Y(x)=cosx подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
3011 / 1667 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
22.09.2011, 16:29     Вывести слова без повторений,которые имеют больше гласных,чем согласных.
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/////////////////////////////////////////////////////////////////////////////////////////
// Есть текстовый файл, на который не накладываются ограничения относительно его размера. 
// Также не накладываются ограничения на длину строки в этом файле.
// Текст состоит из слов,например,идентификаторы английского языка. Слова разделяются 
// промежутками, скобками,кодами операций, вообще символами, которые естественным образом 
// отделяют слова друг от друга. Пусть ограничение на длину слова составляет 30 букв.
// В поле результата нужно вывести слова без повторений, которые имеют больше гласных,
// чем согласных.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cctype>
#include <fstream>
#include <iostream>
#include <set>
#include <sstream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string       T_str;
typedef T_str             T_word;
typedef std::set<T_word>  T_words;
/////////////////////////////////////////////////////////////////////////////////////////
bool  is_vowel(char  c)
{
    static const T_str  vowels = "aeiouy";
    return  vowels.find( tolower(c) ) != T_str::npos;
}
/////////////////////////////////////////////////////////////////////////////////////////
bool  has_not_more_vowels(const T_word&  word)
{
    return  
        std::count_if
            (
                word.begin(),
                word.end(),
                is_vowel
            ) * 2 <= int( word.size() );
}
/////////////////////////////////////////////////////////////////////////////////////////
bool  get_more_vowels_words_from
    (
        const T_str  filename,
        T_words&     words
    )
{   
    std::ifstream  file( filename.c_str() );    
    if(!file)
    {
        return false;
    }
 
    std::ostringstream  sout;
    sout << file.rdbuf();
    T_str  line = sout.str(); 
 
    T_str       line_new;
    const char  SPACE_SYMB = ' ';
 
    std::replace_copy_if
        (
            line.begin(),
            line.end(),
            std::back_inserter(line_new),
            std::not1( std::ptr_fun(isalpha) ),                
            SPACE_SYMB
        );
 
    std::istringstream  ssin(line_new);
 
    std::remove_copy_if
        (
            std::istream_iterator<T_word>(ssin),
            std::istream_iterator<T_word>(),
            std::inserter( words, words.begin() ),            
            has_not_more_vowels
        );
   
    return  true;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    T_str  filename = "f.txt";
 
    T_words  more_vowels_words; 
    if( !get_more_vowels_words_from(filename, more_vowels_words) )
    {
        std::cout << "Невозможно открыть файл "
                  << filename
                  << std::endl;        
    }
    else
    {
        std::cout << "В файле "
                  << filename
                  << " содержатся следующие слова, содержащие больше гласных:"
                  << std::endl;
        
        std::copy
            (
                more_vowels_words.begin(),
                more_vowels_words.end(),
                std::ostream_iterator<T_word>(std::cout, "\n")
            );            
    }
}
 
Текущее время: 01:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru