Полная версия этой страницы:
Translit'ерация
DracoLich
21 Nov 2008, 17:09
Прошу помощи в написании программы перевода в транслит русских букв на С++. Графический интерфейс отсут., работа только в командном окне. Объем вводимого юзером неограничен (ну, почти).
Может кто-нибудь помочь?
Flashback
21 Nov 2008, 17:35
Жаль, но не могу помочь, так нормально знаю только делфи, но думаю русский в транслит будет не сложно, а транслит в русский сложнее, может я и ошибаюсь.
А зачем ты собираешься делать такую программу, такие же есть и очень многофункциональные, Штирлиц, например.
DracoLich
22 Nov 2008, 14:11
Вроде как лаба, а я не иучал Си до этого %) Потому и прошу помощи
Shaidar Haran
22 Nov 2008, 18:16
Сделай цикл на каждую введенную юзером букву, обрабатывай ее, и кидай в исходящий поток уже транслированную. Например, нажал юзер букву "ж" на клавиатуре - а твой цикл кинул в куда-там-тебе-надо уже символ "j". И т.п.
DracoLich
22 Nov 2008, 19:19
Можно ли внести введеные символы юзера в массив, если кол-во символов неизвестно?
Как сделать массив динамического размера?
Как получить его длину?
Если кодировка koi8, то чтобы транслитерировать русскую букву
нужно отнять от её кода 128.
DracoLich
22 Nov 2008, 19:38
^ спасибо. НО основные вопросы выше
Цитата(DracoLich @ 22 Nov 2008, 19:19)
Можно ли внести введеные символы юзера в массив, если кол-во символов неизвестно?
Как сделать массив динамического размера?
Как получить его длину?
На каком языке программирования?
Добавлено ([mergetime]1227387814[/mergetime]):
например на делфи
var
A, B: array of Integer;
begin
SetLength(A, 1);
Добавлено ([mergetime]1227387847[/mergetime]):
получить длинну length(A)
DracoLich
23 Nov 2008, 13:35
ээээ... Кажется, в подзаголовке темы указано C++

Код
char c;
while (cin.get(c)) cout.put(c);
Точно не пойму, но копирует каждый символ, введеный юзером, затем воспроизводит всю строку. Вопрос - куда идет копирование? о_О.
PS. И как получить ASCII - код буквы?
gamecreator
24 Nov 2008, 20:36
по порядку:
1. могу написать прогу если что
2. внести в массив можно
3. динамический:
char *s;
s=new char[n]; // n - максимальная длина строки(массива символов)
4. strlen(s) - возвращает фактическую длину s - строки с завершающим нулем (null-terminated string) (в конце строки символ '\0' - символ с кодом 0)
5. в досе кодировка OEM. там все намного сложнее, так что лучше использовать "таблицу" - массив строк, в котором каждой русской букве соответствует строка англ. букв.
6. твой код не может воспроизводить всю строку подряд, только побуквенно.
7. если тебе надо вывести, то int©, где с - твой символ. если нужно произвести арифметические операции, то в С++ слава богу есть неявное приведение типов.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.