Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Написать программу транслитерации с русского на английский и наоборот

Здравствуйте форумчане. Есть задача: Написать программу транслитерации с русского на английский и наоборот. Данные для транслитерации берутся из файла и записываются в другой файл. Направление перевода определяется через меню пользователя.
Вот мой код и 2 вопроса: 1. Почему при проверке функции if (word_to_translit.find(transliteration[i][1]) != string::npos) компилятор заходит в IF даже если сочетания букв нету? 2. Почему подчёркивает write_file.close() в конце программы как ошибку?
П.С. К сообщению прикрепил файл соответствий
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
void task2()
{
    ifstream read_file;
    string read_file_name = "Transliteration.txt";
    read_file.open(read_file_name, ios_base::in); //открываем файл в котором размещена транслитерация
    if (!read_file.is_open())
    {
        cerr << "Cannot open " << read_file_name << " for reading. Exiting...." << endl;
        system("pause");
        exit(1);
    } //если не открывается, выводим ошибку
 
    string word; // вспомогательная
    string transliteration[41][2]; // массив в который будем считывать буквы для транслитерации 1 - лат, 2 - кириллица
    string word_to_translit;
    cout << "Enter the word or phrase to transliterate : ";
    getline(cin, word_to_translit); // слово для транслитерации
 
    bool first_or_second = true;
    int i = 0;
    const int j = 1;
    while (!read_file.eof()) // считываем буквы(строки), чтобы было соответствие латинских кириллице
    {
        read_file >> word;
        if (first_or_second
        {
            transliteration[i][0] = word;
            first_or_second = false;
        }
        else
        {
            transliteration[i][j] = word;
            first_or_second = true;
        }
        ++i;
    }
    read_file.close(); // закрываем файл
 
    int direction = 0;
    do //выбираем способ транслитерации
    {
        do
        {
            cout << "Choose the direction of trasliteration :" << endl
                << "1. From english to ukrainian" << endl
                << "2. From ukrainian to english" << endl
                << "0. Finish" << endl << endl
                << "Your choice : ";
            cin >> direction;
        } while (direction < 0 || direction > 2);
 
        ofstream write_file;
        string write_file_name = "Result.txt";
        write_file.open(write_file_name, ios_base::out);
        if (!write_file.is_open())
        {
            cerr << "Can't open " << write_file_name << " for writing. Exiting..." << endl;
            system("pause");
            exit(1);
        }
 
        int letter_index = 0;
        switch (direction)
        {
        case 1:
            letter_index = 0;
            for (int i = 0; i < 41; ++i)
            {
                if (word_to_translit.find(transliteration[i][0]) != string::npos); если строка из массива присутствует в слове, то производим замену. не работает!
                {
                    letter_index = word_to_translit.find(transliteration[i][0]);
                    word_to_translit.erase(letter_index, sizeof(transliteration[i][0]));
                    word_to_translit.insert(letter_index, transliteration[i][0]);
                }
            }
            break;
        case 2:
            letter_index = 0;
            for (int i = 0; i < 41; ++i)
            {
                if (word_to_translit.find(transliteration[i][1]) != string::npos);
                {
                    letter_index = word_to_translit.find(transliteration[i][1]);
                    word_to_translit.erase(letter_index, sizeof(transliteration[i][1]));
                    word_to_translit.insert(letter_index, transliteration[i][1]);
                }
            }
            break;
        default:
            cout << "Invalid choice!" << endl;
            break;
        }
        write_file << word_to_translit << ", ";
    } while (direction != 0);
    write_file.close(); //ВЫДАЁТ ОШИБКУ ???
}
Ответ: Всё, всё сделал. Проблема с вводом кириллицы решилась путём изменения шрифта в самой консоли.
Вот код и файл транслитерации

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
void task2()
{
    ifstream read_file;
    string read_file_name = "Transliteration.txt";
    read_file.open(read_file_name, ios_base::in);
    if (!read_file.is_open())
    {
        cerr << "Cannot open " << read_file_name << " for reading. Exiting...." << endl;
        system("pause");
        exit(1);
    }
 
    const int translit_quant = 39;
    const int translit_language = 2;
 
    string word;
    string transliteration[translit_quant][translit_language];
 
    bool first_or_second = true;
    int i = 0;
    const int ukr = 1;
    const int engl = 0;
    while (!read_file.eof())
    {
        read_file >> word;
        if (first_or_second)
        {
            transliteration[i][engl] = word;
            first_or_second = false;
        }
        else
        {
            transliteration[i][ukr] = word;
            first_or_second = true;
            ++i;
        }
    }
    read_file.close();
 
    ofstream write_file;
    string write_file_name = "Result.txt";
    write_file.open(write_file_name, ios_base::out);
    if (!write_file.is_open())
    {
        cerr << "Can't open " << write_file_name << " for writing. Exiting..." << endl;
        system("pause");
        exit(1);
    }
    int direction = 0;
    do
    {
        do
        {
            cout << "Choose the direction of trasliteration :" << endl
                << "1. From english to ukrainian" << endl
                << "2. From ukrainian to english" << endl
                << "0. Finish" << endl << endl
                << "Your choice : ";
            cin >> direction;
        } while (direction < 0 || direction > 2);
 
        string word_to_translit;
        int letter_index = 0;
        switch (direction)
        {
        case 1:
            cin.ignore();
            cout << "Enter the word or phrase to transliterate : ";
            getline(cin, word_to_translit);
            write_file << word_to_translit << " = ";
 
            letter_index = 0;
            for (int j = 0; j < word_to_translit.length(); ++j)
            {
                for (int i = 0; i < translit_quant; ++i)
                {
                    if (word_to_translit.find(transliteration[i][engl]) != string::npos)
                    {
                        letter_index = word_to_translit.find(transliteration[i][engl]);
                        word_to_translit.erase(letter_index, transliteration[i][engl].length());
                        word_to_translit.insert(letter_index, transliteration[i][ukr]);
                        break;
                    }
                }
            }
            break;
        case 2:
            cin.ignore();
            cout << "Enter the word or phrase to transliterate : ";
            getline(cin, word_to_translit);
            cout << word_to_translit << endl;
            system("pause");
            write_file << word_to_translit << " = ";
            letter_index = 0;
            for (int j = 0; j < word_to_translit.length(); ++j)
            {
                for (int i = 0; i < translit_quant; ++i)
                {
                    if (word_to_translit.find(transliteration[i][1]) != string::npos)
                    {
                        letter_index = word_to_translit.find(transliteration[i][ukr]);
                        word_to_translit.erase(letter_index, transliteration[i][ukr].length());
                        word_to_translit.insert(letter_index, transliteration[i][engl]);
                        break;
                    }
                }
            }
            break;
        default:
            cout << "Invalid choice!" << endl;
            break;
        }
        write_file << word_to_translit << ", ";
    } while (direction != 0);
    write_file.close();
}
В main также нужно прописать
//setlocale(LC_CTYPE, "ukr"); // или "rus"
//system("chcp 1251");
SetConsoleCP(1251);
SetConsoleOutputCP(1251); // для этих двух строк надо добавить библиотеки #include <locale> и #include "windows.h"
Вопрос: Транслитерация на php

Скажу сразу, php не знаю и не учил, допускаю, что мог/могу совершить абсолютно тупую ошибку и не понимать чего-то очень простого.
В общем, ситуация. Есть переменная "$category->name", которая на русском, нужно, чтобы она была на английском, сделал такой код:
Код PHP
1
2
3
4
5
6
7
8
<?php
$catn = $category->name;
$catn = function_exists('mb_strtolower') ? mb_strtolower($catn) : strtolower($catn);
$catn = strtr($catn, array('а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d','е'=>'e','ё'=>'e','ж'=>'j','з'=>'z','и'=>'i','й'=>'y','к'=>'k','л'=>'l','м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'h','ц'=>'c','ч'=>'ch','ш'=>'sh','щ'=>'shch','ы'=>'y','э'=>'e','ю'=>'yu','я'=>'ya','ъ'=>'','ь'=>''));
$catn = preg_replace("/[0-9]/i", "", $catn);
$catn = str_replace(" ", "-", $catn);
$catn = str_replace("/", "-", $catn);
echo $catn; ?>
Он работает, т.е. выводится латиница, без пробелов, всё как надо, но. Выводить эту переменную нужно в двух местах на странице, из-за этого приходится этот код вставлять дважды. Пытался закончить "return $catn", а "echo $catn" писать отдельно, но в таком случае транслитерации не происходит вообще.
Как написать код так, чтобы весь этот массив был один на странице, а далее можно было просто выводить некую (или эту же) переменную через echo в любом месте страницы?
Ответ:
Сообщение от Анар
Куда и в каком виде можно перенести этот скрипт транслитерации, чтобы потом в любом месте страницы можно было просто писать "echo $xxx" и не копировать его?
транслита любой строки или только одной конкретной? Если первое, то так:
Код PHP
1
2
3
4
5
6
7
8
9
function translit($catn)
{
    $catn = function_exists('mb_strtolower') ? mb_strtolower($catn) : strtolower($catn);
    $catn = strtr($catn, array('а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d','е'=>'e','ё'=>'e','ж'=>'j','з'=>'z','и'=>'i','й'=>'y','к'=>'k','л'=>'l','м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'h','ц'=>'c','ч'=>'ch','ш'=>'sh','щ'=>'shch','ы'=>'y','э'=>'e','ю'=>'yu','я'=>'ya','ъ'=>'','ь'=>''));
    $catn = preg_replace("/[0-9]/i", "", $catn);
    $catn = str_replace(" ", "-", $catn);
    $catn = str_replace("/", "-", $catn);
    return $catn;
}
Эту функцию можете запихнуть в отдельный файл, чтобы не загромождала текущий, и просто подключаете в начале скрипта с помощью require_once().

Вызывать так:
Код PHP
1
2
$string = 'Какая-то строка';
echo translit($string);
Вопрос: Транслитерация текста в обе стороны (кириллица <-> латиница)

Здравствуйте господа! Нужна помощь.
За плечами только написание программы «Hello world»
Задача: Написать простенькую программку (windows forms application) для транслитерации текста в обе стороны (кирилица <> латиница).
Ответ: Данный алгоритм использует вариант транслитерации Б из ГОСТ 7.79—2000 (ISO 9)
Преобразование из кириллицы в латиницу не представляет трудностей, т.к. любой символ кириллицы соответствует одному или нескольким символам латиницы. По этой же причине обратное преобразование имеет небольшую трудность, т.к. при переводе "в лоб", буквосочетания могут переводить неверно (например, "shh" вместо "щ" преобразуется в "схх"). Это решается расположением буквосочетаний в начале массива.
Основная часть кода:
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
public ref class Form1 : public System::Windows::Forms::Form
{
public:
    static array<String^>^ RuLetters = { 
        // 3х символьные буквосочетания
        L"щ", L"Щ",
        // 2х символьные буквосочетания, нижний регистр
        L"ё", L"ж", L"ц", L"ч", L"ш", L"ъ", L"ы", L"э", L"ю", L"я",
        // 2х символьные буквосочетания, верхний регистр
        L"Ё", L"Ж", L"Ц", L"Ч", L"Ш", L"Ы", L"Э", L"Ю", L"Я",
        // По одному символу, нижний регистр
        L"а", L"б", L"в", L"г", L"д", L"е", L"з", L"и", L"й", L"к", L"л",
        L"м", L"н", L"о", L"п", L"р", L"с", L"т", L"у", L"ф", L"х", L"ь",
        // По одному символу, верхний регистр
        L"А", L"Б", L"В", L"Г", L"Д", L"Е", L"З", L"И", L"Й", L"К", L"Л",
        L"М", L"Н", L"О", L"П", L"Р", L"С", L"Т", L"У", L"Ф", L"Х"
    };
 
    static array<String^>^ EnLetters = {
        // 3х символьные буквосочетания
        L"shh", L"Shh",
        // 2х символьные буквосочетания, нижний регистр
        L"yo", L"zh", L"cz", L"ch", L"sh", L"``", L"y`", L"e`", L"yu", L"ya",
        // 2х символьные буквосочетания, верхний регистр
        L"Yo", L"Zh", L"Cz", L"Ch", L"Sh", L"Y`", L"E`", L"Yu", L"Ya",
        // По одному символу, нижний регистр
        L"a", L"b", L"v", L"g", L"d", L"e", L"z", L"i", L"j", L"k", L"l",
        L"m", L"n", L"o", L"p", L"r", L"s", L"t", L"u", L"f", L"h", L"`",
        // По одному символу, верхний регистр
        L"A", L"B", L"V", L"G", L"D", L"E", L"Z", L"I", L"J", L"K", L"L",
        L"M", L"N", L"O", L"P", L"R", L"S", L"T", L"U", L"F", L"H"
    };
 
    String^ TransliterateFromRuToEn(String^ ru) {
        StringBuilder^ result = gcnew StringBuilder(ru);
        for (int i = 0; i < RuLetters->Length; i++) {
            result->Replace(RuLetters[i], EnLetters[i]);
        }
        return result->ToString();
    }
 
    String^ TransliterateFromEnToRu(String^ en) {
        StringBuilder^ result = gcnew StringBuilder(en);
        for (int i = 0; i < EnLetters->Length; i++) {
            result->Replace(EnLetters[i], RuLetters[i]);
        }
        return result->ToString();
    }
    // ...
};
GUI достаточно примитивный, с кодом к нему разобраться не проблема



Проект во вложении
Вопрос: Visual Studio 2013 транслитерация

Здравствуйте. Я транслитерацию делаю из кириллицу на латиницу. Все транслиты буков вышла. Теперь мне надо несколько изменения внести. Например буква "я" после гласных "ia", а после согласных чтобы вышло "а". Буква "ю" после гласных "iu" а после согласных "u". Окончание "оэ" на "і" например алоэ- aloi. А вообще можно такую транслитерацию создать? Ответьте пожалуйста.
Ответ:
Сообщение от OwenGlendower
Если тексты небольшие, то с помощью регулярных выражений можно решить
Если большие, то тоже можно.
vb.net
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
Imports System.Text.RegularExpressions
Module Module1
    Sub Main()
        Console.WriteLine(Translit("xорошо пахнущее алоэ - это больше чем просто цветок."))
        Console.ReadKey()
    End Sub
 
    Function Translit(input As String) As String
        Dim re = New Regex("(?<special>оэ\b|(?<= [\bаоиыуэяёею])[яёею])|(?<simple>[а-яё])", RegexOptions.IgnoreCase)
        Dim special As New Dictionary(Of String, String) From {
        {"оэ", "oi"}, {"я", "ia"}, {"ё", "ij"}, {"е", "ie"}, {"ю", "iu"}
        }
        Dim simple As New Dictionary(Of String, String) From {
        {"а", "a"}, {"б", "b"}, {"в", "v"}, {"г", "g"}, {"д", "d"}, {"е", "e"}, {"ё", "o"}, {"ж", "zh"}, {"з", "z"}, {"и", "i"},
        {"й", "j"}, {"к", "k"}, {"л", "l"}, {"м", "m"}, {"н", "n"}, {"о", "o"}, {"п", "p"}, {"р", "r"}, {"с", "s"}, {"т", "t"}, {"у", "u"},
        {"ф", "f"}, {"х", "h"}, {"ц", "ts"}, {"ч", "ch"}, {"ш", "sh"}, {"щ", "shch"}, {"ъ", "'"}, {"ы", "y"}, {"ь", "'"}, {"э", "e"}, {"ю", "u"}, {"я", "a"}
        }
        Return re.Replace(input,
                          Function(m)
                              If m.Groups("special").Success Then
                                  Return special(m.Value)
                              ElseIf m.Groups("simple").Success Then
                                  Return simple(m.Value)
                              Else
                                  Return m.Value
                              End If
                          End Function)
    End Function
 
End Module
Само собой, словари нужно дополнить символами в верхнем регистре, я поленился это делать. В словаре special содержатся те самые специальные случаи, а в simple - случаи обычные.
Вопрос: Транслитерация url

Всем привет! скажите, как лучше - делать доп поле в таблице с новостью и хранить в нем заголовок в латинице и выводить новость по нему или делать транслитерацию на лету?

Если хранить в базе, то чувствую она охренеет, а если на лету обрабатывать, то какая будет нагрузка и задержка?

Кто как у себя делает? и вообще как на известных cms делается?

P/s столкнулся первый раз с этим, не знаю как лучше...делается не для портала, так для блога...
Ответ: всем спасибо, извиняюсь, глупость сморозил на самом деле про обработку на лету ...тоже посмотрел как wordpress делает...хранят в базе...
Вопрос: Преобразование введенных во входной строке латинских букв в русские в соответствие с правилами транслитерации

Нужно использовать вставку из ассемблера. Не знаю как сравнить элементы из pointer с русским алфавитом, заменить их элементами по правилам транслитерации и записать то, что получилось в OutputString. Очень прошу помочь, заранее спасибо.

#include <iostream>
#include <windows.h>
#include <fstream>

using namespace std;
const int sizeofmass = 80;


int length(char mass[])
{
int i;
for (i = 0; mass[i] != NULL; i++);
return i;

}

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
ofstream outFile("output.txt");
char mass[sizeofmass];
char alph[sizeofmass][5] = { "a","b","v","g","d","ye","ye","zh","z","i","y","k","l","m","n","o","p","r","s","t","u","f","kh","ts","ch","sh","shch","","y","","e","yu","ya" };
cout << "Введите строку: " << endl;
if (!cin.getline(mass, sizeofmass))
{
cout << "Введено больше 80 символов. Программа будет завершена." << endl;
system("pause");
return 0;
}
if (mass[0] == '\0')
{
cout << "Пустая строка." << endl;
system("pause");
return 0;
}
char *pointer = mass;
outFile << "Введина срока: " << pointer << endl;
char *OutputString = new char(length(mass));
_asm
{
.data

}
cout << "Изменённая строка: " << OutputString << endl;
outFile << "Изменённая строка: " << OutputString << endl;
cin.clear();
system("pause");

return 1;
}
Ответ: Это условие задачи... Нам обязательно нужно понять как это работает. Не знаю как символы в OutputString вставить, который введен не в асме...

Добавлено через 1 час 30 минут
Я пытался сделать, заменяет первую букву, но дальше по строке не идет... Записал замену для 3ех букв, если бы заменял всю строку, а не только одну букву, мог бы написать для всех... Помогите, плз!

_asm
{
mov dx, 0
mov esi, pointer
mov edi, OutputString
step:
lodsb
test al, al
je exit_
mov dh, 'a'
cmp al, dh
jne b
mov ah, mas1[dh]
stosw
jmp step
b:
cmp al, 'б'
jne v
mov ax, 'b'
stosw
jmp step
v:
cmp al, 'в'
jne end
mov ax, 'v'
stosw
jmp step


end:
stosb
;stosw
;jmp step
exit_: stosb ; конец программы

}
Вопрос: Помогите найти ошибку, простейший массив для транслитерации.

Помогите найти ошибку, простейший массив для транслитерации, знаю что можно сделать при помощи функции strtr, но в задаче именно этот вариант (я только учусь php)
Код:
<?php
function trans($str) {
    
$output '';
    
$trans = array (
        
"а" => "a""б" => "b""в" => "v""г" => "g""д" => "d""е" => "e""ё" => "yo",
        
"ж" => "zh""з" => "z""и" => "i""й" => "j""к" => "k""л" => "l""м" => "m",
        
"н" => "n""о" => "o""п" => "p""р" => "r""с" => "s""т" => "t""у" => "u",
        
"ф" => "f""х" => "kh""ц" => "c""ч" => "ch""ш" => "sh""щ" => "she""ы" => "y",
        
"э" => "e""ю" => "yu""я" => "ya",
    );
    
//return $str . " => ";
    
for ($i 0$i strlen($str); $i++) {
        
$output .= $trans[$str[$i]];
    }
        
//return $output;
        
echo $output;

}
trans("программирование");
echo 
'<br/><br/>';
?>


Двести раз поверял - ничего не помогает ! Кто знает - исправьте пожалуста ошибку .

Подсказка от модератора:
Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
Используйте отступы в коде для форматирования текста.
Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
Ответ: Да, cp1251.
Вопрос: Транслитерация английского текста в русский

Есть задумка одна, в нескольких словах озвучу:
Например, транслитерация англ текста в русский обычно выглядит так: "Не Шевелись" -> "Ne Shevelis'".
Так вот, как бы реализовать это во время ввода с клавиатуры, с Англ на Русский?
Повторюсь, не после набора а во время. Тоесть я написал "sh" ввелось "ш"... есть идея читать по две буквы, и заменять только первую, если нет совпадений с двумя, тоесть если ввел "sx" то заменится только "s" на "с", а вторая буква в ожидании ввода еще одной...
как то так...
но получается не очень красиво, вторая ожидающая буква будет глаза мозолить.
Ответ: Yury Komar, так проще всего:
vb.net
1
2
3
4
5
6
7
8
9
Public Class Form1
    Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        Dim s As String = Trim(TextBox1.Text.ToLower)
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Space) Then
            s = s.Replace("n", "н").Replace("e", "е").Replace("sh", "ш").Replace("v", "в").Replace("l", "л").Replace("i", "и").Replace("s", "с").Replace("'", "ь")
            TextBox2.Text = s
        End If
    End Sub
End Class
и так далее
Вопрос: Java транслитерация

Только начал изучать JAVA, написал программу транслитерации по чужому примеру, не могу понять почему не работает. Помогите пожалуйста.

Java(TM) 2 Platform Standard Edition 5.0
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
package kursovaya;
 
public class Translit {
    public static void main (String args[]){
}
    public static String cyr2lat(char ch){
        switch (ch){
            case 'А': return "A";
            case 'Б': return "B";
            case 'В': return "V";
            case 'Г': return "G";
            case 'Д': return "D";
            case 'Е': return "E";
            case 'Ё': return "JE";
            case 'Ж': return "ZH";
            case 'З': return "Z";
            case 'И': return "I";
            case 'Й': return "Y";
            case 'К': return "K";
            case 'Л': return "L";
            case 'М': return "M";
            case 'Н': return "N";
            case 'О': return "O";
            case 'П': return "P";
            case 'Р': return "R";
            case 'С': return "S";
            case 'Т': return "T";
            case 'У': return "U";
            case 'Ф': return "F";
            case 'Х': return "KH";
            case 'Ц': return "C";
            case 'Ч': return "CH";
            case 'Ш': return "SH";
            case 'Щ': return "JSH";
            case 'Ъ': return "HH";
            case 'Ы': return "IH";
            case 'Ь': return "JH";
            case 'Э': return "EH";
            case 'Ю': return "JU";
            case 'Я': return "JA";
            default: return String.valueOf(ch);
        }
    }
 
    public static String cyr2lat(String s){
        StringBuilder sb = new StringBuilder(s.length()*2);
        for(char ch: s.toCharArray()){
            sb.append(cyr2lat(ch));
        }
        return sb.toString();
    }
}
Ответ: George Persik, мейн пустой, вот ничего и не происходит
Java(TM) 2 Platform Standard Edition 5.0
1
System.out.println(cyr2lat("мой текст"));
Вопрос: Программа производит транслитерацию текста, введенного на кириллице

Программа производит транслитерацию текста, введенного на кириллице. Пример: “Здравствуй, друг! Очень рад встрече” – “Zdravstvuy, drug! O4en6 rad vstre4e”
Ответ: