Практическая часть
Программа №1:
Блок схема:
f:= palindrom(a) or palindrom(b)
нет
да
m:= n; p:=
0;
i:= m mod 10; p:=
p*10 + i; m:=
m div 10
Palindrom:=p=n
Словесное описание алгоритма:
Цель: Выяснить, является ли хоть одно из них палиндромом.
Запускается функция f.
Запускается проверка условия, если хотя бы одно число палиндром, то на экран выводится: «Хотя бы одно число палиндром». Если чисел палиндромов нет, то на экран выводится: «Оба не палиндромы».
Конец.
Функция f:
Выполняется цикл пока m>0
Число записывается с конца.
Конец.
Листинг программы:
Program lab3; {Программа для определения чисел палиндромов}
uses crt;
function Palindrom(n:longint):boolean; {Находит числа палиндромы}
var m,p:longint;
i,k:integer;
begin
m:=n;
p:=0;
while m>0 do
begin
i:=m mod 10;
p:=p*10+i;
m:=m div 10;
end;
Palindrom:=p=n;
end;
var a,b:longint;
f:boolean;
begin
clrscr; {Очистка экрана}
writeln('Введите 2 натуральных числа');
readln(a,b);
f:=Palindrom(a) or Palindrom(b);
if f then write('Хотя бы 1 число палиндром')
else write('Оба числа не палиндромы');
readln;
end.
Программа №2:
Блок схема:
i:=1 to n
t:=1 to m
i:=1 to t
j:=1
to p
i:=1 to
n
j:=1
to m
i:=1 to
t
j:=1
to p
r1:=1; e1:=1; r2:=1; e2:=1; maxelement
(a, n, m, r1, e1); maxelement
(b, t, p, r2, e2)
c:= A[r1;e1] A[r1;e1]:=
B[r2;e2] B[r2;e2]:=c;
i:=1 to
n
j:=1
to m
i:=1 to
t
j:=1
to p
max:=matr[1;1]
sa:= 1 to x
sc:= 1 to y
да
max:=matr[sa;sc]; imax:=sa; jmax:=sc;
Словесное описание алгоритма:
Цель: Написать программу, меняющую местами максимальные элементы матриц.
Запускаются циклы в которых выводятся элементы матриц А и В.
Запускается цикл который выводит на экран матрицы до обработки.
Запускается процедура maxelement
Запускается цикл который выводит на экран преобразованные матрицы.
Конец.
Процедура maxelement:
Цель: Преобразовать матрицы по нужному правилу
Запускаются два цикла от 1 до x и от 1 до y.
Запускается проверка условия.
Меняются максимальные элементы по заданному правилу.
Конец.
Листинг программы:
program lab3; {Программа меняющая максимальные элементы матриц местами}
uses crt;
type
matrix = array [1..50,1..50] of integer;
var
n,m,t,p,i,j,r1,r2,e1,e2,c:integer;
a,b:matrix;
procedure maxelement(matr:matrix;x,y:integer; var imax,jmax:integer); {Запускается процедура}
var max,sa,sc:integer;
begin
max:=matr[1,1];
for sa:=1 to x do
for sc:=1 to y do
if max<matr[sa,sc] then
begin
max:=matr[sa,sc];
imax:=sa;
jmax:=sc;
end;{Конец процедуры}
end;
begin
clrscr;
writeln ('razmernost matricy A');
readln (n,m);
writeln ('razmernost matricy B');
readln (t,p);
writeln ('Vvedi elementy matrici A');
for i:=1 to n do
for j:=1 to m do
readln(a[i,j]);
writeln ('Vvedi elementy matrici B');
for i:=1 to t do
for j:=1 to p do
readln(b[i,j]); clrscr;
writeln('Matrici do obrabotki:'); {Вывод матриц до обработки}
writeln('Matrica A: ');
for i:=1 to n do begin
for j:=1 to m do
write (a[i,j]:4,' ');
writeln;
end;
writeln;
writeln('Matrica B: ');
for i:=1 to t do begin
for j:=1 to p do
write (b[i,j]:4,' ');
writeln;
end;
r1:=1;e1:=1;r2:=1;e2:=1;
maxelement(a,n,m,r1,e1);
maxelement(b,t,p,r2,e2);
c:=A[r1,e1]; A[r1,e1]:=B[r2,e2]; B[r2,e2]:=c;
writeln;
writeln('Matrici posle obrabotki:'); {Вывод матриц после обработки}
writeln('Matrica A: ');
for i:=1 to n do begin
for j:=1 to m do
write (A[i,j]:4,' ');
writeln;
end;
writeln;
writeln('Matrica B: ');
for i:=1 to t do begin
for j:=1 to p do
write (B[i,j]:4,' ');
writeln;
end; readln;
end.
Программа №3:
Б
лок
схема:
Cnm:=cnm(m;n-1)+cnm(m-1;n-1)
Cnm:=1
Словесное описание алгоритма:
Цель: Найти значение .
Пользаватель вводит с клавиатуры n и m.
Выполняется действие высчитывается .
Выводит на экран .
Cnm: Если m=0 или n=m тогда =1
Иначе
Листинг программы:
uses crt;
var m,n:integer;
function cnm(m,n:integer):integer;
begin
if (m=0) or (n=m) then cnm:=1
else
cnm:=cnm(m,n-1)+cnm(m-1,n-1);
end;
begin
clrscr;
write('m=');
readln(m);
write('n='); readln(n);
writeln(cnm(m,n));
readln;
end.
