Информатика_всем
.pdf18. ВЫЧИСЛЕНИЯ С ИСПОЛЬЗОВАНИЕМ ПОДПРОГРАММ
Дважды вычислить значение выражения, первый раз используя
процедуру, а второй – функцию:
x |
|
2 |
|
|
y |
|
2 |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
z |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
||||||||||
S d |
3 ax |
|
1 |
3 |
2 |
by |
|
1 |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
x |
|
|
|
|
|
y |
|
|
|
|
4z cz2 |
1 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Б л о к - с х е м а к з а д а ч е № 1 8 ( и с п о л ь з о в а н и е ф у н к ц и и )
Вспомогательная функция F:
osnovaniex d x2 1 F osnovanie, d , x
x
Function F(const osnovanie,d,x:real):real
chislitel:=
exp(x*ln(osnovanie))+a*sqr(x)+1
znamenatel:= sqrt(abs(x))
F:=chislitel/znamenatel
Выход
osnovanie |
|
|
|
|
|
|
|
F |
||
|
F |
|
|
|||||||
|
|
|
|
|
|
|||||
d |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
||
x |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
основная программа (использование функции)
Начало
Ввод a,b,c,d
Ввод x,y,z
S:=d*(F(3,a,x)+
3*F(2,b,y))*(1/F(4,c,z))
Вывод S
Конец
Л и с т и н г п р о г р а м м ы н а P a s c a l к з а д а ч е № 1 8 ( и с п о л ь з о в а н и е ф у н к ц и и )
Program Z18_Fun;
// глобальные переменные программы ABC
49
Var a,b,c,d,x,y,z,S:real; // вспомогательная функция F
Function F(const osnovanie,d,x:real):real; // локальные переменные функции F
Var chislitel, znamenatel : real;
Begin // начало тела функции F
chislitel:= exp(x*ln(osnovanie))+a*sqr(x)+1; znamenatel:= sqrt(abs(x));
// функция получает свое значение
F:=chislitel/znamenatel;
End; // окончание тела функции F
// главная программа
Begin
writeLn('введите a,b,c,d'); readLn(a,b,c,d); writeLn('введите x,y,z'); readLn(x,y,z);
//вызов функции с различными фактическими
//параметрами
S:=d*(F(3,a,x)+3*F(2,b,y))*(1/F(4,c,z));
writeLn('S=',S:8:2);
End.
50
Б л о к - с х е м а к з а д а ч е № 1 8 ( и с п о л ь з о в а н и е п р о ц е д у р ы )
Вспомогательная процедура Fpr:
Fpr osnovanie, d , x, resultat
resultat osnovaniex d x2 1 x
Procedure Fpr(const osnovanie,d,x:real; var resultat:real)
chislitel:=
exp(x*ln(osnovanie))+a*sqr(x)+1
znamenatel:= sqrt(abs(x))
resultat:=chislitel/znamenatel
Выход
osnovanie
d |
|
|
|
Fpr |
|
|
resultat |
|
|
|
|
|
|||
|
|
|
|
|
|
x
основная программа (использование процедуры)
Начало
Ввод a,b,c,d
Ввод x,y,z
Fpr(3,a,x,v1)
Fpr(2,b,y,v2)
Fpr(4,c,z,v3)
S:=d*(v1+3*v2)*(1/v3)
Вывод S
Конец
Л и с т и н г п р о г р а м м ы н а P a s c a l к з а д а ч е № 1 8 ( и с п о л ь з о в а н и е п р о ц е д у р ы )
Program Z18_Proc;
//глобальные переменные программы ABC Var a,b,c,d,x,y,z,S:real;
v1,v2,v3: real;
//вспомогательная процедура Fpr
Procedure Fpr(const osnovanie, d, x:real; var resultat:real);
// локальные переменные процедуры Fpr Var chislitel, znamenatel : real;
51
Begin // начало тела процедуры Fpr chislitel:= exp(x*ln(osnovanie))+a*sqr(x)+1; znamenatel:= x*sin(x);
//вычисление результата resultat:=chislitel/znamenatel;
End; // окончание тела процедуры Fpr
// главная программа ABC
Begin
writeLn('введите a,b,c,d'); readLn(a,b,c,d); writeLn('введите x,y,z'); readLn(x,y,z);
//вызов процедуры с различными фактическими параметрами
Fpr(3,a,x,v1);
Fpr(2,b,y,v2);
Fpr(4,c,z,v3);
S:=d*(v1+3*v2)*(1/v3);
writeLn('S=',S:8:2);
End.
19. ОБРАБОТКА МАССИВОВ С ИСПОЛЬЗОВАНИЕМ ПОДПРОГРАММ
Ввести двумерные массивы X1(N1, N1), X2(N2, N2), X3(N3, N3). Найти наименьший из максимумов этих массивов. Значением найденного минимального максимума заменить элементы побочных диагоналей всех матриц. Далее переписать в одномерный массив Y главную диагональ той матрицы, в которой максимум окажется наибольшим (при решении реализовать процедуры ввода и вывода массивов: Vvod2m(A, N, Name),
Vivod2m(A, N, Name), Vivod1m(A, N, Name); Form(A, B, N) – процедуру
52
формирования из двумерного массива A одномерного массива B;
Zamena(A, N, Chislo) – замена побочной диагонали значением Chislo; и
функцию Maximum(A,N,M): <тип матрицы> – максимум в матрице; а
также функцию min(x,y) :<тип матрицы> – минимум из пары чисел x, y)
Б л о к - с х е м а к з а д а ч е № 1 9
ввод двумерного массива |
вывод двумерного массива |
|
|
procedure Vvod2m(var A:T2m; var |
Vivod2m(const A:T2m; const N:byte; |
N:byte; const Name:TName) |
const Name:TName) |
|
Ввод N |
|
|
|
|
|
|
|
|
i := 1 , N |
|
|
i := 1 , N |
|
|
|
|
|
|
|
|
j := 1 , N |
|
|
j := 1 , N |
|
|
|
|
|
|
|
|
Вывод A[i, j] |
|
|
Ввод A[i, j] |
|
|
|
|
|
Выход |
|
|
Выход |
|
|
|
|
|
|
|
|
|
A |
A |
|
|
|
Vvod2m |
N |
Vivod2m |
|
|
Name |
N |
|
|||
|
Na |
|
|
||
|
|
|
|
|
|
|
|
|
me |
|
|
A |
|
max |
A |
|
|
N |
Maximum |
N |
Form |
B |
|
|
|
||||
M |
|
|
|
|
|
|
x |
|
min |
min |
|
|
y |
|
|
|
|
|
|
53 |
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
|||
|
|
|
|
|
|
|
Vivod1m |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
N |
|
|
|
|
|
|
|
|
|
|
N |
|
|
|
|
|
|
|
Zamena |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
Nam |
|
|
|
|
|
|
|
|
|
|
|
|
Chisl |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
e |
|
|
|
|
|
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
вывод одномерного массива |
замена элементов побочной диагонали |
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
матрицы |
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
Vivod1m(const A:T1m; const N:byte; |
procedure Zamena(var A:T2m; const |
||||||||||||||||||||||||||||||
|
|
|
|
|
|
const Name:TName) |
|
|
|
|
N:byte; const Chislo:integer) |
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i := 1 , N |
|
|
|
|
|
|
|
|
|
|
|
i := 1 , N |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вывод A[i, j] |
|
|
|
|
|
|
|
|
|
A[i,N-i+1]:=Chislo |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Выход |
Выход |
|
формирование одномерного массива B из |
|
|
|
двумерного A |
поиск максимума в двумерном массиве |
|
|
|
procedure Form(const A:T2m; var |
|
function Maximum(const A:T2m; |
|
B:T1m; const N:byte) |
N,M:byte):integer |
|
|
Max := A[1,1] |
|
i := 1 , N |
|
|
|
|
|
B[i]:=A[i,i] |
i := 1 , N |
|
|
j := 1 , M |
|
|
|
|
Выход |
A[i, j] > Max |
|
|
|
поиск наименьшего из пары чисел |
|
Max := A[i, j] |
|
|
|
function min(const x,y:integer):integer |
|
Maximum := Max |
|
x<y |
Выход |
min:=x |
min:=y |
|
|
|
|
|
Выход |
54
Начало
Vvod2m(X1,N1,'X1')
Vvod2m(X2,N2,'X2')
Vvod2m(X3,N3,'X3')
Vivod2m(X1,N1,'X1')
max1:=Maximum(X1,N1,N1)
Вывод max1
Vivod2m(X2,N2,'X2')
max2:=Maximum(X2,N2,N2)
Вывод max2
Vivod2m(X3,N3,'X3')
max3:=Maximum(X3,N3,N3)
Вывод max3
MinOfMax:=min(max1,
min(max2,max3))
Вывод MinOfMax
1
Основная программа
1
Zamena(X1,N1,MinOfMax)
Zamena(X2,N2,MinOfMax)
Zamena(X3,N3,MinOfMax)
Vivod2m(X1,N1,'X1')
Vivod2m(X2,N2,'X2')
Vivod2m(X3,N3,'X3')
(max1>max2) and (max1>max3)
Ny:=N1 |
max2>max3 |
|
|
|
|
|
|
|
|
Ny:=N2 |
|
|
|
|
|
|
|
|
|
|
|||
|
form(X1,Y,Ny) |
|
|
|
|
|
|
|
|
|
|
Ny:=N3 |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
form(X2,Y,Ny) |
|
|
|
|
|
|
|
form(X3,Y,Ny) |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vivod1m(Y,Ny,'Y')
Конец
Л и с т и н г п р о г р а м м ы н а P a s c a l к з а д а ч е № 1 9
program Z19;
const MaxRazm = 10;
type T1m=array[1..sqr(MaxRazm)] of integer;
55
T2m=array[1..MaxRazm,1..MaxRazm] of integer; TName=string[5];
var X1,X2,X3:T2m; Y:T1m; N1,N2,N3,Ny:byte;
max1,max2,max3,MinOfMax,MaxOfMax:integer;
// ввод двумерного массива
procedure Vvod2m(var A:T2m; var N:byte; const Name:TName);
var i,j:byte; begin
writeLn('вводите массив ', Name,':'); write('размерность массива N='); readLn(N);
for i:=1 to N do for j:=1 to N do
begin write(Name,'[',i,',',j,']='); readLn(A[i,j]);
end;
end;
// вывод двумерного массива
procedure Vivod2m(const A:T2m; const N:byte; const Name:TName);
var i,j:byte; begin
writeLn('выводим массив ', Name,':'); for i:=1 to N do
begin
for j:=1 to N do
56
write(A[i,j]:5);
writeLn;
end;
end;
// поиск максимума в двумерном массиве
function Maximum(const A:T2m; N,M:byte):integer; var max:integer;
i,j:byte; begin
max:=A[1,1]; for i:=1 to N do
for j:=1 to M do
if A[i,j]>max then max:=A[i,j];
Maximum:=max;
end;
//поиск наименьшего из пары чисел function min(const x,y:integer):integer; begin
if x<y then min:=x
else min:=y;
end;
//замена элементов побочной диагонали матрицы procedure Zamena(var A:T2m; const N:byte;
const Chislo:integer); var i:byte;
begin
for i:=1 to N do
57
A[i,N-i+1]:=Chislo; end;
// формирование одномерного массива B из матрицы A procedure Form(const A:T2m; var B:T1m; const
N:byte);
var i:byte; begin
for i:=1 to N do B[i]:=A[i,i];
end;
// вывод одномерного массива
procedure Vivod1m(const A:T1m; const N:byte; const Name:TName);
var i:byte; begin
writeLn('Выводим одномерный массив ', Name,':'); for i:=1 to N do
write(A[i]:5);
writeLn;
end; begin
// вводим массивы
Vvod2m(X1,N1,'X1');
Vvod2m(X2,N2,'X2');
Vvod2m(X3,N3,'X3');
// выводим массивы до преобразования
// ищем максимумы в массивах
Vivod2m(X1,N1,'X1');
max1:=Maximum(X1,N1,N1);
58