Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2011, 12:05   #1
Бриллиант
Новичок
Джуниор
 
Регистрация: 31.10.2011
Сообщений: 1
По умолчанию Транслитерация текста

Всем привет! Готовлюсь к сессии, у меня такое задание: создать программу-транслитерация текста. Суть задания: В текстовом файле хранится информация о правилах транслитерации (trans.txt). Считать данные из файла в одномерный массив с элеметами типа record, с двумя полями записи: первое поле - символ русского алфавита, второе-эквивалентная ему строка транслитерации. Сделать запрос к пользователю - 'Введите имя файла:'. После ввода имени файла, открыть его как текстовый для чтения и провести анализ: файл набран в основном русскими буквами или английскими (оформить проверку в виде отдельной процедуры proverka). После чего провести перевод файла: с русского в транслитерацию (отдельная процедура RusToTrans) или обратно (отдельная процедура TranstoRus). Результаты сохранить в текстовый файл с добавлением к имени файла опознавательного признака: t - транслитерация, r - русский. Все подпрограммы должны быть откомпилированы в отдельный модуль trans.tpu.
Программа у меня написана, но она не работет, помогите пожалуйста разобраться, где у меня ошибка и что нужно сделать!!!
Код:
type Tablica= record
     RusAlf: array [1..33] of string;
     TransRusAlf: array [1..33] of string;
     end;

var {A: Tablica;}
    f: text;
    kol,w,i,q,vrem2,a, count: integer;
    fil, mas,vrem,vrem3: string;
    stroka:array[1..100] of string;

procedure Tablica1;
begin
assign (f, 'trans.txt');
reset (f);
for i:=1 To 33 Do
Read (f, mas[i]);
close(f);
end;

procedure rustotrans;
begin
writeln('text.txt');
for i:=1 to count do
 begin
  vrem:=stroka[i];
  vrem2:=1;
  for q:=1 to length(vrem) do
  kol:=kol+1;
  for w:=1 to kol do
   begin
    for a:=1 to 33 do
     begin
      if mas[a]=vrem[vrem2] then
         vrem[vrem2]:=mas[a];
      vrem2:=vrem2+1;
     end;
   end;
   stroka[i]:=vrem;
 assign (f, 'textr.txt');
 readln(f);
 for i:=1 To count Do
  writeln (f, vrem[i]);
 close(f);
 end;
end;


procedure transtorus;
begin
for i:=1 to count do
 begin
  vrem:=stroka[i];
  vrem2:=1;
  for q:=1 to length(vrem) do
  kol:=kol+1;
  for w:=1 to kol do
   begin
    for a:=1 to 33 do
     begin
      if mas[a]=vrem[vrem2] then
         vrem[vrem2]:=mas[a];
      vrem2:=vrem2+1;
     end;
   end;
   stroka[i]:=vrem;
 assign (f, 'textr.txt');
 readln(f);
 for i:=1 To count Do
  writeln (f, vrem[i]);
 close(f);
 end;
end;

procedure proverka;
begin
writeln('qweqwe');
vrem:=stroka[1];
if vrem[1] in ['*','Ў','ў','Ј','¤','Ґ','с','¦','§','Ё','©','Є','«','¬','*','®','Ї','а','б','в','г','д','е','ж','з','и','й','к',
'л','м','н','о','п'] then
   rustotrans;
if vrem[1] in ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] then
   transtorus;

end;

{procedure TfmScanKod.ButtonClick(Sender: TObject);
   var ch: Pchar;
       f: TextFile;
       str: String;
   begin
       AssignFile (f, 'text.txt');
       Rewrite (f);
       AnsiToOem (PChar ('Їа®ўҐаЄ*'),Pchar (str)); str:='Їа®ўҐаЄ*';
       AnsiToOem (PChar ('Їа®ўаҐЄ*'),ch);
       str:=ch;
       Writeln (f,str);
       CloseFile (f);
   end;}


begin
writeln('‚ўҐ¤ЁвҐ Ё¬п д*©«*: ');
read(fil);
assign (f, 'text.txt');
reset (f);
count:=1;
while not eof(f) do
begin
 readln(f,vrem3);
 stroka[count]:=vrem3;
 count:=count+1;
end;
close(f);
proverka;



{end;


procedure TfmMain.Button1Click (Sender: TObject);
var
i:= integer;
begin
Memo2.Lines.Clear;
for i:=0 to Memo1.Lines.Count-1 do
Memo2.Lines.Add (Transliterate (Memo1.Lines.Strings[i]));
end;}

end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 31.10.2011 в 14:15.
Бриллиант вне форума Ответить с цитированием
Старый 31.10.2011, 14:20   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Ваш код не разбирал.

посмотрите вот ТУТ мой пример...



p.s. перед и при копировании текста ОБЯЗАТЕЛЬНО включайте русскую раскладку клавиатуры.
это позволит сохранить русские буковки (ну, разумеется, редактор должен поддерживать нужную кодировку!)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Транслитерация на С++ 4ika Общие вопросы C/C++ 3 23.09.2010 22:14
ТрансЛитерация на Java 4ika Помощь студентам 0 23.09.2010 21:12
Транслитерация (2 вопроса) Rinox Общие вопросы C/C++ 4 13.09.2009 14:50
Мимовольная транслитерация текста IdPOP3 в Indy 10 Роман Радер Работа с сетью в Delphi 4 18.05.2009 09:23
Транслитерация WIC Microsoft Office Excel 3 04.10.2007 20:18