1) Написать программу решения задачи: Найти максимальное из чисел, встречающихся в заданной матрице более одного раза.
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
const n=5;
type mas=array[1..n,1..n] of integer;
qwe=record
mas:array[1..n*n] of integer;
t:array[1..n,1..n] of byte;
end;
var i,j,tem:integer;
a:mas;
b:qwe;
procedure ch(a:mas;var b:qwe;r:integer;k,p:integer;var tem:integer);
var i,j:integer;
begin
b.t[k,p]:=1;
for i := 1 to n do
begin
for j := 1 to n do
begin
if (a[i,j]=r)and(i<>k)and(j<>p)and(b.t[i,j]=0) then
begin
tem:=tem+1;
b.t[i,j]:=1;
b.mas[tem]:=a[i,j];
end;
end;
end;
end;
begin
randomize;
tem:=0;
for i := 1 to n do
for j := 1 to n do
a[i,j]:=random(99)+1;
for i := 1 to n do
begin
for j := 1 to n do
begin
ch(a,b,a[i,j],i,j,tem);
end;
end;
j:=b.mas[1];
for i := 1 to tem do
begin
if b.mas[i]>j then j:=b.mas[i];
end;
writeln(j);
end.
2) Составить стандартную схему программы (ССП) в линейной и графовой форме.
ССП в графовой форме:
ССП в линейной форме:
0: start(y, n) goto 1
1: if P(i,n)=0 goto 2 else goto 6
2: if P(j,n)=1 goto 3 else goto 4
3: i=i+1, j=1 goto 1
4: aij=r(y)+1 goto 5
5: j=j+1 goto 2
6: i=1 goto 7
7: j=1 goto 8
8: if P(i,n)=0 goto 9 else goto 19
9: if P(j,n)=1 goto 10 else goto 11
10: i=i+1 goto 8
11: if P(k,n)=1 goto 12 else goto 13
12: j=j+1 goto 9
13: if P(k,n)=1 goto 14 else goto 15
14: k=k+1 goto 11
15: if F(aij, akt, i, j, k, t, b)=0 goto 16 else goto 17
16: t=t+1 goto 13
17: m=m+1 goto 18
18: bk=aij goto 16
19: j=b1 goto 20
20: if P(i,m)=0 goto 21 else goto 24
21: if P(bi,j)=0 goto 22 else 23
22: i=i+1 goto 20
23: j=bi goto 22
24: stop(j)
3) Указать интерпретацию ССП и представить протокол выполнения программы.
Рассмотрим интерпретацию ССП S:
- Область интерпретации
D ⊆ N
- подмножество множества натуральных (целых неотрицательных) чисел.
I(aij)
– матрица nxn. I(i)=1, I(j)=1, I(y)=9, I(k)=1, I(t)=1;
I(P(x,y))
– функция проверки окончания цикла. Если x>y
, то P(x,y)=T
, иначе F.
I(r(y))
– функция возвращающая случайное число в диапазоне от 0 до y.
I(F(a, b, i, j, k, t))
– функция возвращает значение T, если: (a=b) и (i<>k) или (j<>t)
.
Протокол выполнения программы (S, I)
конечен.
Похожие статьи: