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

Английские слова: перевод из единственного числа во множественное - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перевод из консольного вида в обычный http://www.cyberforum.ru/cpp-beginners/thread697862.html
задачка: Дан текстовый файл..считать из него ( это я знаю как), потом изменить в нем строку(вводиться пользователем какую заменить и на что) и сохранить. #include <stdio.h> #include <string.h> /* stf - что ищем; rtf - на что меняем; fpath - путь к файлу; str - стока текста*/ int main () { char file_path = { 0 }, stf = { 0 }, rtf = { 0 }, str = { 0 }; FILE* file = NULL;
C++ Литература по связаным спискам Кто знает какую нить хорошую литературу по связаным спискам где хорошо и понятно росписано "что где и почему...". http://www.cyberforum.ru/cpp-beginners/thread697853.html
Windows Forms VisualStudio2010 C++
Доброго времени суток! Господа,может кто подскажет, как реализовать данный код в WinForms? С созданием шаблона окна все понятно, затруднение в том,как заставить программу выполнять вычисление по нажатии кнопки. Как это все связать? Буду благодарен,если кто подскажет хорошую инфу по теме. #include <iostream> int main() { double x,y,a;
устранить ошибку C++
помогите пожалуста устранить ошибку в програме.. #include <stdio.h> #include <time.h> #include <math.h> #include <conio.h> #include <stdlib.h> double func(int a, int b, int c) { return (4.5*abs(a-b)*sqrt(c));
C++ Литература о Связаные списках http://www.cyberforum.ru/cpp-beginners/thread697830.html
Здравствуйте, кто знает какую нить литературу по которой можно понять связаные списки. И зачем нужны связаные списки.
C++ как соединить b и с в число, если а это число, б это десятки перевернутого числа, с это единицы перевернутого числа вот в это строчке c=a+b,c; как соединить b и с в число, если а это число, б это десятки перевернутого числа, с это единицы перевернутого числа вот в это строчке c=a+b,c; #include <stdio.h> int main() { int a,b,c; printf("vvedite chislo "); scanf("%d", &a); c=a%10; b= a-c; b=a/10; c=a+b,c; подробнее

Показать сообщение отдельно
Sublimee
7 / 7 / 0
Регистрация: 14.11.2012
Сообщений: 69
14.11.2012, 21:01     Английские слова: перевод из единственного числа во множественное
В программе в комментарии, то что не могу сделать.
Описание:
В файле in.txt находятся слова на английском языке в единственном числе (через запятую, табуляции и переносы строк игнорируются). Пробелы внутри "слов" (т.е. пробелы без запятых) не считаются разделителями (т.е. "black fox" считается одним словом и обрабатывается соответственно), пробелы в начале и в конце слов выкидываются.
В выходной файл out.txt нужно вывести те же слова, но во множественном числе согласно следующим упрощённым правилам (эти правила сильно упрощены, на самом деле правила образования множественного числа в английском языке значительно сложнее):
К словам, не подходящим под все остальные правила, добавляется в конец символ 's' (boy - boys);
К словам, оканчивающимся на -s, -x, -sh, -ch и не подпадающим под другие правила, добавляется 'es' (brush - brushes);
В словах, оканчивающихся на -y, окончание заменяется на -ies (family - families);
В словах, оканчивающихся на -is, окончание меняется на -es (axis - axes);
В словах, оканчивающихся на -us, окончание меняется на -i (alumnus - alumni);
В словах, оканчивающихся на -on, окончание меняется на -a (phenomenon - phenomena);
В словах, оканчивающихся на -um, окончание меняется на -a (medium - media, datum - data);
В словах, оканчивающихся на -ex или -ix, окончание меняется на -ices (vertex - vertices, matrix - matrices);
В словах, оканчивающихся на -ma, окончание меняется на -mata (stigma - stigmata, dogma - dogmata);
В словах, оканчивающихся на -a и не подпадающих под другие правила, окончание меняется на -ae (formula - formulae);
Слова fish, sheep, deer, tuna, salmon, trout остаются неизменными.

Помимо этого, следует игнорировать все слова, которые не являются английскими (в которых присутствуют буквы, не входящие в английский алфавит) и выводить их в неизменном виде. Слова в выходном файле должны быть выведены через запятую, после каждой запятой должен стоять пробел, а перед ней - не должен. Через каждые три слова после запятой ставится перенос строки.

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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
#include <iostream>
#include <fstream>
using namespace std;
 
 int main(void)
{
int izm=0,code,s=0,szn=0,dl=0,i=0;
char c,vs[20];
ifstream in ("in.txt"); //файл с входными данными
ofstream out ("out.txt");//файл с выходныии данными
 
vs[0]='\0'; // строка с очередным прочитанным словом
 
// проверка открытия файла
if (in==NULL)
    {
        cout <<"Файл in.txt для чтения не открыт."<<endl;
        return 1;
    }
 
 
while(!in.eof()) // читаем символ  пока не конец файла
{     
    in>>c;       
    if (c==',') || (c==' ') // если очередной прочитанный символ ',' и '[B] '(пробел) 
//(именно это я и не могу реализовать, 
//так как char пропускает пробелы, и не знаю что делать)[/B] , то обрабатываем временную строку
    {
        if (vs[0]!='\0')    // если временная строка не пустая, то записываем в dl длину строки
        {   
            vs[i]='\0'; 
            dl=strlen (vs);  
            for (szn=0;szn<dl;szn++)
            {
                code=(int)vs[szn]; // проверяем наличие не английских букв в слове
                if ((code<65)||(code>122)||((code>90)&&(code<97))) 
                {
                    s++; // кол-во не английских символов
                }
 
            }
            if (s!=0)
            {   
            out<<vs;
            out<<", ";
            }
            else 
            {
                if ((!strcmp(vs,"fish")) || (!strcmp(vs,"sheep")) ||(!strcmp(vs,"deer"))
                ||(!strcmp(vs,"tuna")) ||(!strcmp(vs,"salmon")) || (!strcmp(vs,"trout")) )
                {
                    cout<<vs;
                    out<<", ";
                }
                else 
                {
                    if (dl>1) 
                    {
                        if ((vs[dl-2]=='s') && (vs[dl-1]=='h')) 
                        {
                            vs[dl+2]='\0';
                            vs[dl]='e';
                            vs[dl+1]='s';
                            out<<vs;
                            out<<", ";
                            izm++;
                        }
                        if ((vs[dl-2]=='c') && (vs[dl-1]=='h') && (izm==0))
                        {
                            vs[dl+2]='\0';
                            vs[dl]='e';
                            vs[dl+1]='s';
                            out<<vs;
                            out<<", ";
                            izm++;
                        }
                        if ((vs[dl-2]=='i') && (vs[dl-1]=='s')&& (izm==0))
                        {
                            vs[dl-2]='e';
                            out<<vs;
                            out<<", ";
                            izm++;
                        }
                        if ((vs[dl-2]=='u') && (vs[dl-1]=='s')&& (izm==0))
                        {
                            vs[dl-2]='i';
                            vs[dl-1]='\0';
                            out<<vs;
                            out<<", ";
                            izm++;
                        }
                        if ((vs[dl-2]=='o') && (vs[dl-1]=='n')&& (izm==0)) 
                        {
                            (vs[dl-2]='a');
                            (vs[dl-1]='\0');
                            out<<vs;
                            out<<", ";
                            izm++;
                        }
                        if ((vs[dl-2]=='u') && (vs[dl-1]=='m')&& (izm==0)) 
                        {
                            vs[dl-2]='a';
                            vs[dl-1]='\0';
                            out<<vs;
                            out<<", ";
                            izm++;
                        }
                        if ((vs[dl-2]=='e') && (vs[dl-1]=='x')&& (izm==0)) 
                        {
                            vs[dl+2]='\0';
                            vs[dl-2]='i';
                            vs[dl-1]='c';
                            vs[dl]='e';
                            vs[dl+1]='s';
                            out<<vs;
                            out<<", ";
                            izm++;
                        }
                        if ((vs[dl-2]=='i') && (vs[dl-1]=='x')&& (izm==0))
                        {
                            vs[dl+2]='\0';
                            vs[dl-1]='c';
                            vs[dl]='e';
                            vs[dl+1]='s';
                            out<<vs;
                            out<<", ";
                            izm++;
                        }   
                        if ((vs[dl-2]=='m') && (vs[dl-1]=='a')&& (izm==0))
                        {
                            vs[dl+2]='\0';
                            vs[dl]='t';
                            vs[dl+1]='a';
                            out<<vs;
                            out<<", ";
                            izm++;
                        }           
                    }
                        if (izm==0)
                        {
                            if (vs[dl-1]=='s') 
                            {
                                vs[dl+2]='\0';
                                vs[dl]='e';
                                vs[dl+1]='s';
                                out<<vs;
                                out<<", ";
                                izm++;
                            }
                            if ((vs[dl-1]=='x') && (izm==0))
                            {
                                vs[dl+2]='\0';
                                vs[dl]='e';
                                vs[dl+1]='s';
                                out<<vs;
                                out<<", ";
                                izm++;
                            }
                            if ((vs[dl-1]=='y') && (izm==0))
                            {
                                vs[dl+2]='\0';
                                vs[dl-1]='i';
                                vs[dl]='e';
                                vs[dl+1]='s';
                                out<<vs;
                                out<<", ";
                                izm++;
                            }
                            if ((vs[dl-1]=='a') && (izm==0))
                            {
                                vs[dl+1]='\0';
                                vs[dl]='e';
                                out<<vs;
                                out<<", ";
                                izm++;
                            }
                        }
                        if (izm==0)
                        {
                            vs[dl+1]='\0';
                            vs[dl]='s';
                            out<<vs;
                            out<<", ";
                        }
 
                }
            }
            
            i=s=izm=szn=0;
            vs[0]='\0';
 
            }
        else {out<<c;}
    }
    
    else 
    {
        vs[i]=c;
        i++;
    }
    
}
 
return 0;
}
Извините, пока функции не отработал.
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru