Процедуры и функции (решебник)
Решение типовых задач по теме «процедуры и функции». Решение производилось с использованием Free Pascal, в качестве IDE использовался Geany. Задачи из сборника Абрамова отмечены соответствующим номером.
424 Даны действительные числа s, t. Получить
,
где
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
var sum,t,s,u:real; procedure f(a,b,c:real; var q:real); begin q:=(2*a-b-sin(c))/(5+abs(c)); end; BEGIN writeln('Введите s, t'); readln (t,s); f(t,-2*s,1.17,u); sum:=u; f(2.2,t,s-t,u); sum:=sum+u; writeln (sum:5:2); END. |
1 2 3 4 5 6 7 8 9 10 11 |
var sum,t,s:real; function f(a,b,c:real):real; begin f:=(2*a-b-sin(c))/(5+abs(c)); end; BEGIN writeln('Введите s, t'); readln (t,s); sum:=f(t,-2*s,1.17)+f(2.2,t,t-s); writeln (sum:5:2); END. |
425 Даны действительные числа s, t. Получить
,
где
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
var s,t,u,sum:real; procedure g(a,b:real; var c:real); begin c:=(a*a+b*b)/(a*a+2*a*b+3*b*b+4); end; BEGIN writeln('Введите s, t'); readln (t,s); g(1.2,s,u); sum:=u; g(t,s,u); sum:=sum+u; g(2*s-1,s*t,u); sum:=sum-u; writeln (sum:5:2); END. |
1 2 3 4 5 6 7 8 9 10 11 |
var s,t,sum:real; function g(a,b:real):real; begin g:=(a*a+b*b)/(a*a+2*a*b+3*b*b+4); end; BEGIN writeln('Введите s, t'); readln (t,s); sum:=g(1.2,s)+g(t,s)-g(2*s-1,s*t); writeln (sum:5:2); END. |
426 Дано действительное число y. Получить
,
где
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
var sum, y:real; function fact(a:longint):longint; var i:integer; begin fact:=1; for i:=1 to a-1 do fact:=fact*i; end; function step(s:real; b:integer):real; var j:integer; begin step:=1; for j:=0 to b do step:=step*s; end; function t(x:real):real; var k:integer; begin for k:=0 to 10 do t:=(step(x,2*k+1)/fact(2*k+1))/(step(x,2*k)/fact(2*k)); end; BEGIN writeln('Введите y'); readln(y); sum:=1.7*t(0.25)+2*t(1+y)/(6-t(sqr(y)-1)); writeln(sum:5:2); END. |
427 Даны действительные числа a, b, c. Получить
1 2 3 4 5 6 7 8 9 10 11 |
var a,b,c,sum:real; function max(x,y:real):real; begin if x>y then max:=x else max:=y; end; BEGIN writeln('Введите a,b,c'); readln(a,b,c); sum:=(max(a,a+b)+max(a,b+c))/1+max(a+b*c,1.15); writeln(sum:5:2); end. |
430 Даны натуральные числа k,l,m, действительные числа x1,…,xk, y1,…,yl, z1,…,zm. Получить
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
const d=100; type mas=array[1..d] of real; var x,y,z:mas; k,l,m:integer; t:real; procedure inp(b:integer; var a:mas); var i:integer; begin for i:=1 to b do a[i]:=100-random(200); end; function max(b:integer; var a:mas):real; var i:integer; begin max:=a[1]; for i:=1 to b do if a[i]>max then max:=a[i]; end; BEGIN writeln('Введите размерности массивов k, l, m'); readln(k,l,m); randomize; inp(k,x); inp(l,y); inp(m,z); if max(k,x)>=0 then t:=(max(l,y)+max(m,z))/2 else t:=1+sqr(max(k,x)); writeln(t:5:2); END. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
const k=10; l=20; m=30; var x: array [0..k-1] of real; y: array [0..l-1] of real; z: array [0..m-1] of real; t:real; procedure inp(var a: array of real; b:integer); var i: integer; begin for i:=0 to b-1 do a[b]:=100-random(200); end; function max(a: array of real; b:integer): real; var i:integer; begin max:=a[0]; for i:=1 to b-1 do if (a[i]>max) then max:=a[i]; end; BEGIN randomize; inp(x,k); inp(y,l); inp(z,m); if max(x,k)>=0 then t:=(max(y,l)+max(z,m))/2 else t:=1+sqr(max(x,k)); writeln(t:5:1); END. |
431 Даны действительные числа s, t. Получить
,
где
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var s,t,sum:real; function h(a,b:real):real; begin h:=a/(1+b*b)+b/(1+a*a)-((a-b)*(a-b)*(a-b)); end; function max(a,b:real):real; begin if a>b then max:=a else max:=b; end; BEGIN writeln('Введите s,t'); readln(s,t); sum:=h(s,t)+max(sqr(h(s-t,s*t)),sqr(sqr(h(s-t,s+t))))+h(1,1); writeln(sum:5:2); END. |