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

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

Войти
Регистрация
Восстановить пароль
 
tema93
0 / 0 / 0
Регистрация: 07.11.2010
Сообщений: 15
#1

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

24.11.2010, 21:54. Просмотров 661. Ответов 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');
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2010, 21:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Транслитерация строки и замена в строке +++ на + (C++):

Транслитерация строки - C++
Здравствуйте, помогите пожалуйста с написанием такой программы. Написать функцию, которая выполняет транслитерацию строки: все буквы ...

Строки. Замена слова в строке на заданное слово - C++
Задача, ввожу слова в строку потом ввожу слово которое нужно заменить и слово на которое нужно заменить. Т.к с функциями строк плохо знаком...

Замена в строке всех вхождений другой строки - C++
Заменить в строке S1 все вхождения подстроки S2 на подстроку S3...пожалуйста помогите, очень срочно нужно!!!....заранее Огромнейшее...

Замена слова в строке - C++
Задание: ввести с клавиатуры строку + слово, которое нужно заменить + слово, на которое нужно заменить. Вывести на экран новый вариант...

Замена повторений в строке - C++
Доброго времени суток. Подскажите, пожалуйста, как написать программу. Нужно подсчитать количество повторений символов в строке и...

Замена слов в строке - C++
Собственно, сама задача: С клавиатуры вводится некоторый текст. Потом вводится слово(1) которое нужно заменить и слово(2) на которое...

1
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
24.11.2010, 22:04 #2
вместо case создайте 2массива. 1й массив - русский символ (char), второй - латинский аналог (char[]). Оба массива должны идти в одинаковом порядке (чтобы индексы соответствовали). Потом ищите индекс нужного символа в 1м массиве и берете из второго массива строку по этому же индексу.

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

Добавлено через 1 минуту
Чтобы найти подстроку '+++' используйте функцию strstr.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2010, 22:04
Привет! Вот еще темы с ответами:

Замена символов в строке - C++
Как заменить первый символ в строке &quot;k&quot; на &quot;c&quot; ? И последний &quot;с&quot; на &quot;k&quot; ? Вообще ума не приложу, помогите...

Замена символов в строке - C++
Здраствуйте! У меня такая задачка: Дано натуральное число n и символы s1,s2..sn.заменить каждую точку многоточием. Заранее благодарен! ...

Замена в строке символов - C++
&quot;Заменить в строке все вхождения 'abc' на 'xy', а 'mm' на '1234'&quot;. Буду благодарна за оказанную помощь. проблема в том,что я не знаю как...

Замена символов в строке - C++
Всем здрасте! Вот тут есть задача: Дается 3 строки. Надо найти 2-ю строку в 1-ой и заменить ее на 3-ю. Мое решение не проходит по...


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

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

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