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

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

Войти
Регистрация
Восстановить пароль
 
_масяня_
28 / 28 / 2
Регистрация: 18.12.2010
Сообщений: 158
#1

Перенос слов в файле - C++

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

Здравствуйте уважаемые программисты. Столкнулся с такой задачей: Имеется файл с текстом на русском языке. Сделать перенос всех его слов. Перенос возможен по следующим правилам:
1) переносятся либо остаются в конце строки не менее двух символов;
2) невозможен перенос перед буквами 'ь' и 'ъ';
Как такое возможно реализовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2011, 12:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перенос слов в файле (C++):

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

Сравнение слов в одном файле со словами в другом файле - C++
Здравствуйте! Суть задачи такая: 1. Первый файл - запросы с городами, второй файл - база городов РФ. Оба txt 2. Найти в запросах все...

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

Перенос строки в текстовом файле - C++
Здравствуйте, есть два текстовых файла, я считываю из одного и записываю в другой, если попадается символ "N" нужно сделать перенос строки....

Количество слов в файле. С++ - C++
Здравствуйте. Требуется посчитать количество слов в файле. Искала по темам, но что ни делаю - выдаёт ошибки. Пишу строковую переменную ...

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

7
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
18.10.2011, 13:24 #2
Цитата Сообщение от _масяня_ Посмотреть сообщение
Как такое возможно реализовать?
по правилам русского языка
http://www.gramota.ru/spravka/rules/?rub=perenos

Добавлено через 1 минуту
кстати такая же задача есть у Мозгового, на самостоятельное выполнение)
0
_масяня_
28 / 28 / 2
Регистрация: 18.12.2010
Сообщений: 158
18.10.2011, 13:27  [ТС] #3
Что за Мозговой? и как это возможно реализовать програмно?
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
18.10.2011, 13:34 #4
Цитата Сообщение от _масяня_ Посмотреть сообщение
как это возможно реализовать програмно
вечером скину полунедопиленный вариант
Цитата Сообщение от _масяня_ Посмотреть сообщение
Что за Мозговой
Автор книги 85 нетривиальных проектов, решений и задач
1
_масяня_
28 / 28 / 2
Регистрация: 18.12.2010
Сообщений: 158
18.10.2011, 13:47  [ТС] #5
Спасибо. Буду ждать

Добавлено через 1 минуту
У кого нибудь есть еще какие нибудь мысли о реализации? Задача достаточно сложная и интерестная.
0
Mogul-kan
23 / 23 / 2
Регистрация: 24.04.2010
Сообщений: 220
18.10.2011, 21:43 #6
Люди есть у кого нибудь варианты как это делается. Нужен перенос по слогам.
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
23.10.2011, 13:41 #7
Цитата Сообщение от Mogul-kan Посмотреть сообщение
есть у кого нибудь варианты как это делается
впринципе здесь просто нужно перебирать правила переноса

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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <vector>
#include <windows.h> //CharToOem
 
static const std::string SOUND      = "ъь";
static const std::string VOWELS     = "уеыаоэяию";
static const std::string CONSONANTS = "цкнгшщзхфвпрлджчсмтб";
 
//й
 
///////////////////////////////////////////////////////////////
 
//согласная ли буква?
bool IsConsonants(char ch)
{
    std::size_t pos = CONSONANTS.find(ch);
    return (pos == std::string::npos) ? false : true;
}
 
 
//гласная ли буква?
bool IsVowels(char ch)
{
    std::size_t pos = VOWELS.find(ch);
    return (pos == std::string::npos) ? false : true;
}
 
 
//буква - звук?
bool IsSound(char ch)
{
    std::size_t pos = SOUND.find(ch);
    return (pos == std::string::npos) ? false : true;
}
 
//////////////////////////////////////////////////
void Prepare(std::string& word)
{
    std::string res = "";
 
    for (std::size_t i = 0; i < word.size() - 1; ++i)
        res = res + word[i] + '-';
    res += word[word.size()-1];
 
    word = res;
}
//////////////////////////////////////////////////////////
 
//существует ли в оставшейся части слова хотябы 1 гласная
bool ExistsGlasInPart(const std::string& word, int pos)
{
    for (std::size_t i = pos; i < word.size(); ++i)
    if (IsVowels(word[i]))
        return true;
    return false;
}
 
 
//////////////////////////////////////////////////////////
std::string DoWordWrap(const::std::string& word)
{
    std::string res = "";
 
    for (std::size_t i = 0; i < word.size(); ++i)
    {
        //118
        if (IsConsonants(word[i-1]) && IsVowels(word[i+1]))
            continue;
 
        //119
        //нельзя отрывать ь ъ от предшеств согласной
        if (IsConsonants(word[i-1]) && IsSound(word[i+1]))
            continue;
 
        //нельзя отрывать й от предшеств гласной
        if (IsVowels(word[i-1]) && word[i+1] == 'й')
           continue;
 
        //нельзя оставлять или переносить 1 букву
        if (i == 1 || i == word.size() - 2)
            continue;
 
        //нельзя переносить часть слова если в ней нет гласных
        if (!ExistsGlasInPart(word, i) && word[i] == '-')
            continue;
            
        //правило n1
        
        //правило n2
        
        //правило n3
 
        else
            res += word[i];
    }
 
    return res;
 
}
 
 
//////////////////////////////////////////////////////////
char buf_result[255];
//разбить и распечатать все слова в словаре
void PrintWordWrap(const std::vector<std::string>& dictionary)
{
    std::size_t size = dictionary.size();
 
    for (std::size_t i = 0; i < size; ++i)
    {
        std::string s = dictionary[i];
        Prepare(s);
        std::string result = DoWordWrap(s);
        CharToOem(result.c_str(), buf_result);
        std::cout << buf_result << std::endl;
    }
}
//////////////////////////////////////////////////////////
 
 
int main()
{
    std::vector<std::string> dictionary;
 
    dictionary.push_back("акация");
    dictionary.push_back("подъезд");
    dictionary.push_back("бульон");
    dictionary.push_back("программирование");
    dictionary.push_back("полянка");
    dictionary.push_back("жесть");
    dictionary.push_back("скилл");
    dictionary.push_back("майор");
    dictionary.push_back("розыгрыш");
    dictionary.push_back("фейерверк");
    dictionary.push_back("мойка");
 
 
    PrintWordWrap(dictionary);
 
    return 0;
}
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
23.10.2011, 13:42 #8
рез-ат
2
Миниатюры
Перенос слов в файле  
23.10.2011, 13:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2011, 13:42
Привет! Вот еще темы с ответами:

Поиск слов в файле. - C++
Помогите чё-то не получается написать программу выполняющую поиск строки в файле ,содерж.заданное число ключевых слов... заранее...

Поиск слов в файле - C++
есть файл с текстом, нужно написать програму которая пригласит пользователя ввести слово и будет выводить предложения из файла в которых...

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

Подсчет слов в файле. - C++
Помогите решить задачку... Прочитать файл и подсчитать число слов в файле.Слово считается от пробела до пробела.


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

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

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