CrystalZ | Дата: Вторник, 15 Января 2013, 22:23 | Сообщение # 1 | Тема: Pascal помогите в учении) |
уже был
Сейчас нет на сайте
| Здраствуйте дорогие форумчане, довольно таки недавно начал изучать ЯП Pascal. Буду выкладывать здесь плоды моих трудов, хочется наставлений от более опытных в программировании на Pascal людей, чтобы как говорится тыкнули носом в те места которые нужно дороботать и как эти места можно дороботать. Первое за что я взялся, это небольшой шифратор текста, поддержывает пока правда только англ, но все впереди) Шифруется текст по методу Цезаря, тобиш считывается символ, получаем его порядковый номер по алфавиту, затем прибавляем три к номеру и заменяем символом под этим порядковым номером. Вот текст программы:
PROGRAM file_code; USES crt; TYPE BLiters='A'..'Z'; SLiters='a'..'z'; crypt = object f_pars();
end;
VAR VFI,VFO:text;//file's vars in_file,out_file,SFE:string;//in and out filenames iFt_k:boolean; i:integer; procedure text_cript(var SFE:string); var ABC: array [1..26] of char; abc_: array [1..26] of char; j:integer; begin ABC[1]:='A'; ABC[2]:='B'; ABC[3]:='C'; ABC[4]:='D'; ABC[5]:='E'; ABC[6]:='F'; ABC[7]:='G'; ABC[8]:='H'; ABC[9]:='I'; ABC[10]:='J'; ABC[11]:='K'; ABC[12]:='L'; ABC[13]:='M'; ABC[14]:='N'; ABC[15]:='O'; ABC[16]:='P'; ABC[17]:='Q'; ABC[18]:='R'; ABC[19]:='S'; ABC[20]:='T'; ABC[21]:='U'; ABC[22]:='V'; ABC[23]:='W'; ABC[24]:='X'; ABC[25]:='Y'; ABC[26]:='Z'; ABC_[1]:='a'; ABC_[2]:='b'; ABC_[3]:='c'; ABC_[4]:='d'; ABC_[5]:='e'; ABC_[6]:='f'; ABC_[7]:='g'; ABC_[8]:='h'; ABC_[9]:='i'; ABC_[10]:='j'; ABC_[11]:='k'; ABC_[12]:='l'; ABC_[13]:='m'; ABC_[14]:='n'; ABC_[15]:='o'; ABC_[16]:='p'; ABC_[17]:='q'; ABC_[18]:='r'; ABC_[19]:='s'; ABC_[20]:='t'; ABC_[21]:='u'; ABC_[22]:='v'; ABC_[23]:='w'; ABC_[24]:='x'; ABC_[25]:='y'; ABC_[26]:='z'; for i:=1 to Length(SFE) do begin if(SFE[i] in ['A'..'Z']) then begin for j:=1 to 26 do begin if ABC[j]=SFE[i] then begin if j+3>26 then begin Delete(SFE,i,1); Insert(ABC[j+3-26],SFE,i);
end else begin Delete(SFE,i,1); Insert(ABC[j+3],SFE,i);
end; break;
end;
end; end; if(SFE[i] in ['a'..'z']) then begin for j:=1 to 26 do begin if ABC_[j]=SFE[i] then begin if j+3>26 then begin Delete(SFE,i,1); Insert(ABC_[j+3-26],SFE,i);
end else begin Delete(SFE,i,1); Insert(ABC_[j+3],SFE,i); end; break;
end;
end; end;
end;
writeln(VFO,SFE);
end;
BEGIN clrscr; writeln('Программа шифрует текстовый файл.'); writeln('Внимание!! Файл должен находится в одной директории с программой!');
repeat iFt_k:=true; {$I-} writeln('Введите имя входного файла!'); readln(in_file); assign(VFI,in_file); reset(VFI); {$I+} if (IOResult<>0) or (in_file='') then begin writeln('Не удалось открыть файл ',in_file,' нажмите Enter для завершения'); iFt_k:=false; end;
until iFt_k=true; {$I-} writeln('Введите имя выходного файла!'); readln(out_file); assign(VFO,out_file); rewrite(VFO); {$I+} while (not Eof(VFI)) do begin readln(VFI,SFE);
text_cript(SFE); end; close(VFO); readln();
END.
Сообщение отредактировал CrystalZ - Вторник, 15 Января 2013, 22:26 |
|
| |