Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 22.04.2018
Сообщений: 57
1

Вывести слова заданного текста в соответствии с ростом доли гласных в этих словах

18.09.2018, 19:06. Показов 1383. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Никогда не работал с C++, 2 курс университета, надо написать программу по заданию на тему "Обработка текста"

Задание:
Разработать программу, которая вводит текст на английском языке
и выводит слова заданного текста в соответствии с ростом доли
гласных в этих словах (a, e, i, o, u, y).

Заранее спасибо :3
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2018, 19:06
Ответы с готовыми решениями:

Переставить слова заданного предложения в соответствии с ростом согласных в этих словах.
Добрый день. В универе дали задачку "Переставить слова заданного предложения в соответствии с...

Переставить и распечатать слова заданного предложения в соответствии с ростом доли согласных в этих словах
Помогите пожалуйста ,переставить и распечатать слова заданного предложения в соответствии с ростом...

Переставить слова заданного предложения в соответствии с ростом согласных в этих словах. Исправить программу
Переставить слова заданного предложения в соответствии с ростом согласных в этих словах. uses...

Даны два слова из прописных гласных, определить количество гласных в этих словах
Помогите написать код. Условие задачи "Даны два слова из прописных гласных, определить количество...

5
115 / 83 / 43
Регистрация: 19.01.2018
Сообщений: 484
18.09.2018, 20:09 2
Цитата Сообщение от lolkekcheburec Посмотреть сообщение
соответствии с ростом доли гласных в этих словах (a, e, i, o, u, y).
прошу прощения, можно подробнее об этом, а то я как человек не учивший русский, не могу догнать что тут сказано.
0
165 / 108 / 57
Регистрация: 30.08.2018
Сообщений: 357
18.09.2018, 20:42 3
RostikTawer, похоже, отсортировать слова по количеству в них гласных .
Отсортировать по возростанию и вывести.
0
0 / 0 / 0
Регистрация: 22.04.2018
Сообщений: 57
18.09.2018, 21:34  [ТС] 4
JaponDemon, RostikTawer, набросал текст проги, но выдается куча ошибок и файл exe не компилится:

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
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <set>
#include <functional>
#include <cctype>
#include <algorithm>
#include <iterator>
#include "StdAfx.h"
#include <windows.h>
using namespace std; 
int main(){
 
    std::string input, input_clean;
    std::getline(std::cin, input);
 
    std::vector<std::string> words;
 
    std::remove_copy_if(input.cbegin(), input.cend(), std::back_inserter(input_clean), ispunct);
 
    std::istringstream is(input_clean);
    std::copy(std::istream_iterator<std::string>(is), std::istream_iterator<std::string>(), std::back_inserter(words));
 
    std::sort(words.begin(), words.end(), [](std::string a, std::string b){
        static const std::function<double(const std::string&)> stod = [](const std::string& s) -> double{
            const std::set<char> vowels = {'a', 'e', 'i', 'o', 'u', 'y'};
            const double rate = 1. / s.size();
            double res = 0;
            for(std::string::const_iterator it = s.cbegin(); it != s.cend(); ++it)
                if ( vowels.find( tolower(*it) ) != vowels.cend() ) res += rate;
            return res;
    
        };
    
        const double d_a = stod(a), d_b = stod(b);
 
        return d_a == d_b ? a.size() < b.size() : d_a > d_b;
    });
 
    for(std::vector<std::string>::const_iterator it = words.cbegin(); it != words.cend(); it++)
        std::cout << *it << std::endl;
 
    return 0;
}
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.09.2018, 22:06 5
Цитата Сообщение от lolkekcheburec Посмотреть сообщение
Никогда не работал с C++
Цитата Сообщение от lolkekcheburec Посмотреть сообщение
набросал текст проги
Цитата Сообщение от lolkekcheburec Посмотреть сообщение
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
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <set>
#include <functional>
#include <cctype>
#include <algorithm>
#include <iterator>
#include "StdAfx.h"
#include <windows.h>
using namespace std; 
int main(){
 
    std::string input, input_clean;
    std::getline(std::cin, input);
 
    std::vector<std::string> words;
 
    std::remove_copy_if(input.cbegin(), input.cend(), std::back_inserter(input_clean), ispunct);
 
    std::istringstream is(input_clean);
    std::copy(std::istream_iterator<std::string>(is), std::istream_iterator<std::string>(), std::back_inserter(words));
 
    std::sort(words.begin(), words.end(), [](std::string a, std::string b){
        static const std::function<double(const std::string&)> stod = [](const std::string& s) -> double{
            const std::set<char> vowels = {'a', 'e', 'i', 'o', 'u', 'y'};
            const double rate = 1. / s.size();
            double res = 0;
            for(std::string::const_iterator it = s.cbegin(); it != s.cend(); ++it)
                if ( vowels.find( tolower(*it) ) != vowels.cend() ) res += rate;
            return res;
    
        };
    
        const double d_a = stod(a), d_b = stod(b);
 
        return d_a == d_b ? a.size() < b.size() : d_a > d_b;
    });
 
    for(std::vector<std::string>::const_iterator it = words.cbegin(); it != words.cend(); it++)
        std::cout << *it << std::endl;
 
    return 0;
}
для начала неплохо
Цитата Сообщение от lolkekcheburec Посмотреть сообщение
ростом доли гласных в этих словах (a, e, i, o, u, y).
Цитата Сообщение от JaponDemon Посмотреть сообщение
похоже, отсортировать слова по количеству в них гласных
апельсин видели ? там есть дольки ( доли ), т.е. части. то есть требуется отсортировать, чтобы доля гласных в слове (процентная часть гласных относительно других букв слова) была самая маленькая, а затем увеличивалась.
1
165 / 108 / 57
Регистрация: 30.08.2018
Сообщений: 357
18.09.2018, 22:07 6
Yetty, точно. Честно знал. но забыл )
0
18.09.2018, 22:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2018, 22:07
Помогаю со студенческими работами здесь

Упорядочить слова заданного предложения в соответствии с ростом их характеристик
Задание: Характеристикой слова назовем длину содержащейся в нем максимальной серии. Упорядочить...

Упорядочить слова заданного предложения в соответствии с ростом их длины
Помогите решить данную задачку: Упорядочить слова заданного предложения в соответствии с ростом их...

Упорядочить слова заданного предложения в соответствии с ростом их характеристик
Характеристикой слова назовем длину содержащейся в нем мак- симальной серии. Упорядочить слова...

Упорядочить строки матрицы в соответствии с ростом доли цифр
Добрый день, есть задача &quot;Дана символьная матрица. Упорядочить строки матрицы в соответствии с...

Дана символьная матрица. Упорядочить строки матрицы в соответствии с ростом доли цифр
Товарищи программисты, напишите, пожалуйста, код на Паскале Очень важно учитывать, что дана...

Из заданного текста на русском языке вывести слова с максимальным количеством гласных букв
Помогите исправить код, пожалуйста. Задание: Из заданного текста на русском языке вывести слова с...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru