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

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

Восстановить пароль Регистрация
 
АннаМария
 Аватар для АннаМария
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 4
22.09.2011, 12:12     Вывести слова без повторений,которые имеют больше гласных,чем согласных. #1
Пусть у нас есть текстовый файл,на который не накладываются ограничения относительно его размера. Также не накладываются ограничения на длину строки в этом файле.
Текст состоит из слов,например,идентификаторы английского языка. Слова разделяются промежутками, скобками,кодами операций,вообще символами,которые естественным образом отделяют слова друг от друга. Пусть ограничение на длину слова составляет 30 букв.
В поле результата нужно вывести слова без повторений,которые имеют больше гласных,чем согласных.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2011, 12:12     Вывести слова без повторений,которые имеют больше гласных,чем согласных.
Посмотрите здесь:

Ввести с клавиатуры целое число n и записать в новый файл те слова, которые содержат n или больше согласных C++
C++ Работа со строчками (вывести в столбец все слова без повторений и количеством использования каждого слова)
Ввести строку. Выдать все слова, которые имеют длину больше, чем длина последнего слова строки C++
Определить слова, в которых больше гласных букв, чем согласных C++
В строке найти слова, в которых гласных букв больше, чем согласных C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
22.09.2011, 16:29     Вывести слова без повторений,которые имеют больше гласных,чем согласных. #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
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")
            );            
    }
}
АннаМария
 Аватар для АннаМария
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 4
22.09.2011, 18:20  [ТС]     Вывести слова без повторений,которые имеют больше гласных,чем согласных. #3
Спасибо большущее з помощь!
Еще один вопросик:как подключить в проект файл f.txt? Потому что постоянно пишет,что невозможно открыть файл
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.09.2011, 18:25     Вывести слова без повторений,которые имеют больше гласных,чем согласных. #4
АннаМария, перенесите файлик в ту же папку что и екзешник и запустите екзешник
Vedola
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 7
22.09.2011, 19:11     Вывести слова без повторений,которые имеют больше гласных,чем согласных. #5
Помогите пожалуйста написать лабу на С.

1. Дан массив а, состоящий из 10 целых чисел.
Определить, сколько раз повторяется наибольшее значение, вывести порядковые номера соответствующих елементов.
Упорядочить массив по убыванию.
Найти произведение всех элементов аi, для которых верно ai (x, y вводить с клавиатуры). Числа не принадлежащие заданному интервалу заменить нулями.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.09.2011, 19:13     Вывести слова без повторений,которые имеют больше гласных,чем согласных. #6
Цитата Сообщение от Vedola Посмотреть сообщение
Помогите пожалуйста написать лабу на С.
один вопрос - одна тема

Добавлено через 13 секунд
и ваши нароботки покажите
Slimmy
 Аватар для Slimmy
65 / 18 / 2
Регистрация: 09.10.2010
Сообщений: 97
22.09.2011, 20:11     Вывести слова без повторений,которые имеют больше гласных,чем согласных. #7
Цитата Сообщение от Jupiter Посмотреть сообщение
один вопрос - одна тема
Добавлено через 13 секунд
и ваши нароботки покажите

Не по теме:

Это пользователь таск-спамер. Не нужно ему помогать! Он плохой

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2011, 22:59     Вывести слова без повторений,которые имеют больше гласных,чем согласных.
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
АннаМария
 Аватар для АннаМария
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 4
22.09.2011, 22:59  [ТС]     Вывести слова без повторений,которые имеют больше гласных,чем согласных. #8
Цитата Сообщение от Jupiter Посмотреть сообщение
АннаМария, перенесите файлик в ту же папку что и екзешник и запустите екзешник
спасибо,помогло,все работает
огромное спасибо всем за помощь!
Yandex
Объявления
22.09.2011, 22:59     Вывести слова без повторений,которые имеют больше гласных,чем согласных.
Ответ Создать тему
Опции темы

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