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

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

Войти
Регистрация
Восстановить пароль
 
АннаМария
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 4
#1

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

22.09.2011, 12:12. Просмотров 806. Ответов 7
Метки нет (Все метки)

Пусть у нас есть текстовый файл,на который не накладываются ограничения относительно его размера. Также не накладываются ограничения на длину строки в этом файле.
Текст состоит из слов,например,идентификаторы английского языка. Слова разделяются промежутками, скобками,кодами операций,вообще символами,которые естественным образом отделяют слова друг от друга. Пусть ограничение на длину слова составляет 30 букв.
В поле результата нужно вывести слова без повторений,которые имеют больше гласных,чем согласных.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2011, 12:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести слова без повторений,которые имеют больше гласных,чем согласных. (C++):

Вывести слова, содержащие гласных букв больше, чем согласных - C++
вывести слова, содержащие гласных букв больше, чем согласных

Определить слова, в которых больше гласных букв, чем согласных - C++
В программировании пока не силен. Не могу решить 3 интересных задачки. Нужна помощь. 1) В предложении, вводимом пользователем с...

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

Определить, есть ли в строке слова, в которых гласных больше чем согласных - C++
Подскажите пожалуйста, что не так в коде: #include <iostream> #include <conio.h> #include <string> using namespace std; int...

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

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

7
Mr.X
Эксперт С++
3050 / 1695 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
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")
            );            
    }
}
1
АннаМария
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 4
22.09.2011, 18:20  [ТС] #3
Спасибо большущее з помощь!
Еще один вопросик:как подключить в проект файл f.txt? Потому что постоянно пишет,что невозможно открыть файл
0
Jupiter
Каратель
Эксперт С++
6558 / 3979 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.09.2011, 18:25 #4
АннаМария, перенесите файлик в ту же папку что и екзешник и запустите екзешник
1
Vedola
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 7
22.09.2011, 19:11 #5
Помогите пожалуйста написать лабу на С.

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

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

Не по теме:

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

1
АннаМария
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 4
22.09.2011, 22:59  [ТС] #8
Цитата Сообщение от Jupiter Посмотреть сообщение
АннаМария, перенесите файлик в ту же папку что и екзешник и запустите екзешник
спасибо,помогло,все работает
огромное спасибо всем за помощь!
0
22.09.2011, 22:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2011, 22:59
Привет! Вот еще темы с ответами:

Найти слова, которые состоят из 3х и более букв и имеют более 2х гласных - C++
Написать функцию, которая выводит слова, которые состоят из 3 х и более букв и имеющих более 2х гласных. Результат сохранить в файл...

Работа со строчками (вывести в столбец все слова без повторений и количеством использования каждого слова) - C++
Ввести строку. Учитывая что строка может содержать слова которые повторяются, вывести в столбец все слова без повторений и количеством...

Ввести с клавиатуры целое число n и записать в новый файл те слова, которые содержат n или больше согласных - C++
Дана задача: Задан файл формата .txt с текстом на английском языке, ввести с клавиатуры целое число n и записать в новый файл те слова,...

Найти и вывести все слова, у которых число гласных букв превышает число согласных - C++
Задание: Дан массив из n слов произвольной длины (длина слова не превышает 80 символов). Символами могут быть только заглавные...


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

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

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