Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Топ:
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
2017-06-04 | 301 |
5.00
из
|
Заказать работу |
|
|
program ex03_06;
{ шифрование сообщения методом Цезаря }
const
sym = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ '+
'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'+
'01234567890.';
var
s0,s1: string;
key:integer;
procedure Encrypt(s: string;k: integer;var es:string);
var
l,ll,i,p: integer;
c:char;
begin
l:=length(s); ll:=length(sym);
es:=s;
for i:=1 to l do begin
c:=s[i];
p:=pos(c,sym); p:=p+k;
if p>ll then p:=p-ll;
es[i]:=sym[p];
end;
end;
procedure Decrypt(s:string;k:integer;var ds:string);
var
l,ll,i,p:integer;
c: char;
begin
L:=length(s); ll:=length(sym);
k:=1;
ds:=s;
for i:=1 to l do begin
c:=s[i];
p:=pos(c,sym)-k; if p<=0 then p:=p+ll;
ds[i]:=sym[p];
end;
end;
begin
write('Введите сообщение: '); readln(s0);
write('введите ключ: '); readln(key);
if key>0 then Encrypt(s0,key,s1)
else Decrypt(s0,-key,s1);
writeln(s1);
readln;
end.
Результат работы программы:
Введите сообщение: Вся Галлия делится на три части
введите ключ: 4
Ёх3гЖдппм3гзипмцх3гсдгцфмгыдхцм
Работа с массивами
Заполнение массива случайными числами
random(М); // целое число из интервала 0<=x<M
random; // число real из интервала 0<=x<1
Число из интервала (a,b): random(b-a+1)+a;
В приведенном ниже примере производится заполнение массива случайными числами. Заполнение оформлено в виде процедуры FillV. Кроме того, в этом же примере показаны пример передачи массива в подпрограмму по значению (процедура DispV) и по ссылке (процедура FillV).
program ex04_01;
{ пример заполнения массива случайными числами }
type
vect = array[1..100] of real;
var
a: vect;
n: integer; // фактический размер массива
procedure FillV(k, R: integer;var v:vect);
{ процедура заполнения случайными числами }
{ k - число элементов, r - диапазон чисел }
var
i: integer;
begin
for i:=1 to k do v[i]:=random(r);
end;
procedure DispV(k: integer;v:vect);
var i: integer;
begin
for i:=1 to k do begin
write('[',i:2,']=',v[i]:7:4,' ');
if i mod 5 =0 then writeln;
end;
end;
begin
randomize;
write('введите фактический размер массива: ');
readln(n);
FillV(n,10,a);
DispV(n,a);
readln;
end.
Определение максимального элемента массива и его индекса
|
Программа определяет значение и индекс (номер) максимального элемента массива и выдаёт сообщение на экран.
program ex04_02;
{ Определение максимального элемента и его индекса }
const N=10;
var
m: array[1..N] of real; { объявление массива }
i: integer; { параметр цикла for }
max: real; { значение максимального элемента }
maxi: integer; { его индекс }
begin
{ ввод массива }
for i:=1 to N do begin
write('введите m[',i:2,']= ');
readln(m[i]);
end;
maxi:=1; max:=m[1]; { вначале max равен первому эл-ту }
for i:=2 to N do
if m[i]>max then begin
maxi:=i; max:=m[i];
end;
writeln('Максимальный элемент равен: ',max:12:5);
writeln('его индекс: ',maxi);
readln;
end.
Сортировка массивов
Сортировка массивов методом обменов (пузырька)
Для наглядности и возможности самостоятельно ознакомиться с этим методом сортировки в программе предусмотрен вывод массива после каждого прохода.
Идея метода состоит в сравнении двух соседних элементов, в результате чего меньшее число (более легкий "пузырек") перемещается на одну позицию влево.
Обычно просмотр организуют с конца, и после первого прохода самое маленькое число перемещается на первое место. Затем все повторяется от конца массива до второго элемента и т.д.
При использовании этого алгоритма весь массив просматривается несколько раз подряд.
При каждом таком просмотре сравниваются последовательно только соседние элементы массива. Если при сравнении окажется, что предыдущий элемент больше следующего, они меняются местами описанным выше способом. Так в результате одного последовательного просмотра элементы, значение которых больше, "всплывают" образно говоря на поверхность, т.е. ближе к концу массива. Если провести такой последовательный просмотр массива несколько раз, то "тяжёлые" элементы окончательно "всплывут" и массив окажется отсортированным.
Ниже приведен пример программы. Для наглядности после каждого обмена на экран выводится текущее состояние массива. Красным цветом выделена собственно сортировка.
|
Program ex04_03;
{ ex25_01 сортировка массива методом пузырька }
{ с выводом после каждого прохода, проходы - с конца }
const
N = 10; { размер массива }
Var
i, j, buf, k: integer; { счетчики и буфер обмена }
a: array[1..10] of integer;
begin
{ ввод массива }
for i:=1 to N do begin
write('a[',i,']= '); readln(a[i]);
end;
{ контрольный вывод массива }
writeln('исходный массив:');
for i:=1 to N do write(a[i]:5); writeln;
{ сортировка, проходы - с конца массива }
writeln('сортировка:');
for i:=1 to N do begin
for j:=N-1 downto i do
if a[j]>a[j+1] then begin
buf:=a[j]; a[j]:=a[j+1]; a[j+1]:=buf;
end;
{ вывод массива – для демонстрации }
for k:=1 to N do write(a[k]:5);
writeln;
end;
{ итоговый вывод массива }
writeln('отсортированный массив:');
for i:=1 to N do write(a[i]:5); writeln;
readln;
end.
Результат работы программы:
исходный массив:
7 5 1 2 9 6 4 1 3 8
сортировка:
1 7 5 1 2 9 6 4 3 8
1 1 7 5 2 3 9 6 4 8
1 1 2 7 5 3 4 9 6 8
1 1 2 3 7 5 4 6 9 8
1 1 2 3 4 7 5 6 8 9
1 1 2 3 4 5 7 6 8 9
1 1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9
отсортированный массив:
1 1 2 3 4 5 6 7 8 9
|
|
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!