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

транслит - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
voodoo_upgrade
0 / 0 / 0
Регистрация: 09.09.2010
Сообщений: 6
09.09.2010, 14:33     транслит #1
ни как не пойму , как сделать чтобы к руской букве приделать другой синвол.ну типа там A=$ ну чтоб получилось когда я ввожу синволы на руском он мне переделал их на те которые я ему збил (типа транслита )

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdafx.h"
#include <iostream>
#include"windows.h"
using namespace std;
void main(void) 
{ 
setlocale (0,"");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char string[1251];
 
   cout << "Введите строку текста и нажмите Enter" << endl; 
   cin.getline(string, sizeof(string)); 
   cout << "Вы ввели: " << string << endl; 
}
но надо чтоб он не повторял а переводил в другие синволы (но ни в те которые идут по юникоду )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2010, 14:33     транслит
Посмотрите здесь:

C++ перевод русских букв в транслит
C# Транслит
Транслит в программах
C# Транслит
PHP Транслит в ЧПУ
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.09.2010, 14:46     транслит #2
Ну для этого надо пробежаться по строке и заменить каждый встреченный символ на необходимый. Либо простым прибавлением числа (если нужен фиксированный сдвиг), либо при помощи case'ов, если каждый символ заменяется на какой-либо конкретный, без закономерности. Пример:

C
1
2
3
4
5
6
7
8
9
void exchange(char *str)
{
    int len = strlen(str);
    int i;
    
    for (i = 0; i < len; i++)
        if (str[i] == 'A')
            str[i] = '$';
}
Функция заменяет все встреченные в строке символы "A" на символ "$".
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
09.09.2010, 16:47     транслит #3
Можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <conio.h>
 
char a[] = "abcde";
char b[] = "12345";
 
int main(void)
{
  char c, *pc;
  while( 1 )
  {
    c = getch();
    pc = strchr( a, c );
    if( pc != NULL )
    {
      c = b[pc - a];
      std::cout << c;
    }
  }
}
Например при вводе символа 'a' будет выводидся символ '1' и т.д.
voodoo_upgrade
0 / 0 / 0
Регистрация: 09.09.2010
Сообщений: 6
20.09.2010, 13:05  [ТС]     транслит #4
silent_1991, а не могбы ламеру помоч ? могбы написать свой код полностью а то я чото ну ни как не догоню , пишет ошибку и все тут

C
1
2
3
4
5
6
7
8
9
void exchange(char *str)
{
    int len = strlen(str);
    int i;
    
    for (i = 0; i < len; i++)
        if (str[i] == 'A')
            str[i] = '$';
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.09.2010, 13:12     транслит #5
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
#include <stdio.h>
#include <conio.h>
 
void exchange(char *str)
{
    int len = strlen(str);
    int i;
 
    for (i = 0; i < len; i++)
        if (str[i] == 'A')
            str[i] = '$';
}
 
int main()
{
    char str[] = "ABCDEAAFFAAG";
    
    exchange(str);
    
    printf("%s", str);
    
    getch();
    return 0;
}
voodoo_upgrade
0 / 0 / 0
Регистрация: 09.09.2010
Сообщений: 6
20.09.2010, 13:33  [ТС]     транслит #6
silent_1991, а что это за ошибки ?
cpp(2) : warning C4627: '#include <conio.h>': skipped when looking for precompiled header use
cpp(25) : fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?

а вот когда делаю так

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
#include "stdafx.h"
#include <iostream>
#include"windows.h"
#include <stdio.h>
#include <conio.h>
using namespace std;
 
void exchange(char *str)
{
    int len = strlen(str);
    int i;
 
    for (i = 0; i < len; i++)
        if (str[i] == 'A')
            str[i] = '$';
}
 
int main()
{
    char str[] = "ABCDEAAFFAAG";
    
    exchange(str);
    
    printf("%s", str);
    
    getch();
    return 0;
}
ошибки нет а прога не работает
появляется : ABCDEAAFFAAG
нажемаю любую клавешу и все
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.09.2010, 13:38     транслит #7
voodoo_upgrade,
Очччень странно... У меня всё работает... В двух разных средах... Здесь вроде нечему не работать...
voodoo_upgrade
0 / 0 / 0
Регистрация: 09.09.2010
Сообщений: 6
20.09.2010, 14:05  [ТС]     транслит #8
silent_1991, а вот смотри
C++
1
2
3
4
5
6
7
8
void exchange(char *str)
{
    int len = strlen(str);
    int i;
 
    for (i = 0; i < len; i++)
        if (str[i] == 'A')
            str[i] = '56';
вывожу прогу и получается что А заменяется на 6 а почему ни 56 ?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.09.2010, 14:11     транслит #9
voodoo_upgrade,
Потому что 56 не является символом. Для замены одного символа строки на более чем один нужен совсем другой алгоритм, всё так просто не сделаешь.
voodoo_upgrade
0 / 0 / 0
Регистрация: 09.09.2010
Сообщений: 6
20.09.2010, 14:22  [ТС]     транслит #10
silent_1991, блин как все сложно а не подсабиш алгоритмом ?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.09.2010, 14:35     транслит #11
voodoo_upgrade,
Алгоритм:
Копируешь исходную строку в новую до тех пор, пока очередной символ не будет равен тому, который надо заменить. Затем в новую строку после уже скопированных символов записываешь те символы, на которые ты хочешь заменить исходный символ. Так повторяешь до тех пор, пока исходная строка не закончится.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2011, 12:21     транслит
Еще ссылки по теме:

Delphi Транслит
Транслит в кириллицу C++ Qt
Написать программу перекодировки текстового файла в транслит и наоборот C++

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

Или воспользуйтесь поиском по форуму:
nuSan
0 / 0 / 0
Регистрация: 24.12.2010
Сообщений: 127
03.06.2011, 12:21     транслит #12
здраствуйте а вот такой вариант транслита, лежит у меня txt файл где на каждой строке лежит буква и слог то как организовать так чтоб слово переводилось и выбирала именно тот символ что надо?? слов то мого!! нужно какойто сравнивание ?? нехочеться кейсом делать!! вот ест буквы abcd и есть слоги ya yu sh ph и вот пишеш по русский яблоко и выводит yabloko да ещенапример возможный вариант такие как jabloko jbloko !! транслит у всех тож разный!! подскажите кто что сможет!!!
Yandex
Объявления
03.06.2011, 12:21     транслит
Ответ Создать тему
Опции темы

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