Помощь - Поиск - Пользователи - Календарь
Полная версия: Замена букв в текстовом файле
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
ВанXelsing
Помогите с написанием проги, для получения зачета, до понедельника срочно нужно.
Задание:Надо написать прогу которая читает текст из одного файла и меняет(кодирует) каждую букву на следующую букву алфавита, при этом должен использоваться еще один текстовый файл, в котором написанно какие буквы из текста меняются на другие. Т.е. вид примерно такой:
а:=б
б:=в
в:=г
ну и.т.д. Я попытался сделать, но не получается, символы из файла, где содержится выше указзанный тип кодировки, не распазнаются как текст, а получаются место букв всякие сердечки и квадратики и.т.д. Хелп кто знает как это пишется.
Вот код моей проги, которую я попробовал написать.

Код

uses CRT;
var
   F,fs:text;        переменных}
   Buf:array[1..4096] of Char;
   St,sts:String[255];
   str:string;
   i,y:longint;
begin
 ClrScr;
 str:='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 Assign(fs,'C:\shifr.txt'
 reset(fs);
 while not eof(fs) do begin
 readln(fs,sts);
end;
 Assign(f,'C:\Text.txt');
 SetTextBuf(f,Buf);
 Reset(f);
  While not EOF(F)do
   begin
    readln(F,St);
for i:=1 to Length(St) do begin
 if St[i]='a' then St[i]:=Sts[y];
    write(ST[i]);
 end;
end;
BlackShadow
Код

Const
 Chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Var
 f:File Of Char;
 c:Char;
Begin
 Assign(f,'In.Txt');
 Reset(f);
 While Not Eof(f) Do
 Begin
   Read(f,c);
   If Pos(c,Chars) <> 0 Then
     If c='Z' Then
       Write('A')
     Else
      Write(Char(Byte(c)+1))
   Else
     Writer(c)
 Wns;
 Close(f)
End.

Если я правильно понял условия и нигде не описался...
Учти с русскими буквами такая тема не пройдёт - у них разрыв между "п" и "р" - надо проверку вставлять.
ВанXelsing
Практически так, только надо чтобы паскаль брал условия замены букв из второго текстового файла, т.е. типа кодировки получается. Первый файл-это текст, второй файл -это условия замены.
ВанXelsing
Но и за этот вариант СПАСИБО!
BlackShadow
Так бы сразу и сказал...
Код

Var
 CodeTable:Array['a'..'z'] Of Char;
 c:Char;
 f:File Of Char;
Begin
 Assign(f,'ReCode.Txt');
 Reset(f);
 For c:='a' To 'z' Do
   Read(f,CodeTable[c]);
 Close(f);
 Assign(f,'In.Txt');
 Reset(f);
 While Not Eof(f) Do
 Begin
   Read(f,c);
   If c In ['a'..'z'] Then
     Write(CodeTable[c])
   Else
     Write(c)
 End;
 Close(f)
End.

CodeTable.Txt должен состоять из 26 последовательноидущих букв. Например:
Цитата
BCDEFGHIJKLMNOPQRSTUVWXYZA
ВанXelsing
Спасибо большое, зачет сдал, век не забуду!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
BlackShadow
Это тебе спасибо - дал нам с Олегом для очередной дискуссии на тему кто больший извращенец smile.gif
Altair
smile.gif :D lol.gif rolleyes.gif B) :P
BlackShadow
smile.gif
Жизненный цикл обычного программера:
:p12: :p1: :p10: :p8:
Altair
Насчет смайлов.
Как вам вот этот:

НАЖМИТЕ, чтобы посмотреть
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.