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

Из русских букв в английские - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.60
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
23.12.2009, 21:17     Из русских букв в английские #1
написал код,который если написать руддщ запишет как Hello
я хочу каким то невероятным образом выполнить это...был алгоритм типа этого
C++
1
if(char)i=='a')cout<<"F";
но я сам запутался...помогите...нода чтобы по ошибке если ввели ангд слово на русском перевел на норм слова...пример
Руддщ Цщкдв
результат
Hello World
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
24.12.2009, 00:14     Из русских букв в английские #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    const string rus = "йцукенгшщзхъфывапролджэячсмитьбю";
    const string eng = "qwertyuiop[]asdfghjkl;'zxcvbnm,.";
    string s;
    getline(cin, s);
    for (size_t i = 0; i < s.length(); i++)
    {
        size_t pos = rus.find(s[i]);
        if (pos != string::npos)
          s[i] = eng[pos];
    }
    cout << s;
}
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
24.12.2009, 11:57  [ТС]     Из русских букв в английские #3
Somebody, спасибо,а как написать условие,что если ввели русские буквы переделал в англ
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
24.12.2009, 13:34     Из русских букв в английские #4
C++
1
2
3
4
string s;
cin >> s;
for (int i=0;i<s.length();i++)
if ((int)s[i] > (int)'z') {/*русская буква - надо перекодировать её, или сообщить о ошибке*/}
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
24.12.2009, 19:56  [ТС]     Из русских букв в английские #5
Aye Aye, aaa ясно

Добавлено через 3 часа 46 минут
Somebody, а как наоборот?

Добавлено через 3 минуты
i<s.length();
тут более верно не будет ли
C++
1
i<=s.length();
Добавлено через 11 минут
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
string rusToEngl(string s){
    const string rus = "йцукенгшщзхъфывапролджэячсмитьбю";
    const string eng = "qwertyuiop[]asdfghjkl;'zxcvbnm,.";
  for (size_t i = 0; i < s.length(); i++)
    {
        size_t pos = rus.find(s[i]);
        if (pos != string::npos)
          s[i] = eng[pos];
    }  
    return (s);
} 
int main()
{
SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
 string a;
 getline(cin,a);
 for(int i=0;i<a.length();i++)
 {
     if((int)a[i]>(int)'z'){ a=rusToEngl(a); }
cout<<a[i]<<endl;
 }
  system("pause"); 
  return 0;
}
это мой переделанный код...весь код засунул в функцию..в меине введется строка,если там есть какая нить русская буква,то перейти в функцию чтобы переделать эту букву...ввожу РУДДЩ выводит
Р
У
Д
Д
Щ

вместо
H
E
L
L
O
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
24.12.2009, 21:36     Из русских букв в английские #6
Цитата Сообщение от МедведЪ Посмотреть сообщение
тут более верно не будет ли
i<=s.length();
Не, нумерация с нуля же.
Цитата Сообщение от МедведЪ Посмотреть сообщение
Somebody, а как наоборот?
Цитата Сообщение от МедведЪ Посмотреть сообщение
это мой переделанный код...весь код засунул в функцию..в меине введется строка,если там есть какая нить русская буква,то перейти в функцию чтобы переделать эту букву...ввожу РУДДЩ выводит
В общем, ты ни фига код не понял, да?
Функция же преобразует строку - тогда что за for и что за if в main'е? Надо бы просто a=rusToEngl(a). Чтобы наоборот, логично было бы предположить, что надо наоборот искать символ в eng и заменять соответствующим из rus.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
24.12.2009, 22:35  [ТС]     Из русских букв в английские #7
Somebody, добавил символы
C++
1
2
const string rus = "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,йцукенгшщзхъфывапролджэячсмитьбю.ё!\"№;%:?*()_+";
    const string eng = "QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM,./qwertyuiop[]asdfghjkl;'zxcvbnm,.~!@#$%^&*()_+";
в конце первого переменного записано \",то етсь это просто "...когда я ввожу РУДДЩ""" он должен выводить HELLO@@@ a выводит HELLO###,то есть на символ вперед,как исправить
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
25.12.2009, 20:04     Из русских букв в английские #8
Цитата Сообщение от МедведЪ Посмотреть сообщение
должен выводить HELLO@@@ a выводит HELLO###
rus и eng в приведённом коде вообще разной длины, так что...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2009, 21:01     Из русских букв в английские
Еще ссылки по теме:

Сравнение русских букв с их кодами C++
C++ Ввод русских букв
C++ Количество русских букв в строке

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

Или воспользуйтесь поиском по форуму:
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
25.12.2009, 21:01  [ТС]     Из русских букв в английские #9
Somebody, ё,да я понял что разой длины потому что \" считается как 2
Yandex
Объявления
25.12.2009, 21:01     Из русских букв в английские
Ответ Создать тему
Опции темы

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