Автор: ВанXelsing 21.06.2004 0:50
Помогите с написанием проги, для получения зачета, до понедельника срочно нужно.
Задание:Надо написать прогу которая читает текст из одного файла и меняет(кодирует) каждую букву на следующую букву алфавита, при этом должен использоваться еще один текстовый файл, в котором написанно какие буквы из текста меняются на другие. Т.е. вид примерно такой:
а:=б
б:=в
в:=г
ну и.т.д. Я попытался сделать, но не получается, символы из файла, где содержится выше указзанный тип кодировки, не распазнаются как текст, а получаются место букв всякие сердечки и квадратики и.т.д. Хелп кто знает как это пишется.
Вот код моей проги, которую я попробовал написать.
Код
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 21.06.2004 1:16
Код
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 21.06.2004 13:11
Практически так, только надо чтобы паскаль брал условия замены букв из второго текстового файла, т.е. типа кодировки получается. Первый файл-это текст, второй файл -это условия замены.
Автор: ВанXelsing 21.06.2004 13:12
Но и за этот вариант СПАСИБО!
Автор: BlackShadow 21.06.2004 14:52
Так бы сразу и сказал...
Код
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 21.06.2004 19:28
Спасибо большое, зачет сдал, век не забуду!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Автор: BlackShadow 21.06.2004 19:36
Это тебе спасибо - дал нам с Олегом для очередной дискуссии на тему кто больший извращенец
Автор: BlackShadow 21.06.2004 20:55
Жизненный цикл обычного программера:
:p12: :p1: :p10: :p8:
Автор: Altair 21.06.2004 21:02
Насчет смайлов.
Как вам вот этот:
http://forum.sources.ru/style_images/1/smiles/tong.gif