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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ C++ подключение текстовых файлов http://www.cyberforum.ru/cpp-beginners/thread368220.html
Привет. Прошу прощения, если подобная тема уже есть, но я ее не нашел Как вижуал с++ подключить текстовый файл для чтения и записи? Нужно, чтобы программа прочитала данные в текстовом файле, произвела над ними действия и записала полученное число в другом текстовом файле? В примере дается решение, но какбы шаблонное(стандартное) и в нем вроде используются функции из С. Вот что у меня получилось,...
C++ Связанный список Не могу обратиться к методу класса Node хотя они выраженны как public: void addNode(int d); void printList(); #include<iostream> using namespace std; struct Node// структура описывающия узел связанного списка { int data; Node *next;// указатель типа Node }; http://www.cyberforum.ru/cpp-beginners/thread368183.html
Импорт из dll перегруженных операторов C++
Здравствуйте, уважаемые программисты! По заданию необходимо при явном подключении dll импортировать класс. С обычными методами все понятно, делаю так: class cFloatMatr { public: ...... bool (*isKvadr)(); ......
Связанный список C++
Доброе утро есть ли у кого пример Связанного списка. И чем он вообще отличаетьсяот массива кроме того , что связанный список динамичен.
C++ Целесообразность использования цикла. http://www.cyberforum.ru/cpp-beginners/thread368107.html
Этот момент в универе нам не объясняли. Хочу сразу сказать, я знаю зачем, как и когда используются циклы. Собственно возник не большой спор. Какое преимущество будет иметь код for (int i = 0; i < 10; ++i) <действие> перед просто десятью строками типа <действие> <действие> <действие> <действие>?
C++ Среди чисел а, b, с есть хотя бы одна пара взаимно противоположных. Запишите логическое выражение, принимающее значение true, если указанное выше высказывание является истинным, и false – в противном случае. подробнее

Показать сообщение отдельно
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
23.10.2011, 13:41     Перенос слов в файле
Цитата Сообщение от 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;
}
 
Текущее время: 08:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru