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

Транслитерация строки и замена в строке +++ на + - C++

Восстановить пароль Регистрация
 
tema93
0 / 0 / 0
Регистрация: 07.11.2010
Сообщений: 15
24.11.2010, 21:54     Транслитерация строки и замена в строке +++ на + #1
Доброго времени суток!
Сделал код - транслитерацию строки и замена в строке +++ на +. Помогите переделать код не используя класс STRING, т.е. обычными символьными строками .
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
#include <iostream.h>
#include <string.h>
 
                    void Transliterate (string &str1) 
                     {
                        for (int i=0; i<str1.size();i++)
                           {  
                                switch (str1[i]) 
                               {
                case 'а': str1[i]="a"; break;
                case 'б': str1[i]="b"; break;
                case 'в': str1[i]="v"; break;
                case 'г': str1[i]="g"; break;
                case 'д': str1[i]="d"; break;
                case 'е': str1[i]="e"; break;
                case 'ё': str1[i]="ye"; break;
                case 'ж': str1[i]="zh"; break;
                case 'з': str1[i]="z"; break;
                case 'и': str1[i]="i"; break;
                case 'й': str1[i]="y"; break;
                case 'к': str1[i]="k"; break;
                case 'л': str1[i]="l"; break;
                case 'м': str1[i]="m"; break;
                case 'н': str1[i]="n"; break;
                case 'о': str1[i]="o"; break;
                case 'п': str1[i]="p"; break;
                case 'р': str1[i]="r"; break;
                case 'с': str1[i]="s"; break;
                case 'т': str1[i]="t"; break;
                case 'у': str1[i]="u"; break;
                case 'ф': str1[i]="f"; break;
                case 'х': str1[i]="ch"; break;
                case 'ц': str1[i]="z"; break;
                case 'ч': str1[i]="ch"; break;
                case 'ш': str1[1]="sh"; break;
                case 'щ': str1[i],"ch"; break;
                case 'ъ': str1[i],"''"; break;
                case 'ы': str1[i],"y"; break;
                case 'ь': str1[i],"''"; break;
                case 'э': str1[i],"e"; break;
                case 'ю': str1[i],"yu"; break;
                case 'я': str1[i],"ya"; break;
                case 'А': str1[i],"A"; break;
                case 'Б': str1[i],"B"; break;
                case 'В': str1[i],"V"; break;
                case 'Г': str1[i],"G"; break;
                case 'Д': str1[i],"D"; break;
                case 'Е': str1[i],"E"; break;
                case 'Ё': str1[i],"Ye"; break;
                case 'Ж': str1[i],"Zh"; break;
                case 'З': str1[i],"Z"; break;
                case 'И': str1[i],"I"; break;
                case 'Й': str1[i],"Y"; break;
                case 'К': str1[i],"K"; break;
                case 'Л': str1[i],"L"; break;
                case 'М': str1[i],"M"; break;
                case 'Н': str1[i],"N"; break;
                case 'О': str1[i],"O"; break;
                case 'П': str1[i],"P"; break;
                case 'Р': str1[i],"R"; break;
                case 'С': str1[i],"S"; break;
                case 'Т': str1[i],"T"; break;
                case 'У': str1[i],"U"; break;
                case 'Ф': str1[i],"F"; break;
                case 'Х': str1[i],"Ch"; break;
                case 'Ц': str1[i],"Z"; break;
                case 'Ч': str1[i],"Ch"; break;
                case 'Ш': str1[i],"Sh"; break;
                case 'Щ': str1[i],"Ch"; break;
                case 'Ъ': str1[i],"''"; break;
                case 'Ы': str1[i],"Y"; break;
                case 'Ь': str1[i],"''"; break;
                case 'Э': str1[i],"E"; break;
                case 'Ю': str1[i],"Yu"; break;
                case 'Я': str1[i],"Ya"; break;  
 
                               }
                        }  
                   }
                       
                 void tt (string &str1) 
                   { 
                      int p1;
                            while(( p1=str1.find("+++"))!=string::npos)
                              {
                                     str1.replace(p1,3,"*");
                                 }
                     }
                     
int main()
{       
         string str;
         char p, ans;
            while (str.empty()|| str.size()<=5)
                 {
                      cout<<"vvedi stroky dlinoy ot 5 do 20 simvolov"<<endl;
                      cin>>str;
                  }
              do
                 { 
                    cout<<'\n';
                    cout<<"vvedi 1 or 2"<<endl;
                    cin>>p;
             
                        switch (p)
                          {
                             case '1': Transliterate(str); break;
                             case '2': tt(str); break;
                          } 
                     cout<<'\n'<<str<<endl;  
                     cout<<"\n Prodolgit raboty? Da - y  Net - n \n";
                     cin>>ans;
                     
                } 
             while(ans!='n');
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2010, 21:54     Транслитерация строки и замена в строке +++ на +
Посмотрите здесь:

C++ Замена в строке символов
C++ Транслитерация строки
Замена символов в строке C++
Замена слов в строке C++
C++ Строки. Замена слова в строке на заданное слово
C++ Замена символа в строке
C++ Замена символов в строке
Замена слова в строке C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
24.11.2010, 22:04     Транслитерация строки и замена в строке +++ на + #2
вместо case создайте 2массива. 1й массив - русский символ (char), второй - латинский аналог (char[]). Оба массива должны идти в одинаковом порядке (чтобы индексы соответствовали). Потом ищите индекс нужного символа в 1м массиве и берете из второго массива строку по этому же индексу.

Добавлено через 1 минуту
C++
1
case 'ъ': str1[i],"''"; break;
Почему два раза '? Так и надо?

Добавлено через 1 минуту
Чтобы найти подстроку '+++' используйте функцию strstr.
Yandex
Объявления
24.11.2010, 22:04     Транслитерация строки и замена в строке +++ на +
Ответ Создать тему
Опции темы

Текущее время: 15:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru