Задача1. Составить процедуру нахождения квадрата суммы
действительных чисел и квадратного корня из этой суммы.
Используемые идентификаторы – обозначения:
a, b, c – данные числа;
z – сумма чисел;
x – квадрат суммы;
y – корень из суммы.
x1,y1- фактические параметры.
Программа:
program z1;
var x1,y1: real;
procedure expres ( a, b, c :real; var x, y: real);
var z: real;
begin
z:= a+b+c;
x:= sqr(z); {квадрат z}
y:= sqrt(z); {корень из z}
end;
{Основная программа}
begin
expres(25.4, 44.6, 30, x1, y1);
writeln( x1, y1);
end.
Формальные входные параметры a, b, c принимают значения фактических параметров a=25.4, b=44.6, c=30. При этих значениях выполняется процедура. Результатом выполнения процедуры являютcя x, y , которые передают свои значения соответствующим фактическим параметрам x1, y1. Таким образом, в основной программе будем иметь x1= 10000, y1= 10.
Задача 2. Оформим в виде процедуры SUMMA вычисление суммы 1+2+3+…+n
и произведения 1*2*3*…*n целых чисел.
Используемые идентификаторы – обозначения:
n – количество чисел;
SUM – сумма чисел;
PR – произведение чисел:
i – параметр цикла;
k, x, y – формальные параметры.
Программа:
program z2;
var n: integer;
PR,SUM: real;
procedure SUMMA (k: integer; var x, y: real); {начало процедуры}
var i: integer;
begin
x:=0; y:=1;
for i:=1 to k do
begin
x:=x+i;
y:=y*i;
end;
end; {конец процедуры}
{Основная программа}
begin
write (‘введите значение n: ’);
read (n);
SUMMA (n, SUM, PR);
writeln(‘SUM=’,SUM:5);
writeln(‘PR=’,PR:5);
end.
Отладочные данные:
Введите значение n : 10
SUM = 5.500000E+01
PR = 3.628800E+06
Задача 3. Даны действительные числа k, n, m. Получить:
f(-k, 2n, n-m) + f(1, 2, 3)
, где f(a, b, c) = a2 + b2 + c2 - a - c.
f(m, k, n)
Для вычисления функции составьте под программу - функцию.
Задача 4. Даны действительные числа, среди которых есть положительные, отрицательные и ноль. Вычислите произведение чисел, отличных от нуля, используя процедуру Произв. и сумму отрицательных чисел, используя процедуру Сумм.
Program hhh54;
var x:longint;
begin
read (x);
if ((x div 100) + ((x div 10) mod 10) + (x mod 10)) mod 2 <> 0 then write ('ЯВЛЯЕТСЯ')
else write ('НЕ ЯВЛЯЕТСЯ');
end.
2)
а)
Progran hhh54;
var i,k,x:longint;
begin
k:=0;
read (x);
while x <> 0 do
begin
if (x mod 10 = 6) and (x mod 4 = 0); then k:=k+1;
read (x);
end;
write (k);
end.
б)
Progran hhh54;
var i,s,x:longint;
begin
s:=0;
read (x);
while x <> 0 do
begin
if (x mod 10 = 6) and (x mod 4 = 0); then s:=s+x;
read (x);
end;
write (s);
end.
{$APPTYPE CONSOLE}
Var
U:array[1..10000] of integer;
h,k:integer;
Begin
Randomize;
Write('h = ');ReadLn(h);
Write('Исходный массив:');
For h:= 1 to h do
Begin
U[h]:=random(2*h+1)-h;
Write(' ',U[h])
End;
WriteLn;
Write('k = ');ReadLn(k);
For h:= 1 to h do
if U[h] = k then Write(h,' ');
ReadLn;
End.
2)
{$APPTYPE CONSOLE}
Var
B:array[1..10000,1..10000] of integer;
m,n,j,Max:integer;
Begin
Randomize;
Write('m = ');ReadLn(m);
Write('n = ');ReadLn(n);
For m:= 1 to m do
Begin
Max:=1;
For j:= 1 to n do
Begin
B[m,j]:=random(21)-10;
Write(B[m,j]:4);
if B[m,j] > B[m,Max] then Max:=j;
End;
WriteLn(', Max = ',B[m,Max],'[',m,',',Max,']');
End;
ReadLn
End.