var i:integer; procedure Line(n:integer;c:char); var i:integer; begin for i:=1 to n do write(c); writeln; end; begin writeln('таблица квадратных корней'); line(14,'='); writeln('Число корней'); line(14,'='); for i:=1 to 5 do begin writeln(i:5,' ',sqrt(i):6:3); line(14,'-'); end end. Вывести таблицу квадратов корней чисел, используя функцию Line для оформления таблицы
Пример 2 Составить программу подсчета суммы элементов массива из 20 чисел, имеющих четные порядковые номера. Этот пример мы разберем для того, чтобы продемонстрировать заполнение массива с помощью функции случайных чисел. Чтобы функция вырабатывала случайное число из промежутка [a;b] используется следующая запись: Random(b-a+1)+a В программу надо включить процедуру randomize, которая будет инициализировать генератор случайных чисел random(х)
Команда вызова процедуры Блок/схема процедуры записывается отдельно от основной программы.
В ЯП Паскаль в описании процедур в списке параметров нельзя описывать массивы таким образом: procedure Tabl(var x: array[1..n] of integer); Поэтому в основной программе до описания массивов можно указать тип данных массив: type arr = array[1..n] of integer; И затем этот тип данных использовать при описании массивов в самой программе и в процедурах при описании формальных параметров type arr = array[1..n] of integer; var i, k, z: integer; а :arr; procedure Tabl(var x: arr);
const n=20; type t=array[1..n] of integer; var a: t; s,i:integer; begin randomize; writeln('Заданный массив целых чисел'); s:=0; for i:=1 to n do begin a[i]:=random(201)-100; write(a[i],' '); if i mod 2=0 then s:=s+a[i] end; writeln; writeln('сумма элементов с четными номерами','равна',s) end.
Пример: Составим программу для перестановки m-го и k-го элементов одномерного массива. Пример: Составим программу для перестановки пятого и восьмого элементов одномерного массива.
Блок-схема основной программы начало Creat(n,a) конец Введите номера переставляемых элементов k и m Массив после перестановки k- го и m-го элементов transp _two(n,k,m,a)
procedure create(n: integer;var a:t); i:=1,n A[i], конец Блок-схема процедуры создания числового массива с помощью функции случайных чисел randomize заданный массив целых чисел A[i]:= Random(201)
p:=a[k]; a[k]:=a[m] ; a[m]:=p; procedure transp_two(n,k,m: integer;var a:t); i:=1,n A[i], конец Блок-схема процедуры перестановки элементов массива и его вывода на экран i:=1,n
Блок-схема основной программы начало Creat(n,a) конец Введите номера переставляемых элементов k и m Массив после перестановки k- го и m-го элементов transp _two(n,k,m,a)
const n=10; type t=array[1..n] of integer; var a: t; k,m:integer; procedure create(n:integer;var a: t); var i:integer; begin randomize; writeln('Заданный массив целых чисел'); for i:=1 to n do begin a[i]:=random(201)-100; write(a[i],' '); end; writeln; end; { } procedure transp_two(n,k,m:integer;var a:t); var i,p:integer; begin p:=a[k]; a[k]:=a[m] ; a[m]:=p; for i:=1 to n do write(a[i],' '); writeln; end; { } begin create(n,a); write('введите номера переставляемых элементов'); readln(k,m); writeln('массив после перестановки'); transp_two(n,k,m,a); end.
Пример: Составим программу для перестановки k-го элемента одномерного массива в начало. Пример: Составим программу для перестановки пятого элемента одномерного массива в начало.
Блок-схема основной программы начало Creat(n,a) конец Введите номер переставляемого элемента k Массив после перестановки k- го элемента в начало transp _begin(n,k,a)
p:=a[i]; a[i-1]:=a[i] ; a[i]:=p; procedure transp_begin(n,k: integer;var a:t); i:=k,2 Блок-схема процедуры перестановки элементов массива и его вывода на экран A[i], конец i:=1,n
Const n=10; type t=array[1..n] of integer; var a: t; k,i:integer; procedure create(n:integer;var a: t); var i:integer; begin randomize; writeln('Заданный массив целых чисел'); for i:=1 to n do begin a[i]:=random(201)-100; write(a[i],' '); end; writeln; end;
{ } procedure transp_begin(n,k:integer;var a:t); var i,p:integer; begin for i:=k downto 2 do begin p:=a[i-1]; a[i-1]:=a[i] ; a[i]:=p; end; writeln('массив после перестановки элемента в начало'); for i:=1 to n do write(a[i],' '); writeln end; { } begin create(n,a); write('введите номер переставляемого элемента'); readln(k); transp_begin(n,k,a); end.
1. Измените приведенную выше программу так, чтобы заданный элемент перемещался в конец массива (на последнее место) 2. Измените приведенную выше программу так, чтобы она последовательно перемещала два рядом стоящих элемента а[k] и a[k+1] в начало массива. Задача 4 В одномерном массиве необходимо найти номер заданного пользователем числа и переставить его на первое место в массиве, последовательно меняя местами с соседними элементами.
Полностью программу можно составить из трех процедур: 1. Создание массива – creat; 2. Поиск номера элемента – search_number; 3. Перестановка элемента в начало массива transp_begin
Блок-схема основной программы начало Creat(n,a) конец Введите переставляемый элемент, d Массив после перестановки k- го элемента в начало transp _begin(n,k,a) Search_number(d,a,k)
procedure search_number(d:integer;a:t;var k:integer); k:=0 k:=k+1 until a[k]=d конец
Const n=10; type t=array[1..n] of integer; var a: t; k,i,d:integer; procedure create(n:integer;var a: t); var i:integer; begin randomize; writeln('Заданный массив целых чисел'); for i:=1 to n do begin a[i]:=random(201)-100; write(a[i],' '); end; writeln; end; { } procedure search_number(d:integer;a:t;var k:integer); begin k:=0; repeat k:=k+1; until a[k]=d end; { }
procedure transp_begin(n,k:integer;var a:t); var i,p:integer; begin for i:=k downto 2 do begin p:=a[i-1]; a[i-1]:=a[i] ; a[i]:=p; end; writeln('массив после перестановки элемента в начало'); for i:=1 to n do write(a[i],' '); writeln end; { } begin create(n,a); write('введите переставляемый элемента'); readln(d); search_number(d,a,k); transp_begin(n,k,a); end.