Professional Documents
Culture Documents
А Руденко
ПРАКТИКУМ
ПО АЛГОРИТМИЧЕСКОМУ ПРОГРАММИРОВАНИЮ
ТУРБО ПАСКАЛЬ
ProCNC. Info
2008
1
СОДЕРЖАНИЕ
ПРЕДИСЛОВИЕ ………………………………………………………………………. 4
РАЗДЕЛ 1. АЛГОРИТМИЧЕСКИЙ ЯЗЫК ТУРБО ПАСКАЛЬ ………………… 5
ГЛАВА 6. ПОДПРОГРАММЫ……………………………………………………………………. 49
2
6.2. Примеры программ, содержащих подпрограммы……………………. 50
Программы с разветвлениями………………….……………………….. 64
ТУРБО ПАСКАЛЮ……………………………………………………. 71
ввода-вывода…………………………………………………………….…… 74
3
3.6. Лабораторная работа “ LAB-5 “: Подпрограммы…………… …………... 86
К ЛАБОРАТОРНЫМ РАБОТАМ……………………………………. 92
4
ПРЕДИСЛОВИЕ
В качестве алгоритмического языка взят язык Турбо Паскаль. Его структура, операторы
изложены в разделе 1, содержащего 6 глав. Здесь работа каждого из рассмотренных
операторов иллюстрируется большим количеством компьютерных программ.
Как показывает наш опыт работы выполнение этих упражнений и лабораторных работ
дает читателю возможность самостоятельно овладеть навыками программирования на языке
Турбо Паскаль.
5
РАЗДЕЛ 1. АЛГОРИТМИЧЕСКИЙ ЯЗЫК ТУРБО ПАСКАЛЬ
Глава 1. Начальные сведения
1.1. Алфавит языка Паскаль
6
Ln – натуральный логарифм; Pi – число π;
file,for,function,goto,if,in,label,mod,nil,not,of,packet,procedure,program,record,
repeat,set,then,to,type,until,var,while,with.
При записи числа в форме с фиксированной точкой точка используется для отделения
целой части от дробной. Например: 2.375; - 11.71; 0.3175. Целая часть, равная нулю,
обязательно должна быть записана: Например: 0.65 – правильно записано, .65 –
неправильно записано.
7
Например: 14000=1.4*104=1.4Е4; 1.3*105=1.3Е5; Наличие мантиссы в записи числа
обязательно, если даже она равна 1. 106=1Е6.
8
Правила для выбора и записи идентификатора
9
4) если значение аргумента не попадает в область определения функции, то будет выдано
сообщение об ошибке.
5) Примеры
2
Sqrt(3*x+sqrt(Abs(x)))
3 sin|x| SIN(Abs(x))
4
EXP(-sqr(x)/2)
10
Глава 2. Структура программы. Операторы присваивания,
ввода и вывода. Линейные программы
Запись алгоритма решения задачи на специальном языке, предназначенная для
выполнения компьютером, называется программой.
Программа представляет собой последовательность действий (команд). В языках
программирования команды принято называть операторами. Каждый оператор записывается в
отдельную строку. Завершается программа оператором END.
2.1. Оператор присваивания
Оператор присваивания имеет вид:
PI: = 3.1415;
X: = Sqr (3)+SIN (PI/6)
Переменной Х будет присвоено значение 9.5.
В правую часть оператора присваивания могут входить имена переменных, но к моменту
выполнения оператора каждая из этих переменных должна получить числовое значение.
Числовые значения переменные получают либо с помощью оператора присваивания, либо с
помощью ввода.
А: =13.5;
11
В:=7.2;
Р:=2*А+2*В
В операторе присваивания в левой и правой частях может стоять одно и то же имя переменной.
Например: Х:=Х+5.5
Это означает, что переменная Х принимает новое значение равное прежнему плюс 5.5. Пусть
Х=2. В результате выполнения оператора присваивания Х получает значение 7.5 и в
последующих вычислениях значение Х равно 7.5.
Операторы процедуры ввода и вывода необходимо изучить в первую очередь, потому что
каждая программа реализует ввод и вывод данных.
Для ввода и вывода данных будем использовать стандартные процедуры ввода (read) и
вывода (write), оперирующие стандартными последовательными файлами input и output.
Для ввода информации используется операторы процедур ввода следующего вида:
12
2) Writel(a1,a2,…,an) – реализует вывод значений переменных a1,a2,…an в одну строку и
переход к началу следующей строки файла output;
3) Writeln – реализует пропуск строки (перевод строки) в файле output и переход к началу
следующей строки.
13
P=16.40 S=14.25 расстоянии от левого края экрана.
Writeln (` P=`,P:6:2);
Writeln (` S=`,S:6:2); P и S будут напечатаны в разных строках
P=16.40
S=14.25
Writeln (` P=`, P:6:2);
Writeln;
Пустой оператор. Он увеличивает
Writeln(` S=`,S:6:2);
расстояние между строками.
P=16.40
S=14.25
14
Операторы выполняются в том порядке, в котором они записаны в программе. При
необходимости изменить порядок выполнения операторов, используют операторы управления.
GOTO <метка>;
и осуществляет переход к оператору с меткой.
Метка должна быть описана в программе. Описание меток состоит из зарезервированного
слова LABEL (метка), за которым следует список меток:
label
lb1, lb2;
Метка располагается непосредственно перед помечаемым оператором и отделяется от него
двоеточием.
Label
lb1;
begin
……………
goto lb1;
……………
lb1:
……………
Пример 3.1.
Program Pr31;
Uses Crt;
var a,c:real;
label lb1;
Begin
Clrscr;
a:=2;
c:=a+1;
goto lb1;
c:=a+2;
lb1:
write(' c=',c:4:1);
End. Результат вычислений c= 3.0
Оператор qoto lb1 передаёт управление оператору write. На экране появляется информация: с
= 3.
Оператор с: = a +2 выполняться не будет.
15
Оператор условной передачи управления имеет вид:
IF B THEN P ELSE Q;
истина
Р
В
Q Следующий оператор
16
Пример 3.2.
Program Pr32;
Uses Crt;
Var a, b, c: integer;
Begin
Clrscr;
a:=5;
b:=7;
if a>b then c:=a else c:=b;
write(' c=',c);
End.
c=7
В зависимости от значения условия выполняется оператор с = a или оператор с = b.
IF B THEN P
Блок схема выполнения этого оператора имеет вид:
истина
Р Следующий
В
ложь
17
Пример 3.3.
Program Pr33;
Uses Crt;
Var a,b,c:integer;
Label
lb1,lb2;
begin
Clrscr;
a:=10;
b:=20;
if b>a then goto lb1;
c:=a+b;
Writeln(' c=',c);
goto lb2;
lb1:
c:=a-b;
writeln(' c=',c);
lb2:
End. В результате выполнения программы С имеет значение: С= -10.
Р и Q могут быть группой операторов. Операторы в группе отделяютя друг от друга
операторными скобками begin и end.
Пример 3.4.
Program Pr34;
Uses Crt;
Var a,b,c:integer;
begin
Clrscr;
a:=10;
b:=20;
if a>b then
begin c:=b; writeln(' c=',c) end
else
begin c:=a; writeln(' c=',c) end;
end.
Результат С = 10.
18
Пример 3.5.
3
Х< -3 X>4 X < -3 OR X>4
-3 4
Пример 3.6.
Program Pr36;
Uses Crt;
Var a,b,x,y,z:integer;
begin
Clrscr;
a:=10;
b:=20;
x:=5;
y:=3;
if( a<b) and( x>y) then z:=x+y;
write(' z=',z);
end.
Результат выполнения программы: Z = 8
19
Запишем несколько условных операторов:
ax 2bx c=0 .
−b b 2 −4 ac ; −b− b2 −4 ac
x1 = x 2=
2a 2a
а = 2; a = 2;
b = 3; b = 1;
c = -1; c = 7.
20
Составим блок –схему решения задачи
Начало
Описание и
ввод данных
d: = -4ac
НЕТ
Вычисление
d< X1,X2
0
ДА
Вывод
«Действительных Вывод
корней нет» a,b,c;X1,X2
Конец
21
Program Pr37
Uses Crt;
Var a, b, c, d, x1, x2,d :real;
label lb1;
begin
Clrscr;
Writeln ('Решение квадратного уравнения ');
Write ('a=');
Readln (a);
Write ('b=');
Readln (b);
Write ('c=');
Readln (c);
Writeln;
d:=b*b-4*a*c;
if d<0 then goto lb1;
lb1 :
writeln ('Действительных корней нет');
x1: =(-b+sqrt(d))/2/a;
x2:=(-b-sqrt(d))/2/a;
writeln (' x1=',x1:8:4,' ','x2=',x2:8:4);
end.
Рeшeниe квадратного уравнения
a=2
b= 3
c=- 1
x1= 0.2808 x2= -1.7808
Рeшeнue квадратного уравнения
a= 2
b= 1
c= 7
Действительных корней нет
22
Пример 3.8. Составить таблицу значений функции y = +4x-1 на отрезке [a;b] с шагом h.
Принять: a = -2; b = 2; h = 0,5.
Блок – схема
Начало
Описание a,b,h
X,Y
Ввод a,b,h.
x=a
y = +4x-1
да
Вывод X,Y
х: = x + h x≤
Нет
Конец
23
Program Pr38;
Uses Crt;
Var a, b, h, x, y: real;
Label lb1;
Begin
Clrscr;
writeln(' Табулирование функции’);
writeln;
write('a=');
readln(a);
write('b=');
readln(b);
write('h=');
readln(h);
writeln(' x',' ','y');
x:=a;
lb1:
y:=x*x*x+4*x-1;
writeln( x:7:3,' ',y:7:3);
x:=x+h;
if x<=b then goto lb1;
readln;
end.
Табулирование функции
a=-2
b=2
h=0.5
x y
-2.000 -17.000
-1.500 -10.375
-1.000 -6.000
-0.500 -3.125
0.000 -1.000
0.500 1.125
1.000 4.000
1.500 8.375
2.000 15.000
24
Глава 4. Массивы. Работа с массивами
Массивом может быть строка чисел А = [9,14,20,40], или прямоугольная таблица чисел
В=
Массив как единое целое обозначается именем. Имена массивов, как и имена переменных,
назначаются программистом по тем же правилам. Отдельные величины, образующие массив,
называются элементами массива или переменными с индексами.
Для обращения к отдельному элементу массива следует указать имя массива и в круглых
скобках написать его номер. Нумерация элементов массива начинается с нуля. Например: для
обращения в массиве А к элементу, значение которого 20, необходимо записать А(2) Если
массив двумерный, то элемент массива имеет два индекса, разделенные запятой. Первый
индекс указывает номер строки, второй - номер столбца.
25
Например: массив В = в ячейках памяти ЭВМ располагается следующим
Для того, чтобы выделить ячейки памяти ЭВМ для массивов в программе их надо описать.
Элемент массива В1 имеет тип integer. Индекс для этого массива может изменятся в
интервале от 2 до 8.
В общем виде:
26
Как видим списки типов индексов пишутся в одних квадратных скобках и отделяются
друг от друга запятыми. В этом случае элемент матрицы С [i, j].
В Турбо Паскале можно одним оператором присваивания передать все элементы одного
массива другому массиву того же типа.
Например:
Var
a, b: array [1,5] of integer
begin
a: = b;
end.
После этого присвоения все пять элементов массива А получат те же значения, что и в массиве
В.
Пример 4.1. Дан массив А[1..2]. Сформировать массив В[1..2, 1..2] по правилу b(i,j)= аi –
Program Pr41;
Uses Crt;
Var
a:array[1..2] of real;
b:array[1..2,1..2] of real;
Begin
Clrscr;
writeln(' MAССИВ B');
writeln;
a[1]:=3.4; a[2]:=4.2;
b[1,1]:=a[1]-3*a[1];
b[1,2]:=a[1]-3*a[2];
b[2,1]:=a[2]-3*a[1];
b[2,2]:=a[2]-3*a[2];
writeln(' b[1,1]=',b[1,1]:6:3,' b[1,2]=', b[1,2]:6:3);
writeln(' b[2,1]=',b[2,1]:6:3,' b[2,2]=', b[2,2]:6:3);
end.
27
МАССИВ В
b [1,1]=-6.800 b [1,2]=-9.200
b [2,1]=-6.000 b [2,2]=-8.400
Примечание: Эту программу можно упростить, если элементы массива В[i;j] будут
насчитываться в цикле. Смотрите пример 5.13 главы 5.
Описание массива,
объявление данных
I:=1
ввод элемента
массива
да
a[i]>= SP:=SP+a(I)
нет
вывод
конец
28
Program Pr42
Uses Crt;
var k,i:integer;
var
a:array[1..6] of real;
Var sp, so:real;
Label lb1;
Begin
Clrscr;
k:=6;i:=1;
a[1]:=2.5; a[2]:=-3.4; a[3]:=-7.1;
a[4]:=0.5; a[5]:=-4.7; a[6]:=6;
sp:=0;
so:=0;
lb1:
if a[i]>=0 then sp:=sp+a[i] else so:=so+a[i];
i:=i+1;
if i<=6 then goto lb1;
writeln(' sp=',sp:5:2,' ','so=',so:5:2);
end.
Sp= 9.00 So=-15.20
29
Глава 5. Оператор цикла
FOR X:= m1 TO m2 DO
X: =m1
тело цикла
X: =X+1
да
X≤
m2
нет
следующий
оператор
30
Если шаг h=-1, т.е. значение управляющей переменной убывает, то конструкция оператора
цикла следующая:
31
Пример 5.2. Составить программу вычисления суммы обратных квадратов чисел от 1 до
15.
S=1+ + +…+ .
Программа Блок-схема
Program Pr52;
Uses Crt; Начало
var k:integer;
s:real;
begin S:=Ø
ClrScr;
writeln(' Сумма обратных квадратов');
writeln;
s:=0; k: =1
for k:=1 to 15 do
s:=s+sqr(1/k);
writeln(' s=',s:8:4);
end.
S: = S +
Результат :
Да
k≤
15
Нет
Вывод S
Конец
32
Пример 5.3. Составить таблицу значений функции y =x2+5
на отрезке [6, -2] с шагом h=-1.
Program Pr53;
Uses Crt;
Var y, x: integer;
begin
Clrscr;
for x:= 6 downto -2 do
begin
y:= x*x+5;
writeln(' x=',x:4,' y=',y:4);
end;
end.
x= 6 y= 41
x= 5 y= 30
x= 4 y= 21
x= 3 y= 14
x= 2 y= 9
x= 1 y= 6
x= 0 y= 5
x= -1 y= 6
x= -2 y= 9
33
Пример 5.4. Найти значение функции
Y =5х3+
при x= -1.2, 0.5, 1.4, 2.7.
Program Pr54;
Uses Crt;
var y:real; i:integer;
var x:array[1..4] of real;
begin
Clrscr;
writeln(' Вычисление значений функции' );
writeln;
x[1]:=-1.2; x[2]:=0.5;
x[3]:=1.4; x[4]:=2.7;
for i:=1 to 4 do
begin
y:=5*x[i]*x[i]*x[i]+sqrt(2+x[i]);
writeln(' x=',x[i]:4:1,' y=',y:9:4);
end;
end.
Вычисление значений функции
x=-1.2 y= -7.7456
x= 0.5 y= 2.2061
x= 1.4 y= 15.5639
x= 2.7 y= 100.5829
34
Пример 5.5. Вычислить сумму
k
4 ∑n=1 sin kn
S=∑k =1
k!
Program Pr55;
Uses crt;
var k,n:integer;
var s,s1,f:real;
begin
Clrscr;
s:=0;
s1:=0;
f:=1;
for k:=1 to 4 do
begin
for n:=1 to k do
begin
s1:=s1+sin(k*n);
f:=f*k;
s:=s+s1/f;
end;
end;
writeln(' ','s=', s:8:5);
end.
S = 2.09766
35
Пример 5.6. Три матрицы A, B, C, имеют 2 строки и 2 столбца каждая. Вычислить
Var i, j, k: integer;
Var a: array [1..2, 1..2] of real;
Var b: array [1..2,1..2] of real;
Var c: array [1..2,1..2] of real;
Begin
Clrscr;
a[1,1]:=1.2; a[1,2]:=2.1;
a[2,1]:=4.01; a[2,2]:=3.13;
b[1,1]:=12.3; b[1,2]:=0.81;
b[2,1]:=3.05; b[2,2]:=2.06;
for i:=1 to 2 do
begin
for j:=1 to 2 do
begin
c[i,j]:=0;
for k:=1 to 2 do
c[i, j]:=c[i, j]+a[i, k]*b[k, j];
writeln('i=',i,' j=',j,' ','c[i, j]=',c[i, j]:8:3);
end;
end;
End.
i=1 j=1 c[ i,j ]=21.165
i=1 j=2 c[ i,j ]=5.298
i=2 j=1 c[ i,j ]=58.870
i=2 j=2 c[ i,j ]=9.696
36
Пример 5.7. Составить таблицу значений функции y=2x+sin(x2) на отрезке [a,b] с
шагом h.
a=-0.5; b=2.5; h=0.5.
Используя данные задачи, можно определить количество циклов
k= k=6+1=7.
Program Pr57;
Uses Crt;
var a,b,x,y,h:real;
var k:integer;
Begin
Clrscr;
writeln('Вычисление значений функции');
h:=0.5; b:=2.5;
a:=-0.5;
x:=a;
for k:=1 to 7 do
begin
y:=EXP(x*ln(2))+sin(x*x);
writeln(' x=',x:5:2,' y=',y:6:3);
x:=x+h;
end;
End.
x =-0.50 y= 0.955
x= 0.00 y= 1.000
x= 0.50 y= 1.662
x= 1.00 y= 2.841
x= 1.50 y= 3.607
x= 2.00 y= 3.243
x= 2.50 y= 5.624
37
5.2. Цикл с предусловием
Program Pr58;
Uses Crt;
var i, s:integer;
begin
Clrscr;
s: =0;
i: =0;
while i<10 do
begin
i:=i+1;
s:=s+i;
end;
writeln (' s=',s);
end.
Результат: S=55.
Примечание. Цикл с предусловием While … DO используется, если неизвестно
количество циклов. В цикле с предусловием цикл работает до тех пор, пока выполняется
условие. В рассматриваемом примере условие i<10. Пока это условие выполняется, цикл
работает. Если условие не выполняется, то машина переходит к выполнению следующих
операторов программы.
38
Пример 5.9. Вычислить число π, пользуясь формулой Грегори
.
Вычисление необходимо прекратить, как только абсолютная величина очередного члена
ряда станет меньше чем 0.5*10-4.
Комментарий:
Snak – знак
k – количество операций в цикле, что характеризует количество членов разложения ряда.
Program Pr59
Uses Crt;
const
c=0.5E-7; .
, var s,s1:real;
snak,k:integer;
begin
Clrscr;
snak:=-1;
s:=1.0;
s1:=1.0;
k:=1;
while abs(s1) > c do
begin
s1:=snak/(2*k+1);
s:=s+s1;
snak:=-snak;
k:=k+1
end;
s:=4*s;
Writeln (' PI=',s:10:8);
End.
PI=3.14169264 k=10001
Член ряда, котрий стал меньше c=0.5*10-4 находится на 10001 месте ряда π /4.
39
5.3. Цикл с послесловием
Структура цикла следующая
Program Pr510;
Uses Crt;
var k,s:integer;
begin
Clrscr;
writeln('Сумма чисел от 1 до 50');
writeln;
k:=0;
s:=0;
repeat
k:=k+1;
s:=s+k;
until k=50;
writeln(' ','s=',s);
end.
Сумма чисел от 1 до 50
S=1275.
40
Пример 5.11. Вычислить сумму четных степеней переменной х
2k
S= , когда очередное значение степени x2k не станет больше 104.
Принять х=2.
Program Pr511;
Uses Crt;
var k:integer;
var x,s:real;
begin
Clrscr;
x:=2;
s:=1;
k:=0;
repeat
k:=k+1;
s:=s+exp(2*k*ln(x));
until
exp(2*k*ln(x))>1E04;
end.
41
Пример 5.12. Найти корень кубический из числа N с точностью до 0,0001 по формуле
N
2x k
x 2k
x k 1 =
3
xk – предыдущее значение, xk+1 – последующее значение.
42
Пример 5.13. Смотрите пример 4.1 главы 4.
Дан массив А[1..2]. Сформировать массив В[1..2, 1..2] по правилу b(i,j)=аi – 3aj.
i= 1, 2; j= 1, 2; a[1]= 3.4; a[2]= 4.2.
Program Pr 5.13;
Uses Crt;
var i,j:integer;
var a:array[1..2] of real;
var b:array[1..2,1..2] of real;
begin
Clrscr;
writeln(' MAССИВ B');
a[1]:=3.4; a[2]:=4.2;
for i:=1 to 2 do
for j:=1 to 2 do
b[i,j]:=a[i]-3*a[j];
writeln(' b[1,1]=',b[1,1]:6:2,' b[1,2]=',b[1,2]:6:2);
writeln(' b[2,1]=',b[2,1]:6:2,' b[2,2]=',b[2,2]:6:2);
end.
MAССИВ B
43
Пример 5.14. Написать программу, которая сначала обеспечит ввод шести чисел в
одномерный массив, а затем складывать и выводить результат на экран.
Program Pr514;
Uses Crt;
const N=6;
var i,s:integer; . Комментарий:
var A:array[1..N] of integer; S – сумма чисел
Begin N – количество чисел.
Clrscr; A – массив из шести элементов.
writeln('Введите элемент '); Числа: 6, 12, 18, 24, 30, 36, которые
for i:=1 to N do будут элементами массива A[I].
Begin
write( 'i '); Ввод массива чисел с экрана
read(A[i]); Организация массива A[I]
end;
s:=0;
for i:=1 to N do
s:=s+A[i];
writeln (' s=',s);
end;
End.
Результат: S=126.
44
i−0 . 1
Пример 5.15. Последовательность x1 , x 2 , . . . образована по закону xi = 3
i ∣tg 2i∣
( i= 1,2…). Известно действительное число E>0. Записать члени последовательности
x1 , x 2 , . . . остановившись после первого члена , для которого виполняется ∣x i∣E .
Принято: E= EP =0.01.
Program Pr515;
Uses Crt;
var i:integer;
var ep, x:real;
Begin
Clrscr;
ep:=0.01;
x:=1;
i:=1;
while x>ep do
begin
x:=(i-0.1)/(i*i*i+abs(sin(2*i)/cos(2*i)));
writeln(x:6:3);
i:=i+1;
end;
End.
0.283 , 0.207 , 0.106, 0.055 , 0.039 , 0.027 , 0.020 , 0.015 , 0.012 , 0.010
45
Пример 5.16. Задано натуральное число n. Найти первую цифру числа n.
Для примера взято число 82953210
Program Pr516;
Uses Crt;
const N=8;
Label
lb1,lb2;
var A:array[1..N] of integer;
var B:array[1..9] of integer;
var i:integer;
Begin
Clrscr;
for i:=1 to N do
begin
write('A[i]=');
read(A[i]);
end;
for i:=1 to 9 do
B[i]:=i;
i:=1;
lb1:
if B[i]=A[1] then goto lb2;
i:=i+1;
if i<=9 then goto lb1;
lb2:
writeln;
writeln('A[1]=',B[i]);
End.
A[i]=8, A[i]=2, A[i]=9, A[i]=5, A[i]=3, A[i]=2, A[i]=1, A[i]=0.
Ответ: A [1]=8.
46
n
−1 k k 1
Пример 5.17. Задано натуральное число n. Вычислить выражение ∑ k!
.
k =0
n
−1 k k1 3 4 −1k k 1
∑ k!
= 1−2 − ....
2! 3! k!
...
k =0
Обозначим сумму первых n членов через S. Общий член ряда обозначим через U.
−1 k k −1 k k 1
U k −1 = ; U k= .
k −1 ! k!
Чтобы получить каждый последующий член ряда надо предыдущий умножить на один и тот
же
Program Pr 517;
Uses Crt;
var s,u:real;
const n=5;
var k:integer;
Begin
Clrscr;
s:=1;
u:=1;
for k:=1 to n do
begin
u:=u*(-(k+1)/k/k);
s:=s+u;
end;
Writeln('s=',s:8:4);
End.
S= -0.0083.
47
Пример 5.18. Заданы целые числа a 1 , a 2 . . . . a n . Вычислить сумму тех чисел
2
последовательности, которые удовлетворяют условию ∣a i∣i .
Заданные числа составляют массив A(N) . N может принимать любое значение.
В этой программе N=6.
Program Pr518;
Uses Crt;
const N=6;
Label
lb1;
var A:array[1..N] of integer;
var S,i:integer;
Begin
Clrscr;
for i:=1 to N do
begin
write('A[i]=');
read(A[i]);
end;
i:=1; S:=0;
lb1:
if abs(A[i])<i*i then
S:=S+A[i];
i:=i+1;
if i<= N then goto lb1;
writeln;
writeln(' S=',S);
End.
A[i]=2, A[i]=5, A[i]=3, A[i]=-4 , A[i]=8, A[i]=-5.
Результат: S=2
48
Глава 6. Подпрограммы
PROCEDURE < имя > < список параметров > < блок операторов >
FUNCTION < имя > < список параметров > <имя типа > < блок
операторов >
49
Если описывается подпрограмма в виде функции, то значение результата приобретает имя
функции, и поэтому должен быть определен тип функции. Функция всегда имеет
единственное значение, которое может быть скалярного, ограниченного или ссылочного типа.
Результатом выполнения подпрограммы PROCEDURE может быть несколько значений
( напимер, таблица значений, массив).
Содержательная часть подпрограммы представляет собой блок, который содержит раздел
описания данных и раздел операторов.
Заканчивается блок процедуры или функции символом ;
Program Pr61;
Uses Crt;
var L, p, L1, L2, L3:real;
var xa, ya, xb, yb, xc, yc:real;
PROCEDURE DLN(x1, x2, y1, y2:real;var L:real);---------------------------
begin
L:=sqrt(sqr(x2-x1)+sqr(y2-y1));
end;-------------------------------------------------------------------------------
Begin
Clrscr;
writeln(' Вычисление периметра треугольника ');
xa:=2.5; xb:=-1.2;
ya:=3.0; yb:=-4.0;
50
DLN (xa, xb, ya, yb, L);
L1:=L;
xb:=-1.2; xc:=5.0;
yb:= -4.0; yc:= -2.5;
DLN (xb, xc, yb, yc, L);
L2:=L;
xa:= 2.5; xc:= 5.0;
ya:= 3.0; yc:=- 2.5;
DLN(xa, xc, ya, yc, L);
L3:=L;
p:=L1+L2+L3;
writeln(' L1=',L1:6:2,' L2=',L2:6:2,' L3=',L3:6:2);
writeln(' p=',p:7:2);
End.
Вычисление периметра треугольника
L1= 7.92 L2= 6.38 L3= 6.04
p= 20.34
Комментарий.
51
Пример 6.2. Условие задачи такое же, как и в примере 6.1. Рассмотрим другое обращение
к оператору PROCEDURE.
Program Pr62;
Uses Crt;
Var L, p, L1, L2, L3: real;
PROCEDURE DLN (x1, x2, y1, y2: real; var L: real); -------------------------
begin
L:=sqrt(sqr(x2-x1)+sqr(y2-y1));
end;
Begin ------------------------------------------------------------------------------
Clrscr;
writeln(' Периметр треугольника');
DLN (2.5, -1.2, 3.0, -4.0, L);
L1:=L;
DLN (-1.2, 5.0, -4.0, -2.5, L);
L2:=L;
DLN (2.5, 5.0, 3.0, -2.5, L);
L3:=L;
p:=L1+L2+L3;
writeln(' p=',p:7:4);
end.
Периметр треугольника
P=20.3381
Пример 6.3. Условие задачи такое как и в примере 6.1. Для определения периметра
треугольника необходимо воспользоваться подпрограммой с использованием функции.
Program Pr63;
Uses Crt;
Var p, L1, L2, L3: real;
FUNCTION DLN(x1, x2, y1, y2: real):real;-----------------------------
begin
DLN:= sqrt(sqr(x2-x1)+ sqr(y2-y1))
52
end; --------------------------------------------------------------------
begin
Clrscr;
writeln(' Периметр треугольника');
L1:=DLN(2.5, -1.2, 3.0, -4.0);
writeln(' p=',p:7:4);
end.
Периметр треугольника
P = 20,3381
Комментарий.
53
Пример 6.4. Найти радиусы описанной и вписанной в треугольник окружностей.
Стороны треугольника a, b, c . a = 3.0, b = 4.0, c = 5.0
Радиус описанной окружности определяется по формуле:
R= ;
Радиус вписанной окружности определяется по формуле:
r= ;
где S – площадь треугольника.
Площадь треугольника можно вычислить по формуле Герона:
S= ;
Program Pr64;
Uses Crt;
var a, b, c, s: real;
var Rop, Rwp: real;
PROCEDURE PLTR(x, y, z: real; VAR S:real);----------------------------------------
const
k=0.5;
var
p:real ;
r:boolean;
begin
r:=(x+y>z) and (x+z>y) and (y+z>x);
if r
then
begin
p:=k*(x+ y+ z);
S:=sqrt(p*(p-x)*(p-y)*(p-z))
54
end
else
S:=-1.0;
end; -------------------------------------------------------------------------------------
begin
Clrscr;
write('a=');
readln(a);
write('b=');
readln(b);
write('c=');
readln(c);
PLTR (a, b, c, S);
if S <=0 then writeln(' нет')
else
begin
Rop:=(a*b*c)/(4*S);
Rwp:=(2*S)/(a+b+c);
end;
writeln(' Rop=',Rop:6:2);
writeln(' Rwp=',Rwp:6:2);
readln;
end.
a= 3, b= 4, c= 5
Rop= 2.50, Rwp= 1.00
−b± b 2 −4 ac
x1,2 = Детерминант D= КРК – корень
2a
квадратный.
55
PROGRAM Pr65;
Uses Crt;
Var a,b,c:real;
Var x1,x2,D:real;
begin
D:=b*b-4*a*c;
if D<0
then
else
x1:=(-b+sqrt(D))/(2*a);
x2:=(-b-sqrt(D))/(2*a);
end;
BEGIN
Clrscr;
write('a='); readln(a);
write('b='); readln(b);
write('c='); readln(c);
KRK(a,b,c,x1,x2);
readln;
END.
Решение квадратного уравнения: a=1, b=-7, c=12. x1= 4.00, x2= 3.00
56
Решение квадратного уравнения : a=2, b=4, c=7. Действительных корней нет
Пример 6.6. Найти площадь пятиугольника ABCDE, если известны его стороны и две
диагонали. Сторонам пятиугольника и диагоналям нададим значения AB=1, BC=1.5, CD=2,
DE=3, EA=2, AC=2, AD=2.5.
Program Pr66;
Uses Crt;
Var ab, bc, cd, de, ea, ac, ad,s:real;
Var S1, S2, S3, SP: real;
Procedure PLtr (x, y, z: real; var S:real);----------------------------
const
k=0.5;
var p:real;
begin
p:=k*(x+y+z);
S:=sqrt(p*(p-x)*(p-y)*(p-z));
end;------------------------------------------------------------------
Begin
Clrscr;
write('ab='); readln(ab) ;
write('bc='); readln(bc);
write('cd='); readln(cd);
write('de='); readln(de);
write('ea='); readln(ea);
write('ac='); readln(ac) ;
write('ad='); readln(ad) ;
57
S2:=S;
PLtr(ad, de, ea, S);
S3:=S;
SP:=S1+S2+S3;
writeln( 'S1=',S1:6:3,' S2=',S2:6:3, ' S3=',S3:6:3);
writeln( 'SP=',SP:6:2);
End .
S1= 0.726 S2= 1.952 S3= 2.480 SP= 5.16
58
2. РАЗДЕЛ 2 . СБОРНИК УПРАЖНЕНИЙ ”UP”
Пример 1.
3. -3 6 +17 9 1Е3
20- sqrt(36)*sin(pi/6)
Ответ 17.
B:=-3;
C:=-2;
X:=B/A;
X:=X+0.5;
Y:=A*X*X+B*X+C;
59
В этом случае читатель должен представить, что он машина, и выполнить все указанные
действия так, как их выполняет машина, и получить результат.
A=2
B=-3
C=-2
-3/2=-1.5
X= -1.5+0.5=-1
X=-1
2*(-1)*(-1)+(-3)*(-1)-2=2+3-2=3
Y=3
Z:=X+1;
END.
60
“UP-1.2”. Какие из приведенных чисел являются вещественными константами в форме с
фиксированной точкой?
1 12.35 4 -1E5. 7 5
1 11 4 -0,5E-2 7 2.7E05
1 5B 4 SIN 7 1AB
2 E6 5 G 8 +LN
3 Л1 6 10 9 L5
1 (A+B+C)/2
2 A^ 2C
3 SIN(X+2)*2
4 2COS(A+2)-A
5 X^.Y+Z-5.1
6 (X+Y*3.2-A)B
7 X+Y/(Z*Z)
8 X*X+Y*Y=R*R
9 SQRT(A*2+B*B)
61
“UP-1.6 ”. Вычислить значение выражений:
1 SQR(EXP(3*LN(2)))
2 EXP(3*LN(2+2))+17
3 SIN(PI/6)+COS(PI/3)
4 SIN(PI/4)/COS(PI/4)-EXP(0)
5 100/SQRT(25)/SQR(2)
1 X:=X+5 5 X+2:=Y
2 Y:=7 6 K+5:=X+Y
3 WRITE(“C=”,C:6:2) 7 WRITE(“A+B”)
4 Z:=SQR(Z)+5.3*X 8 X:=X*X+A*X+B
“UP-2.2 “
2 write(a,b,c) 6 write(s,d)
62
“UP-2.3“. Какое значение получит переменная Y после выполнения следующей
программы?
Х:= 5;
A:= 2;
В:= -1;
У:= A*X+B;
А:=12;
В:=14;
А:=10;
В:=В+5;
У:=А+В;
END.
A:= 3;
B:= 4;
A:=(A+B)/2+A*2;
X:=SQRT(A+B*B-0.5);
END.
B:=6;
S:=A*B;
A:=-1;
B:=3;
S:=S+A*
63
2.4. Упражнения к главе 3 “UP-3”:
Операторы передачи управления. Программы с разветвлениями
“UP-3.1”
1 GOTO L1
4 P=3.5*X+Y/2-X*Y
6 WRITE(X,Y,Z)
7 X=A+B-C
8 GOTO L3
A:=4;
B:=2;
A:=(A+B)/2+A;
X:=A*SQR(B);
WRITE(X);
END.
A:=-3;
64
B:=-2;
A:=(B-A)*2-3;
GOTO Lb1;
Lb2:
X:=(A+B)*3;
GOTO Lb3;
Lb1:
B:=B-A;
GOTO Lb2;
Lb3:
END.
READ(X);
WRITE(Y);
END.
READ (X);
Y: = LN(X-4);
GOTO Lb3;
Lb1:
Y: = COS(X);
GOTO Lb3;
Lb2:
Y:=1-0.2*X;
65
GOTO Lb3;
Lb3:
WRITE(Y);
END.
“UP-4.1”.
1. 3.5+A*B+C[1]*A-C[2
2. 4.8+A1*B-C2/3
3. D11+SIN(X/2+4)-A3
4. B[2,3]*C-(SIN(Y)/COS(Y))/(A[1]+B[1,2])
5. I*J+K*N-A[I,J]+B[K,N]
6. AI+BK*C/SQR(X+Y)
7. F*(M[1]+M[2])/(1-SQR(M[1]*V*V)
8. A[I+J,K+2]*B[I+J]-SQR(K+3)
9. A[I*2,I+J]+B[I+3,I+K]
I: =2;
J: =I*I+1;
66
A [J]: =3.5;
K: =J+2;
A [K]: =10.3;
A [I+K]: =7;
END.
I:=1;
Lb1:
A[I]:=I*I-3*I+1;
I:=I+1;
END.
1 A[1,1] 6 C[2]
2 B[8] 7 B[3,1]
3 C[3,7] 8 A[2,1]
4 B[6] 9 C[2,5]
5 A[3,5]
A[1,1]:=3;
A[1,2]:=4;
A[2,1]:=2;
67
A[2,2]:=-1;
D:=A[1,1]*A[2,2]-A[2,1]*A[1,2];
WRITE(D);
END.
“UP-5.1”.
1. Y:=5;
2. FOR A:=1 TO 12 DO
3. BEGIN
4. Y:=Y+A;
5. A:=A+3;
6. END;
7. WRITE(Y);
последний раз?
S:=0;
FOR K:=1 TO 9 DO
BEGIN
S:=S+K;
K:=K+2;
68
END;
WRITE(S);
S:=0;
BEGIN
FOR I:=1 TO 3 DO
J:=1;
S:=S+A[I,J];
END;
.
2.7. Ответы к упражнениям ”UP ”
UP-1.1 2368
UP-1.2 12589
UP-13 3479
UP-1.4 25
UP-1.5 1379
UP-1.6 1) 64 , 2) 81 , 3) 1 , 4) 0 , 5) 5
UP-2.1 1248
UP-2.3 9
UP-2.4 29
UP-2.5 5
UP-2.6 27
69
UP_3.1 a) 18 , b) 2359
UP-3.2 28
UP-3.3 -6
UP-3.4 4
UP_3.5 1
3) 4589 4) 89
UP-4.2 579
UP-4.3 5
UP-4.5 -11
UP-5.2 25
UP-5.3 5
70
Раздел 3. Сборник лабораторных работ по Турбо Паскалю
3.1. Требования к оформлению лабораторных работ
Турбо Паскаль.
Контрольные вопросы.
71
3. Перечислить стандартные функции языка ТП.
LAB_121
2 LAB ln
_122
LAB
_131
3 LAB
_132
4 LAB_141
LAB_142
LAB_151 sin +
5 LAB_152 1 + x + ln
LAB_161
7
LAB_172 xtg +2ln
72
LAB_181
LAB_182
LA
B_191
9
LAB_192 y–
LAB_1
101
10 LAB
_1102
11 LAB_1111
LAB-1121
12 3
LAB-1122 a b 2 / c sin x cos x
13 LAB_1131
LAB_1132
LAB_1141
14 LAB_1142 x ln
LAB_1151
15 LAB_1152
73
3.3 . Лабораторная работа “LAB_2“:
«Оператора присваивания, ввода – вывода»
Цель: овладение навыками записи операторов присваивания, ввода-вывода и
использовании линейных программ.
Контрольные вопросы.
.
LAB_22 x = 2; a = 248;
2 1 b =87,2
LAB_22
2 5,87
LAB_231 x = 5; a = 23,5;
3 b =0,129; c = 350
LAB_232
74
6,31
LAB_241 x = 2,57;
4 y = 13,76
LAB_242
2,79
LAB_251 a = 1,25; b = -1,75;
x = 4,78
5
LAB_252 6,31
LAB_261 x = 2,15;
6 y = 9,78.
LAB_262 1,76
LAB_271 a = 1,9;
7 b =0,04; c = 6
LAB_272
2,56
LAB_281 m = 1,2;
8 n = -3,76
LAB_282
2,57
LAB_291 a = 0,7;
9 b = -3,1
LAB_292
3,93
LAB_2101 a = 3,2;
10 b =2; c = 0,75
LAB_2102
2,74
LAB_2111 x = 3,35; y = -0,27;
11 a = 2,1
LAB_2112
1,74
LAB_2121 x = -1,7; y = 3,2;
12
LAB_2122
75
2,64
76
3.4. Лабораторная работа “LAB-3“: Операторы передачи управления
. Программы с разветвлениями
,
Блок-схема
начало
Т = 1,27
да
нет
Вывод
конец
77
При заданном значении t вычисляется значение Х и в зависимости от полученного
значения Х, вычисляется Y по одному из аналитических выражений.
1 LAB_31 1,5
2 LAB_32 0,3
3 _33 -1,1
4 LAB_34 0,7
5 LAB_35 0,9
6 LAB_36 -3
7 LAB_37 -0,64
8 LAB_38 0,93
78
9 LAB_39 -3,59
10 LAB_310 Y= 0,85
11 LAB_311 5,74
12 LAB_312 Y= -1,75
13 LAB_313 Y= -3,75
14 LAB_314 = 3,75
15 LAB_315 Y= 1,27
79
”Массивы. Оператор цикла”
Цель работы: овладения навыками описания и формирования массива,
программирование циклических алгоритмов с помощью оператора цикла.
Контрольные вопросы
80
Вар. Шифр Функции Независимая переменная
5 y= -3,1; 2,52; 5,81; 7,5; 9,4
PROGRAM LAB_4ob1;
Uses Crt;
Const N=5;
81
var i,k:integer;
y:real;
X:array[1..n] of real;
BEGIN
Clrscr;
FOR I:=1 TO N DO
begin
write('i=');
read(X[i]);
end;
FOR K:=1 TO N DO
begin
y:=0.25*(X[k]-1.75*ln(9.8+X[k]*X[k]));
end; END.
x=-1.00 y=-1.291
x= 0.75 y=-0.835
x= 2.10 y=-0.636
x= 4.75 y=-0.334
x= 5.12 y=-0.288
82
Используя формулу q, найти первые 10
4 LAB_442 членов арифметической прогрессии и их сумму, если
; d =1,5.
Вычислить значения многочлена
P(x) + ,
5 LAB_452 записав его по схеме Горнера
при х=2,5;
83
Задание 2.
Program LAB_4ob2;
Uses Crt;
Const N=9;
var
i,k:integer;
s, sa: real ;
X:array[1..9] of real;
Label lb1
BEGIN
Clrscr;
For i:=1 to N do
begin
write('i=') ;
read(X[i]);
end;
s:=0; k:=0;
For i:=1 to n do
begin
lb1:
84
if X[i] <=0 then
begin
s:=s+X[i];
k:=k+1;
end
else
go to lb1
end;
readln;
END.
k=6 s=11.500
85
Лабораторная работа ”LAB_5”: Подпрограммы
86
Образец выполнения задания
Задача: Составить подпрограмму нахождения координат центра тяжести треугольника,
заданного своими вершинами. Используя эту подпрограмму, найти координаты центра
тяжести заданных треугольников.
1. А(-12;-3); В(12;-10); С(-6;14);
2. А(-6;-5); В(18;-12); С(0;12);
3. А(8;12); В(27;5); C(9;29).
Центр тяжести треугольника АВС лежит на пересечении его медиан. Точка М пересечения
; ;
находим координаты точки М. Это и есть искомые координаты центра тяжести треугольника.
D (-9; 5,5)
A1 A2 B1 B2 C1 C2 D1 D2 M1 M2
87
Program LAB_5ob1;
Uses Crt;
Var xa, ya, xb, yb, xc, yc, xd, yd: real;
Procedure KCT (a1, a2, b1, b2, c1, c2, d1, d2: real; Var m1, m2: real);
Begin
L: =2;
m1:= (b1+l*d1)/(1+L);
m2:= (b2+L*d2)/(1+L);
End;
begin
Clrscr;
xa:=-12; ya:=-3;
xb:=12; yb:=-10;
xc:=-6; yc:=14;
KCT( xa, ya, xb, yb, xc, yc, xd, yd, xm,ym);
writeln;
end.
88
Вар. Шифр Условие задачи
Составить подпрограмму вычисления периметра треугольника по
координатам его вершин. Используя эту подпрограмму, найти
периметры треугольников по заданным координатам вершин:
1 LAB_51
1. А(3;2), В(-2;5), C(9;4)
2. А(2;1), В(5;5), С(-4;6)
3. А(0;-3), В(9;0), С(6;-6)
Составить подпрограмму вычисления площади треугольника по
формуле Герона. Используя эту подпрограмму, найти площади
треугольников по заданным его вершинам:
2 LAB_52
1. А(3;2), В(-2;5), C(9;4)
2. А(2;1), В(5;5), С(-4;6)
3. A(0;-3), B(9;0), C(6;-6)
Составить программу вычисления периметра трапеции по
координатам её вершин. Используя эту подпрограмму, найти
периметры заданных трапеций:
3 LAB_53
1. А(-3;2), B(2;7), C(2,3), D(4;5)
2. A(-5;-4), B(8;-4), C(6;1), D(-2;1)
3. A(5;3), B(5;7), C(9;5), D(9;4)
Составить подпрограмму вычисления площади трапеции по
основаниям и высоте. Используя эту подпрограмму, найти площади
заданных трапеций:
4 LAB_54
1. a=6,5 b=3,4 h=2,5
2. a=13,4 b=8,3 h=5,7
3. a=15,5 b=8,4 h=6,5
Составить подпрограмму вычисления площади ромба по
координатам его вершин. Используя подпрограмму, найти площади
ромбов:
5 LAB_55
1. А(2;8), В(8;4), С(14;8), D(8;12)
2. A(5;6), B(11;2), C(17;6), D(11;10)
3. A(0;11), B(6;7), C(12;11), D(6;15)
Составить подпрограмму вычисления угла между сторонами ромба.
Используя эту подпрограмму, найти углы между сторонами
заданных ромбов:
6 LAB_56
1. А(2;8), В(8;4), С(14;8), D(8;12)
2. A(5;6), B(11;2), C(17;6), D(11;10)
3. A(0;11), B(6;7), C(12;11), D(6;15)
Составить подпрограмму вычисления площади параллелограмма по
координатам его вершин (используя формулу Герона). Используя
эту подпрограмму, найти площади заданных параллелограммов:
7 LAB_57
1. А(0;4), В(2;9), С(8;3), D(6;-2)
2. A(2;7), B(4;12), C(10;6), D(8;1)
3. A(-1;2), B(1;7), C(7;1), D(5;-4)
89
Составить подпрограмму вычисления угла между диагоналями
параллелограмма по координатам его вершин. Используя эту
подпрограмму, найти углы между диагоналями заданных
8 LAB_58 параллелограммов:
1. А(0;4), В(2;9), С(8;3), D(6;-2)
2. A(2;7), B(4;12), C(10;6), D(8;1)
3. A(-1;2), B(1;7), C(7;1), D(5;-4)
2. V=10-2t; ; .
3. V=3,5+1,5t; ;
Составить подпрограмму вычисления суммы членов
геометрической прогрессии 10, 5, 2,5. Используя эту подпрограмму,
12 LAB_512
вычислить сумму n членов прогрессии, если n= 2; 5; 10.
13 LAB_513 -3 5 6
0 1 2
-5 4 -7
1 2 -11
90
Задана прямоугольная таблица чисел из 5 строк и 3 столбцов.
Составить подпрограмму для вычисления суммы элементов
столбца. Используя эту подпрограмму, вычислить сумму элементов
каждого столбца:
14 LAB_514 2 3 1
-1 2 5
0 -5 -3
3 4 7
1 2 -4
Задан треугольник своими сторонами a, b, c. Составить
подпрограмму вычисления радиуса вписанной и описанной
окружности. Используя эту подпрограмму, вычислить радиусы
вписанной и описанной окружностей заданных треугольников:
15 LAB_515
1. a= 5; b= 3,2; c= 6,4.
2. a= 4,5; b= 1,7; c= 5,1.
3. a= 15; b= 8; c= 20.
91
РАЗДЕЛ 4. ОТВЕТЫ И КОМПЬЮТЕРНЫЕ ПРОГРАММЫ
К ЛАБОРАТОРНЫМ РАБОТАМ
Lab-111 (x+y)*(x+y)*(x+y)+2*sin(x)
1
Lab-112 0.25*(x-1.75*Ln(9.8+x*x))
--------------------------------------------------------------------------------
Lab-121 (sqr(sin(x)-sqr(cos(x))/(x+y)
2
Lab-122 Ln(abs(a*a-x*x))
---------------------------------------------------------------------------------------------
Lab-131 (abs(cos(x)+abs(sin(y))/(x*x)
3
Lab-132 (abs(x)+2*cos(x))/0.5+x*x+sqr(x)+sqr(x)*sqr(x))
-----------------------------------------------------------------------------------------------
Lab-141 sqrt(abs(2*x+y))+exp(1/3*ln(2*y-x))
Lab-142 (sin(x)+cos(x))/(x*x+1)
----------------------------------------------------------------------------------------------
Lab-151 sin((x+y)/2)+sqrt(abs(x+1.2))
Lab-152 1+x+ln(abs(x))
-------------------------------------------------------------------------------------------------
Lab-161 1/(cos(x+y))+exp(1/3*ln(3.5*x))
6
Lab-162 y:=2*arctan(x)-sin(x/2)*ln(abs(x/4))
--------------------------------------------------------------------------------------------------
Lab-171 ((1+x/(1+x)))/(3*y)
7
Lab-172 x*sin(x/2)/cos(x/2)+2*ln(abs(cos(x/2)))
----------------------------------------------------------------------------------------------------
Lab-181 (sqrt(a+b))/(sin(a)+cos(b))
92
8
Lab-182 a*x*x+b*x+c
----------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Lab-191 (x+y)/(sqr(x-y))+exp(x)*ln(2)
9
Lab-192 y-x*x*x*ln(x)-1
--------------------------------------------------------------------------------------------------
Lab-1101 (exp(x)*ln(2)-sin(x))/(1+x*x)
10
Lab-1102 ј*(1/(a*a*a*a) –1/(x*x*x*x)*arctan(x/a)
---------------------------------------------------------------------------------------------------
Lab-1111 (a*x+b*y)/(a*b)
11
Lab-1112 (x*sin(x))/(x*x+5)+x*sqr(x)-2
---------------------------------------------------------------------------------------------------
Lab-1121 exp(y)*ln(x)/sqrt(x*y)+2.3
12
Lab-1122 (a+b*b)/c*exp(1/3)*ln(sin(x))+cos(x)
---------------------------------------------------------------------------------------------------
Lab-1131 xx*y*y/2+3*x*abs(y)
13
Lab-1132 exp(1/3)*ln(x*x+a)-exp(1/3)*ln(x-a)-sqrt(a+x)
----------------------------------------------------------------------------------------------------
Lab-1141 sin(x)*cos(y)/(x+y)
14
Lab-1142 x*ln(abs(sin(pi*s/x))
----------------------------------------------------------------------------------------------------
Lab-1151 (ln(x*x+y*y))/sin(y)
15
Lab-1152 (13.5*exp(7)*ln(x)+9.5)/(5*(x*x-x+1))-
-5*sqr(x)*sqr(x)
----------------------------------------------------------------------------------------------------
Program Lab_211;
Uses Crt;
var
93
x1,x2,y:real;
Begin
ClrScr;
x1:=0.62;
x2:=0.98;
y:=(0.5*x1-0.13*x2)/(0.15*x1*x1+0.37*x2+0.75);
writeln (‘y=’, y:8:3)
End. Y = 0.1560
Program Lab_212;
Uses Crt;
var
x1,x2,z1,z2,z:real;
Begin
ClrScr;
x1:=1.75;
x2:=5.72;
z1:=x1*sqr(cos(x1));
z2:=sqrt(2-sqr(sin(x2)));
z:=z1+z2;
write( ‘ z=’,z:7:4);
End. Z=1.3652
Program Lab_221;
Uses Crt;
Var a, b, x, y: real;
Begin
ClrScr;
x:=2;
a:=248;
b:=87.2;
y:=(a+b/3+x*a)/(x*a+b);
Writeln(‘y=’,y:8:5)
End. Y = 1.32556
94
Program Lab_222;
Uses Crt;
Var x1,x2,z1,z2,z:real;
Begin
ClrScr;
x1:=2.59;
x2:=5.87;
z1:=2*sin(2*x1);
z2:=sqrt(x2*x2+5);
z:=z1+z2;
writeln(‘z1=’,z1:7:4);
writeln(‘z2=’,z2:7:4);
writeln(‘z=’,z:7:4)
End. Z=4.4962
Program Lab_231;
Uses CRT;
Var x, a, b, c, y: real;
Begin
Clrscr
x:=5;
a:=23.5;
b:=0.189;
c:=350;
y:=((a*x*x+b)*c)/(b+a);
Write(‘ y=’,y:8:4);
End. Y = 8682.982
Program Lab_232;
Uses Crt;
Var x1, x2, z1, z2, z: real;
Begin
Clrscr;
x1:=0.37;
x2:=6.31;
z1:=exp(-x1*x1+1);
95
z2:=ln(abs(sin(x2)));
z:=z1+z2;
writeln(‘z1=’,z1:10:3);
writeln(‘z2=’,z2:10:3);
writeln(‘z=’,z:10:3);
End. z1= 2.370 z2= -3.619 z= -1.248
Program Lab_241;
Uses Crt;
Var x, y, z: real;
BEGIN
ClrScr;
x:=2.57;
y:=13.76;
z:=(x*x*y+0.15*y*y)/(1.37*x-y/0.37);
writeln(‘z=’,z:10:3);
End. z=-3.543
Program Lab_242;
Uses Crt;
Var x1,x2,z1,z2,z:real;
Begin
x1:=-6.23;
x2:=2.79;
z1:=sqrt(1+cos(x1)*cos(x1)); z2:=sin(ln(abs(x2))); z:=z1+z2;
Writeln(‘z1=’,z1:7:3,’ z2=’,z2:7:3 );
Writeln(‘ z=’,z:8:3);
End.
z1= 1.4132 z2= 0.8553
z= 2.2685
96
Program Lab_251;
Uses Crt;
var a,b,x,y:real;
Begin
ClrScr;
a:=1.25; b:=-1.75; x:=4.78;
y:=(a*x*x+b*x)/((sqr(x)*x)+0.78*x);
Writeln(‘y=’,y:8:4);
End. y= 0.1788
Program Lab_252;
Uses Crt;
Var x1,x2,z1,z2,z:real;
Begin
ClrScr;
x1:=0.85;
x2:=2.36;
z1:=ln(abs(sin(x1)));
z2:=exp(x2-2);
z:=z1+z2;
Writeln (‘ z1=’,z1:8:4);
Writeln (‘ z2=’,z2:8:4);
Writeln(‘ z=’,z:8:4)
end. z1= -0.2860 z2= 1.4333 z= 1.1474
Program Lab_261;
Uses Crt;
Var x, y, z: real;
Begin
ClrScr;
x:=2.15;
y:=9.78;
z:=(x*x+x*y-4.75)/(x*x*x*y-0.136*y);
Writeln(‘ z=’,z:8:4)
End.
z= 0.2180
97
Program Lab_262;
Uses Crt;
Var x1,x2,z1,z2,z:real;
Begin
ClrScr;
x1:=0.21;
x2:=1.76;
z1:=exp(sqrt(x1*x1+3));
z2:=cos(x2*x2);
z:=z1+z2;
Writeln (‘ z1=’,z1:8:4);
writeln(‘ z2=’,z2:8:4);
writeln(‘ z=’,z:8:4)
End. z1= 5.7244 z2= -0.9990 z= 4.7254
Program Lab_271;
Uses Crt;
Begin Var x, a, b, c: real;
ClrScr;
a:=1.9;
b:=0.04;
c:=6;
x:=(sqr(a+b)*sqr(a+b)*c*c)/(a*a-b*b);
Writeln(‘ x=’,x:8:4)
End . x=141.3171
Program Lab_272;
Uses Crt;
Var x1,x2,z1,z2,z:real;
Begin
ClrScr;
x1:=0.74;
x2:=2.56;
98
z1:=exp(1/3*ln(x1*x1+1));
z2:=ln(abs(cos(x2)));
z:=z1+z2;
Writeln(‘ Z1=’,z1:8:4);
Writeln(‘ z2=’,z2:8:4);
Writeln(‘ z=’,z:8:4)
End. Z1= 1.1567 z2= -0.1796 z= 0.9771
Program Lab_281;
Uses Crt;
Begin
ClrScr;
Var m, n, y : real.
m:=1.2;
n:=-3.76;
y:=((m-n)*(m-n)+4*m*n)/(m*m-n*n);
Writeln(‘ Y=’,y:8:4);
End.
Y= -0.5161
Program Lab_291;
Uses Crt;
Var a, b, x: real;
Begin
Clrscr
a:=0.7;
b:=-3.1;
x:=(25*b+a-(4*a*a-0.7*b*b)/a)*b;
writeln(‘ x=’,x:9:4)
End. x= 216.9690
Program Lab_292;
Uses Crt;
Var x1, x2, z1, z2, z: real;
Begin
ClrScr;
x1:=1.59;
99
x2:=3.93;
z1:=exp(1/3*ln(x1*x1+x1));
z2:=exp(sin(x2))+2;
z:=z1+z2;
writeln (‘ z1=’,z1:8:4,’ z2=’,z2:8:4);
writeln (‘ Z=’,z:8:4);
End. z1= 1.6029 z2= 2.4920 Z= 4.0949
Program Lab_2101;
Uses Crt;
Var a, b, c, y: real;
Begin
ClrScr;
a:=3.2;
b:=2;
c:=0.75;
y:=(1/a+1/b-2*c/(a*b))*(a+b+2*c);
Writeln(‘ y=’,y:9:4);
End. y= 3.8734
Program Lab_2102;
Uses Crt;
Var x1,x2,z1,z2,z:real;
Begin
ClrScr;
x1:= 1.95;
x2:= 2.74;
z1:= sqr(sin(2*x1));
z2:= exp(1/3*ln(sqr(ln(x2))+3));
z:= z1+z2;
Writeln(‘ z1=’,z1:8:4,’ z2=’,z2:8:4);
Writeln(‘ z=’,z:8:4);
End. z1= 0.4730 z2= 1.5895 z= 2.0625
100
Program Lab_2111;
Uses Crt;
Var x, y, a, z : real;
Begin
ClrScr;
x:=3.35;
y:=-0.27;
a:=2.1;
z:=(x*y-2*x+y)/(y-x*x-y*y*a);
Writeln(‘ Z=’,z:9:4);
End.
Z= 0.6762
Program Lab_2112;
Uses Crt;
Var x1, x2, z1, z2,z:real;
Begin
ClrScr;
x1:= -0.12; x2:= 1.74;
z1:= exp(x1*x1-2);
z2:= sqrt(sqr(sin(x2))+2);
z:= z1+z2;
Writeln (‘ z1=’,z1:8:4, ‘ z2=’,z2:8:4);
Writeln (‘ z=’,z:8:4);
End. z1= 0.3293 z2= 1.7200 z= 2.0493
Program Lab_2121;
Uses Crt ;
Var x, y, z : real;
Begin
ClrScr;
x:=-1.7; y:=3.2;
z:=(x*x*y*y-0.75*x*y)/(x*x+y*y);
Writeln(‘ z=’,z:8:4);
End.
Z= 2.5646
101
Program Lab_2122;
Uses Crt;
Var x1, x2, z1, z2, z: real;
Begin
ClrScr;
x1:= -1.61; x2:=2.84;
z1:=ln(x1+3);
z2:=exp(1/3*ln(sqr(sin(x2))+5));
z:=z1+z2;
Writeln(‘ z1=’,z1:8:4,’ z2=’,z2:8:4);
Writeln(‘ z=’,z:8:4);
End. z1= 0.3293 z2= 1.7200 z= 2.0493
Program Lab_2131;
Uses Crt;
Var x, y, a, z: real;
Begin
ClrScr;
x:=-0.025;
y:=2.12;
a:=3.861;
z:=(0.82*a*x-x*x*y*y*y)/(a *a + x*x+y*y);
Writeln(‘ z=’,z:8:5)
End. z= -0.00439
Program Lab_2132;
Uses Crt;
Var x1,x2,z1,z2,z:real;
Begin
ClrScr;
x1:=2.59; x2:=1.25;
z1:= exp(3*ln(cos(x1*x1-1))); z2:=2*exp(x2+2); z:=z1+z2;
Writeln(‘ z1=’,z1:8:5,’ z2=’,z2:8:5);
Writeln(‘ z=’,z:8:5);
End. z1= 0.59090 z2=51.58068 z=52.17158
102
Program Lab_2141;
Uses Crt;
Var x, y, a, z: real;
Begin
ClrScr;
x:=0.39; y:=0.95; a:=-0.5;
z:=(0.8*x*x*x+y*y*y-a*x)/(a* x*y + a* a );
Write( ‘ z=’,z:8:5);
End. Z =16.98579
Program Lab_2142;
Uses Crt;
Var x1, x2, z1, z2, z: real;
Begin
ClrScr;
x1:=0.81; x2:=3.11;
z1:=sqr(sin(x1))+9;
z2:=sqrt(x2*x2+cos(x2));
z:=z1+z2;
Writeln(‘ z1=’,z1:6:4,’ z2=’,z2:8:4);
Writeln(‘ z=’,z:8:4);
End. z1=9.5246 z2= 2.9449 z= 12.4695
Program Lab_2151;
Uses Crt;
Var a, b, c, x, y: real;
Begin
ClrScr;
a:=9; b:=3.5;
c:=8.72; x:=-1.2;
y:=(a* x+ b* x+ c* c)/(x* x+ b* b);
Write(‘ y=’,y:8:4);
End.
Y= 4.4586
103
Program Lab_2152;
USES CRT
Begin
ClrScr
x1:=0.51; x2:=1.12;
z1:=cos(x1)+exp(2*x1);
z2:= exp(1/3*ln(abs(sin (2*x2)))); z:=z1+z2;
Writeln(‘ z1=’,z1:8:4,’ z2=’,z2:8:4);
Write (‘ z=’,z:8:4)
End. z1= 3.6459 z2= 0.9222 z= 4.5682
Program LAB_31;
Uses Crt;
var x, y, t: real;
Begin
Clrscr;
t:=1.5;
x:=1.2*t*t+t+3;
If x<=3.7 then
y:= ln(x+3)
Else
y: = sqrt (sqr(sin(x))+5);
Writeln( ‘ x=’,x:6:3,’ ‘,’ y=’,y:6:3);
End.
x= 7.200 y=2.3727
Program LAB_32;
Uses Crt;
var x, y, t: real;
begin
104
Clrscr;
t:=0.3;
x:=t*t*t-2.4*t;
If x<=0.5 then
y:= EXP(x*x-2)
Else y:= sqrt (sqr(cos(x))+1.7);
Writeln(‘ x=’,x:6:3,’ y=’,y:6:3)
End.
x=-0.693 y= 0.219
Program LAB_33;
Uses Crt;
var x, y, t: real;
begin
Clrscr;
t:=-1.1;
x:= sqrt (abs(t+3));
if x>1.4 then
y:= x+ x* x* cos(x)
else
y:= x* x+ x* sin(x) ;
writeln(‘ x=’,x:6:3,’ y=’,y:6:3);
end.
x=1.378 y= 3.2530
Program LAB_34;
Uses Crt;
var x, y, t : real;
begin
Clrscr;
t:=0.7;
x:=t*t+1.3*t+1;
if x<=2.3 then
y:= sqr (sin(x))
105
else
y:= EXP (1/3*ln((sqr(ln(x))+3)));
writeln(‘ x=’,x:6:3,’ y=’,y:6:3);
end.
x = 2.400 y = 1.5559
Program LAB_35;
Uses Crt;
var x, y, t : real;
begin
Clrscr;
t:=0.9;
x:= t /(t*t+t+1);
if X<=1.5 then
y:= EXP(1/3*ln(x*x+2))
else y:= EXP(sin(x));
writeln(‘ x=’,x:6:3,’ y=’,y:6:3);
end. x= 0.3321 y= 1.2827
Program LAB_36;
Uses Crt;
var x, y, t : real;
begin
Clrscr;
t:=-3.0;
x:=(t*t+1)/(0.7*t+1);
if x<=2.1 then
y:= EXP(cos(x)+3)
else
y: = sqr(ln(abs(2*x)));
writeln(‘ x=’,x:6:3,’ y=’,y:6:3);
end.
x = -9.0909 y= 7.8085
106
Program LAB_37;
Uses Crt;
var x, y, t : real;
begin
Clrscr;
t:=-0.64;
x:= t /sqr(t+1);
if x<=0 then
y:= EXP((1/3)*ln(x*x+2.5))
else
y:= cos (x*x);
writeln(‘ x=’,x:6:3,’ y=’,y:6:3);
end.
x=-4.9383 y= 2.9958
Program LAB_38;
Uses Crt;
var x, y, t : real;
begin
Clrscr;
t:=0.93;
x:= t* t* t /(1+t);
if x<=3.5 then
y:= x*sqr(cos(x))
else
y:= sqrt (2-sqr(x));
writeln(‘ x=’,x:6:3,’ y=’,y:6:3);]
end.
x= 0.4168 y= 0.3485
107
Program LAB_39;
Uses Crt;
var x, y, t : real;
begin
Clrscr;
t:=-3.59;
x:=2+EXP((1/3)*ln(abs(t+1.5)));
if x<=4 then
y:=2*sin(2*x)
else
Program LAB_310;
Uses Crt;
var x, y, t : real;
begin
Clrscr:
t:=0.85;
x:= t* t /(t*t*t+1);
if x<=2 then
y:= ln(abs(sin(x)))
else
y:= EXP (x-2);
writeln(‘ x=’,x:6:3,’ y=’,y:6:3);
end.
x= 0.44761 y= -0.83745
108
Program LAB_311;
Uses Crt;
var x, y, real;
begin
Clrscr;
t:=5.74;
x:=(2*t+4)/(t*t+1);
if x<=-1 then
y:= EXP (sqrt(x*x+3))
else y:= EXP ((1/3)*ln(abs(x-3.5)));
writeln(‘ x=’,x:6:3,’ y=’,y:6:3);
end.
x= 0.45600 y= 1.44927
Program LAB_312;
Uses Crt;
var x, y, t : real;
begin
ClrScr;
t:=3.75;
x:= -t + sqrt(t*t+1);
if x<=1 then
y:=(x*x+5.75)/sin(x)
else y:=1/(1+x*x);
writeln(‘ x=’,x:6:3,’ y=’,y:6:3);
end.
x= 0.1310 y= 44.1
Program LAB_313;
Uses Crt;
Var x, y, t : real;
Begin
Clrscr;
t:=-1.75;
x:=t*t+3*t+1;
109
if x>0 then
y: = sin(sqrt(abs(x)))
else
y:= EXP (x)/(x*x+3*x);
writeln(‘ x=’,x:8:5,’ y=’,y:8:5);
End.
x= -1.18750 y=-0.14170
Program LAB_314;
Uses Crt;
var x, y ,and t : real;
begin
Clrscr;
t:=3.75;
x:= t* t* t-sqrt(t*t+1);
if x<=2.3 then
y:= sqrt(1+x+x*x)
Else
y:= cos (x)/abs(x-1.3);
writeln(‘ x=’,x:6:3,’ y=’,y:6:3);
end.
x=48.85333 y= 0.00332
110
4.4. Лабораторная работа ”Lab 4”
ЗАДАНИЕ 1
Program LAB_411;
Uses Crt;
Const N=5;
Var
i, k: integer; y: real;
X: array [1..N] of real;
BEGIN
Clrscr;
For i:=1 to N DO
begin
write(‘i=’);
read(X[i]);
end;
For k:= 1 to N do
begin
Y:= (13.5*EXP(7*ln(X[k]))+9.5)/(5*(X[k]*X[k]-X[k]-1))-4*EXP(4*ln(X[k]));
writeln(‘ x=’, X [k]:6:3, ‘ Y=’,Y:7:3);
read;
end;
END.
x= 0.200 Y= -1.644
x= 1.300 Y=-42.313
x= 1.800 Y=338.008
x= 2.800 Y=656.363
x= 3.600 Y=1859.281
111
Program LAB_421;
Uses Crt;
Const N=5;
VAR
i: integer;
y: real;
X: array [1..N] of real;
BEGIN
Clrscr;
For i:=1 to N do
begin
write(‘i=’);
read(X[i]);
end;
For i:=1 to N DO
begin
y:= X [ i]* ln ( abs (sin(15/X[i])));
writeln (‘ x=’, X[i]:6:2,’ y=’,y:8:5);
end;
END.
x= 5.80 y=-3.71223
x= 5.50 y=-5.00441
x= 6.10 y=-2.81073
x= 6.50 y=-1.95228
x= 7.60 y=-0.63426
Program LAB_431;
Uses Crt;
Const N=5;
VAR
i: integer;
y, a : real;
X: array[1..N] of real;
BEGIN
112
Clrscr;
a:=1.2;
For i:=1 to N DO
begin
write(‘i=’); readln (X[i]);
end;
For i:=1 to N DO
begin
IF (X[i]-a)>0 then
y := EXP((1/3)*ln(X[i]*X[i]+a))-EXP((1/3)*ln(X[i]-a))- sqrt ( a* X[i])
ELSE
y:= EXP((1/3)*ln(X[i]*X[i]+a))-(-1)*EXP((1/3)*ln(abs(X[i]-a)))- sqrt ( a* X [i]);
writeln(‘x=’,X[i]:5:2,’ y=’,y:6:3);
end;
END.
x= 3.80 y=-1.010
x= 0.15 y= 1.661
x=15.10 y=-0.541
x=17.80 y=-0.347
x=39.20 y= 1.322
Program LAB_441;
Uses Crt;
Const N=5;
Var
I : integer;
Y , a, b, c: real;
X: array [1..N ] of real;
BEGIN
Clrscr;
a:=1.2;
b:=2.4;
c:=5.4;
For i:=1 to N DO
113
begin
write(‘i=’);
read(X[i]);
end;
For i:=1 to N DO
begin
IF sin(X[i])>0 then
y:=(a+ b* b)/(c* EXP((1/3)*ln(sin(X[i])))) + cos (X[i])
Else
y:=(a+ b* b)/(c* EXP((1/3)*(-1)*ln(abs(sin(X[i]))))) + cos (X[i]);
writeln(‘ x=’,X[i]:5:3,’ y=’,y:6:3);
end;
END.
x = 8.100 y= 1.05855
x = 2.300 y= 0.75505
Program LAB_451;
Uses Crt;
Const N=5;
Var
i: integer;
y: real;
X: array[1..N] of real;
BEGIN
Clrscr;
For i:=1 to N Do
begin
write (‘i=’);
read(X[i]);
end;
For i:=1 to N do
begin
y:=(X[i]*sin(X[i]))/(X[i]*X[i]+5)+X[i]*X[i]*X[i]-2;
114
writeln(‘ x=’,X[i]:6:2,’ y=’,y:7:3); end;
End.
x= -3.10 y= -31.7822
x= 2.52 y= 14.1323
x= 5.81 y= 194.0546
x= 7.50 y= 419.9899
x= 9.40 y= 828.5865
Program LAB_461;
Uses Crt;
Const N=5;
Var
a, y: real;
i: integer;
X: array[1..N] of real;
BEGIN
Clrscr;
For i:=1 to N DO
begin
write(‘i=’); read(X[i]);
end; a:=1.2;
For i:=1 to N do
begin
y:=(1/(sqr(a)*sqr(a))-1/(sqr(X[i])*sqr(X[i])))*arctan(X[i]/a);
writeln (‘ x=’,X[i]:5:2,’ y=’,y:7:3);
end;
END.
x= 1.00 y=-0.35970
x= 1.10 y=-0.14895
x= 1.15 y=-0.06839
x= 1.30 y= 0.10905
x= 1.60 y= 0.30570
115
Program LAB_471;
Uses Crt;
Const N=5;
var
i : integer;
y : real;
X: array[1..N] of real;
BEGIN
Clrscr;
For i:=1 to N DO
begin
write(‘i=’);
read(X[i]);
end;
For i:=1 to N do
begin
Y:=X[i]*X[i]*X[i]*ln(X[i])-1;
writeln(‘ x=’,X[i]:5:2,’ y=’,y:7:3);
end;
END.
x= 1.00 y= -1.00000
x= 1.80 y= 2.42797
x= 2.20 y= 7.39549
x= 2.50 y= 13.31704
x= 7.50 y=849.03721
116
Program LAB_481;
Uses Crt;
Const N=5;
VAR
i: integer;
y, a, b, c: real;
X: array[1..N] of real;
BEGIN
Clrscr;
For i:=1 to N DO
begin
write(‘i=’); read(X[i]);
end;
a:=1.2; b:=2.4; c:=5.4;
For i:=1 to N DO
begin
y:= a* X [i]*X[i]+ b* X [i]+c;
writeln(‘ x=’, x[i]:5:2,’ y=’,y:6:3);
end;
END.
x= 1.10 y= 9.492
x= 3.00 y=23.400
x= 2.50 y=18.900
x= 8.00 y=101.400
x=70.00 y=6053.400
117
Program LAB_491;
Uses Crt;
Const N=5;
Var
i: integer;
y: real;
X: array [1..N] of real;
BEGIN
For i:=1to N DO
begin
write(‘i=’); read(X[i]);
end;
For i:=1 to N do
begin
y:= X[i]* sin(X[i]/2)/cos(X[i]/2)+2*ln(abs(cos(X[i]/2)));
writeln(‘ x=’,X[i]:5:2,’ y=’,y:6:3);
end;
END.
x= 0.50 y= 0.065
x= 0.60 y= 0.094
x= 0.90 y= 0.225
x= 1.10 y= 0.355
x= 1.50 y= 0.773
118
Program LAB_4101;
Uses Crt;
Const N=5;
VAR
I : integer;
y : real;
X: array[1..N] Of real;
BEGIN
Clrscr;
For i:=1 to N DO
begin
write(‘i=’);
read(X[i]);
end;
For i:=1 to N DO
begin
y:=2*arctan(X[i])-sin(X[i]/2)*ln(abs(X[i]/4));
writeln(‘ x=’,X[i]:5:2,’ y=’,y:6:3);
end;
END.
x= 2.15 y= 2.817
x= 2.30 y= 2.826
x= 2.35 y= 2.828
x= 2.37 y= 2.828
x= 2.50 y= 2.827
119
Program LAB_4111;
Uses Crt;
Const N=5;
VAR
i:integer;
y:real;
X:array[1..N] of real;
BEGIN
Clrscr;
For i:=1 to N DO
begin
write(‘i=’);
read(X[i]);
end;
For i:=1 to N do
begin
y:=1+X[i]+ln(abs(X[i]));
writeln(‘ x=‘,X[i]:5:2,’ y=’,y:6:3);
end;
END.
x=-16.00 y=-12.227
x=-9.00 y=-5.803
x= 0.50 y= 0.807
x= 2.40 y= 4.275
x= 3.40 y= 5.624
120
Program LAB_4121;
Uses Crt;
Const N=5;
Var
a,y:real;
i:integer;
X:array[1..N] of real;
BEGIN
Clrscr;
For i:=1 to N DO
begin
write(‘i=’); read(X[i]);
end; a:=1.2;
For i:=1 to N do
begin
y:=ln(abs(a*a-X[i]*X[i]));
Write (‘ x=‘, X [i]: 5:2,’ y=’, y: 6:3);
end;
END.
x=-2.75 y= 1.812
x=-1.05 y=-1.086
x= 1.65 y= 0.249
x= 3.25 y= 2.211
121
Program LAB_4131;
Uses Crt;
Const N=5;
VAR
i:integer;
y:real;
X: array [1..N] of real;
BEGIN
For i:=1 to N DO
begin
write(‘i=’);
read(X[i]);
end;
For i:=1 to N DO
begin
y:=(abs(X[i])+2*cos(X[i]))/(0.5+X[i]*X[i]+sqr(X[i])*sqr(X[i]));
writeln (‘ x=’, x[i]:5:2,’ y=’,y:6:3);
end;
END.
x= 0.00 y= 4.000
x=-3.25 y= 0.010
x= 1.23 y= 0.441
x= 5.20 y= 0.008
x= 4.60 y= 0.009
122
Program LAB_4141;
Uses Crt;
Const N=5;
VAR
i:integer;
y:real;
X:array[1..N] of real;
BEGIN
Clrscr;
For i:=1 to N DO
begin
write(‘i=’);
read(X[i]);
end;
For i:=1 to N DO
begin
y:=(sin(X[i])+cos(X[i]))/(X[i]*X[i]+1);
Writeln (‘ x=’, x[i]:5:2,’ y=’,y:6:3);
end;
END.
x=-1.50 y=-0.285
x= 0.00 y= 1.000
x= 1.20 y= 0.530
x= 3.50 y=-0.097
x= 5.00 y=-0.026
123
ЗАДАНИЕ 2
Program LAB_412;
Uses Crt;
VAR
k, s: integer;
label lb1;
BEGIN
Clrscr;
S: =0;
For k:=1 to 99 DO
begin
if k>= 10 then
begin
if Odd(k)
then s:=s+k
end
else goto lb1;
lb1:
end;
writeln (' k=', k ,' s=', s);
END.
k=45 s =2475
Program LAB_422;
Uses CRT;
VAR
k: integer;
u, s: real;
BEGIN
Clrscr;
s:=0;
For k:=1 to 10 DO
begin
124
u: =k/(1+k*k);
s:= s + u;
end;
writeln(' s=',s:8:4);
readln;
END.
S = 2.2616
Program LAB_432;
Uses CRT;
VAR a,q,s:real;
k:integer;
BEGIN
Clrscr;
a:=5.2; q:=-2.0; s:=0.0;
For k: =1 to 10 DO
begin
writeln(‘ a=’,a:6:2);
s:=s+a; a:=a*q;
end;
Writeln (‘ s=’, s: 6:2);
END.
a= 5.20
a=-10.40
a= 20.80
a=-41.60
a= 83.20
a=-166.40
a=332.80
a=-665.60
a=1331.20
a=-2662.40
s=-1773.20
125
Program LAB_442;
Uses Crt;
VAR
a,d,s:real;
k:integer;
BEGIN
Clrscr;
a:=4.6; d:=1.5;
s:=0.0;
For k: =1 to 10 DO
begin
writeln(‘ A=’,a:6:2);
s:=s+a;
a:=a+d;
end;
Writeln (‘ s=’, s: 6:2);
END.
A= 4.60
A= 6.10
A= 7.60
A= 9.10
A= 10.60
A= 12.10
A= 13.60
A= 15.10
A= 16.60
A= 18.10
S=113.50
126
Program LAB_452;
Uses Crt;
Const N=7;
var
i:integer;
a0,a1,a2,a3:real;
a4,a5:real;
p, x: real;
A:array[1..N] of real;
BEGIN
Clrscr;
For i:=N-1 downto 1 DO
begin
write('i=');
read(A[i]);
end;
write('x=');
read(x);
p:=a[N-1];
For i:=N-2 downto 1 do
begin
p:=p*x+a[i];
end;
writeln(' p=',p:8:3);
END.
i=2
i=-1.7
i=2.7
i=0.8
i=-3
i=1.5
x=2.5
p= 170.094
127
Program LAB_462;
Uses CRT;
Var
k,i:integer;
a,b,y,h,x:real;
BEGIN
Clrscr;
a:=-3.0; b:=1.0; h:=0.5;
x:=a;
For i:=1 to 9 do
begin
y:=4*x*x*x-2*x*x+5;
x:=x+h;
writeln(‘ x=’,x:5:2,’ y=’,y:6:3);
end;
END.
x=-3.00 y=-121.00
x=-2.50 y=-70.00
x=-2.00 y=-35.00
x=-1.50 y=-13.00
x=-1.00 y= -1.00
x=-0.50 y= 4.00
Program LAB_472;
Uses Crt;
Const N=10;
Var
X:array[1..N] of real;
k,i:integer;
s: real;
BEGIN
Clrscr;
s:=0;
128
For i:=1 to N do
begin
write(‘i=’);
read(X[i]);
end;
k:=1;
For i:=1 to N do
begin
if X[i]<0
then
begin
s:= s+ X [i];
k:=k+1
end;
end;
writeln (‘ k=’, k,’ s=’,s:6:2);
END.
k=5 s=-29.10
Program LAB_482;
Uses Crt;
Const N=6;
VAR
i:integer;
s : real;
A:array[1..6] of real;
B: array [1..6] Of real;
Begin
Clrscr;
for i:=1 to N do
begin
write(‘i=’);
read(A[i]);
129
write(‘i=’);
read(B[i]);
end;
s:=0;
For i:=1 to N do
begin
S: = S+ A [i]*B [i];
end;
Writeln(‘ s=’,s:6:2);
End.
s= 0.27
Program LAB_492;
Uses Crt;
Const N=5;
VAR
k:integer;
x,s,u:real;
BEGIN
Clrscr;
x:=3.2;
s:=0;
For k:=1 to N do
begin
s:=s+(EXP(2*k*ln(x)))/k/k;
writeln(‘ k=’,k,’ s=’,s:6:2);
end;
End.
k =1 s= 10.240
k=2 s= 36.454
k=3 s= 155.759
k=4 s= 842.954
k=5 s= 5346.553
130
Program LAB_4102;
Uses Crt;
Const N=6;
VAR
k,i:integer;
A: array [1..N] of real;
B: array [1..N] of real;
C: array [1..N] of real;
BEGIN
Clrscr;
For k:=1 to N DO
begin
write(‘k=’);
read(A[k]);
end;
For i:=1 to N DO
begin
write(‘i=’);
read(B[i]);
end;
For k: =1 to N do
begin
C[k]:=A[k]+B[k]*B[k];
writeln(‘ C[‘ , k,’]=’,C[k]:8:3);
end;
END.
C(1)= 16.000
C(2)= 9.540
C(3)= 58.300
C(4)= 83.790
C(5)= 1.750
C(6)= 28.440
131
Program LAB_4112;
Uses Crt;
Const N=11;
VAR
i: integer;
A: array [1..N] of real;
c: real;
BEGIN
Clrscr;
For i:=1 to N do
begin
write(‘i=’);
read(A[i]);
end;
For i:=1 to N do
begin
if odd(i)
Then
begin
if A[i]<0
then
begin
C:=A[i];
writeln(‘ c=’,c:6:2);
end;
end;
end;
END.
C=-3
132
Program LAB_4122;
Uses Crt;
Const N=6;
Var
i:integer;
y:real;
X:array[1..N] of real;
BEGIN
Clrscr;
For i: =1 to N do
begin
write(‘i=’);
read(X[i]);
end;
For i:=1 to N do
begin; y:=(3.285*X[i]*X[i]*X[i])/(5-EXP((1/3)*ln(X[i])));
writeln(‘ x=’,X[i]:6:3,’ y=’,y:8:3);
end;
END.
x= 1.000 y= 0.821
x= 1.200 y= 1.442
x= 1.400 y= 2.322
x= 1.600 y= 3.513
x= 1.800 y= 5.064
x= 2.000 y= 7.027
133
Program LAB_4132;
Uses Crt;
Const H=0.5;
VAR
k, i:integer;
x, y: real;
BEGIN
Clrscr;
x:=-4.0;
k:=0; i:=0;
while x<=2 DO
begin
x:= x+ k* h;
y:=(sqrt(abs(x))*sin(x))/(x+ EXP (x));
if y>0 then i:=i+1;
writeln(‘ x=’,x:6:2,’ y:=’,Y:7:3);
k:=k+1;
end;
writeln(‘ i=’, i);
END.
x= -4.00 y= -0.380
x= -3.50 y= -0.189
x= -3.00 y= 0.083
x= -2.50 y= 0.391
x= -2.00 y= 0.690
x= -1.50 y= 0.957
x= -1.00 y= 1.331
x= -0.50 y= -3.182
x= 0.00 y= 0.000
x= 0.50 y= 0.158
x= 1.00 y= 0.226
x= 1.50 y= 0.204
x= 2.00 y= 0.137
134
Program LAB_4142;
Uses Crt;
Const H=0.5;
VAR
i, k: integer;
x, y, s: real;
BEGIN
Clrscr;
s:=0; i:=0;
While x<3.0 DO
begin
x:=-3.0+i*H; y:= x* cos (2*x+3);
if y<0 then
s:= s+ y;
writeln(‘ x=’,x:6:2,’ y=’, y:7:3);
i:=i+1;
end;
writeln(‘ s=’,s:8:3);
END.
x= -3.00 y= 2.970
x= -2.50 y= 1.040
x= -2.00 y= -1.081
x= -1.50 y= -1.500
x= -1.00 y= -0.540
x= -0.50 y= 0.208
x= 0.00 y= 0.000
x= 0.50 y= -0.327
x= 1.00 y= 0.284
x= 1.50 y= 1.440
x= 2.00 y= 1.508
x= 2.50 y= -0.364
x= 3.00 y= -2.733
s= -6.545
135
4.5. Лабораторная работа ”Lab 5”
Program LAB_51;
Uses Crt;
VAR
i:integer;
p, X1, X2, Y1, Y2, L:real;
X: array [1..3] of real; Y: array [1..3] of real;
PROCEDURE DLN ( X1, X2, Y1, Y2: real; var L: real);
begin
L:= sqrt ( sqr (X2-X1)+ sqr (Y2-Y1));
end;
BEGIN
Clrscr;
For i:=1 to 3 DO
begin
write(‘X[i]=’);
read(X[i]);
write(‘Y[i]=’);
read(Y[i]);
end;
For i:=1 to 3 DO
P:=0;
begin
if i=3 then
begin
X2:= X[i-2]; Y2:= Y[i-2];
end;
X2:=X[i+1]; X1:=X[i];
Y2:=Y[i+1]; Y1:=Y[i];
DLN(X2,X1,Y2,Y1,L);
P:=P+L;
end;
write (‘ P=’,P:7:3);
136
END.
X[i]=3
Y[i]=2
X[i]=-2
Y[i]=5
X[i]=9
Y[i]=4
L= 5.83 L= 11.05 L= 6.32 P= 23.201
PROGRAM LAB_52;
Uses Crt;
VAR
i:integer;
p,X1,X2,Y1,Y2,L,S:real;
X:array[1..3] of real;
Y:array[1..3] of real;
Lt:array[1..3] of real;
PROCEDURE DLN(X1,X2,Y1,Y2:real;var L:real);
begin
L:=sqrt(sqr(X2-X1)+sqr(Y2-Y1));
end;
label lb1;
BEGIN
Clrscr;
For i:=1 to 3 DO
begin
write(‘X[i]=’);
read(X[i]);
write(‘Y[i]=’);
read(Y[i]);
end;
p:=0;
For i:=1 to 3 DO
137
begin
if i=3 then
begin
X2:=X[i-2]; Y2:=Y[i-2];
x1:=X[i]; Y1:=Y[i];
goto lb1;
end;
X2:=X[i+1]; X1:=X[i];
Y2:=Y[i+1]; Y1:=Y[i];
lb1: DLN(X2,X1,Y2,Y1,L);
Lt[i]:=L;
end;
write (‘ L1=’,Lt[1]:6:3,’ L2=’,Lt[2]:6:3,’ L3=’,Lt[3]:6:3);
p:=0.5*(Lt[1]+Lt[2]+Lt[3]);
S:=sqrt(p*(p-Lt[1])*(p-Lt[2])*(p-Lt[3]));
writeln;
writeln(‘ S=’,S:7:3);
END.
X[i]=3
Y[i]=2
X[i]=-2
Y[i]=5
X[i]=9
Y[i]=4
L1= 5.831 L2=11.045 L3= 6.325
S= 14.000
Program LAB_53;
Uses Crt;
VAR
i:integer;
p, X1, X2, Y1, Y2, L, S: real;
X:array[1..4] of real;
Y:array[1..4] of real;
138
Lt:array[1..4] of real;
PROCEDURE DLN(X1,X2,Y1,Y2:real;var L:real);
begin
L:=sqrt(sqr(X2-X1)+sqr(Y2-Y1));
end;
label lb1;
BEGIN
Clrscr;
For i:=1 to 4 DO
begin
write(‘X[i]=’);
read(X[i]);
write(‘Y[i]=’);
read(Y[i]);
end;
p:=0;
For i:=1 to 4 DO
begin
if i=4 then
begin
X2:=X[i-2]; Y2:=Y[i-2];
x1:=X[i]; Y1:=Y[i];
goto lb1;
end;
X2:=X[i+1]; X1:=X[i];
Y2:=Y[i+1]; Y1:=Y[i];
lb1: DLN(X2,X1,Y2,Y1,L);
Lt[i]:=L;
end;
writeln (‘ L1=’,Lt[1]:6:3,’ L2=’,Lt[2]:6:3);
writeln (‘ L3=’,Lt[3]:6:3,’ L4=’,Lt[4]:6:3);
p:=Lt[1]+Lt[2]+Lt[3]+Lt[4];
writeln(‘ p=’,p:7:3);
END.
139
X[i]=-3
Y[i]=2
X[i]=2
Y[i]=7
X[i]=2
Y[i]=3
X[i]=4
Y[i]=5
L1= 7.071 L2= 4.000 L3= 2.828 L4= 7.616
p= 21.515
PROGRAM LAB_54;
Uses Crt;
Const N=3;
var i:integer;
a: array[1..N] of real;
b: array[1..N] of real;
h: array[1..N] of real;
s: array[1..N] of real;
Procedure STR(a, b, h: real ; var s: real);
begin
s:=(a+b)/2*h;
end;
BEGIN
Clrscr;
for i:=1 to N Do
begin
writeln(‘a=’,’ b=’,’ h=’);
readln(a[i],b[i],h[i]);
end;
for i:=1 to N Do
begin
STR (a[i],b[i],h[i],s[i]);
140
Writeln (‘ a=’, a[i]:6:2,’ b=’, b[i]:6:2,’ h=’, h[i]:6:2);
Writeln ( ‘ s=’, s [i]:7:3);
end;
END.
a= 6.50 b= 3.40 h= 2.50
s= 12.375
a= 13.40 b= 8.30 h= 5.70
s= 61.845
a= 15.50 b= 8.40 h= 6.50
s= 77.675
Program LAB_55;
Uses Crt;
Var
x1, x2, x3, x4: real; y1, y2, y3, y4: real;
Lac, Lbd, S: real;
Lromba: real;
FUNCTION DLN(x1,x2,y1,y2:real):real;
begin
DLN:= sqrt (sqr(x1-x2)+sqr(y1-y2));
end;
BEGIN
Clrscr;
x1:=2; y1:=8; x2:=8; y2:=4; x3:=14; y3:=8; x4:=8; y4:=12;
Lac:= DLN(x1,x3,y1,y3);
Lbd:= DLN(x2,x4,y2,y4);
Lromba:= DLN(x1,x2,y1,y2);
S:=Lac*Lbd/2;
writeln(‘ Lromba=’,Lromba:7:3,’ S=’,S:7:3);
writeln(‘Lac=’,Lac:6:2,’ Lbd=’,Lbd:6:2);
END.
Lromba = 7.211 S= 48.000
Lac = 12.00 Lbd = 8.00
141
Program LAB_56;
Uses Crt;
Var
Alfa: real;
x1, x2, x3, x4: real;
y1, y2, y3, y4: real;
Lac, Lbd, S: real;
Lromba: real;
FUNCTION DLN(x1,x2,y1,y2:real):real;
Begin
DLN:= sqrt (sqr(x1-x2)+sqr(y1-y2));
end;
BEGIN
Clrscr;
x1:=2; y1:=8; x2:=8; y2:=4; x3:=14; y3:=8; x4:=8; y4:=12;
Lac:= DLN (x1,x3,y1,y3);
Lbd:= DLN (x2,x4,y2,y4);
Lromba:= DLN (x1,x2,y1,y2);
S:=Lac*Lbd/2;
Alfa:= S/sqr(Lromba);
writeln(‘ Lromba=’,Lromba:7:3,’ S=’,S:7:3);
writeln(‘ Lac=’,Lac:6:2,’ Lbd=’,Lbd:6:2);
writeln (‘ sin( alfa )=’, Alfa:6:4);
END.
Lromba = 7.211 S = 48.000
Lac = 12.00 Lbd = 8.00
Sin (alfa)= 0.9231
142
Program LAB_57;
Uses Crt;
Var
p:real; x1, x2 ,x3, x4: real; y1, y2, y3, y4: real;
Lac,Lbc, S:real;
Lab: real;
FUNCTION DLN(x1,x2,y1,y2:real):real;
begin
DLN:= sqrt (sqr(x1-x2)+sqr(y1-y2));
end;
BEGIN
Clrscr;
x1:=0; y1:=4; x2:=2; y2:=9; x3:=8; y3:=3; x4:=6; y4:=-2;
Lab:= DLN (x1,x2,y1,y2);
Lac:= DLN (x1,x3,y1,y3);
Lbc:= DLN (x2,x3,y2,y3);
p:=( Lab + Lac + Lbc )/2;
S:= 2*sqrt(p*(p-Lab)*(p-Lac)*( p- Lbc));
writeln(‘ S=’,S:7:3);
writeln(‘ Lab=’,Lab:6:3,’ Lac=’,Lac:6:3,’ Lbc=’,Lbc:6:3);
END.
S= 42.000
Lab = 5.385 Lac = 8.062 Lbc = 8.485
Program LAB_58;
Uses Crt;
Var
Calfa: real;
x1, x2,x3, x4: real;
y1, y2, y3, y4: real;
Lac, Lbd, S: real;
Lab, Lbo, Lao : real;
FUNCTION DLN(x1,x2,y1,y2:real):real;
begin
143
DLN:= sqrt (sqr(x1-x2)+sqr(y1-y2));
end;
BEGIN
Clrscr;
x1:=0; y1:=4; x2:=2; y2:=9; x3:=8; y3:=3; x4:=6; y4:=-2;
Lac:= DLN (x1,x3,y1,y3);
Lbd:= DLN(x2,x4,y2,y4);
Lab:= DLN(x1,x2,y1,y2);
Lbo:=0.5*Lbd;
Lao:=0.5*Lac;
Calfa:=(Lao* Lao + Lbo* Lbo- Lab* Lab)/(2* Lao* Lbo);
writeln(‘ cos(Alfa)=’,Calfa:6:4);
writeln(‘ Lab=’,Lab:6:2, ‘ Lac=’,Lac:6:2,’ Lbd=’,Lbd:6:2);
END.
cos(Alfa)=0.4557
Lab = 5.39 Lac = 8.06 Lbd = 11.70
Координаты вектора C D X2 и Y2 соответственно равны:
скалярного произведения:
X1∗X2Y1∗Y2=0 .
144
координаты векторов и их скалярное произведение.
Program LAB_59;
Uses Crt;
Var
xa, xb, ya, yb, xc, xd, yc, yd: real;
pw, x1, y1, x2, y2: real;
Function Pv (x1,x2,y1,y2:real):real;
begin
x1:=xb-xa; y1:=yb-ya;
x2:=xd-xc; y2:=yd-yc;
Pv:=x1*x2+y1*y2;
end;
BEGIN
Clrscr;
xa:=2; ya:=8;
xb:=14; yb:=8;
xc:=8; yc:=4;
xd:=8; yd:=12;
pw: = Pv (x1,x2,y1,y2);
if Pw=0 then
writeln (‘ Векторы перпендикулярны’);
else
writeln (‘ Векторы не перпендикулярны);
END.
Bекторы перпендикулярны
Арифметическая прогрессия a 1 , a 2 , a 3 . . . . a n
Формула суммы членов арифметической прогрессии:
a 1 a n n 2a1 d n−1 ] n
S= или S = ,
2 2
где n - количество членов арифметической прогрессии,
145
d -разность прогрессии. d =a 2 −a 1 .
В примере арифметическая прогрессия: 2, 5, 8,…
Program LAB_510;
Uses Crt;
Var
i:integer;
N1,s,a1,a2,a3,d:real;
N:array[1..3] of real;
Procedure SPR(a1,d,N:real;var S:real);
begin
S:=(2*a1+d*(N-1))*N/2;
end;
BEGIN
Clrscr;
writeln(‘ Сумма арифметической прогрессии‘);
a1:=2; a2:=5; a3:=8; d:=a2-a1;
For i:=1 to 3 DO
begin
write(‘N(i)=’);
read(N[i]);
end;
For i:=1 to 3 Do
begin
SPR(a1,d,N[i],S);
Writeln(‘ N=’,N[i]:3:0,’ S=’,S:8:2);
end;
END.
Сумма арифметической прогрессии
N= 10 S= 155.00
N= 20 S= 610.00
N= 35 S= 1855.00
146
Необходимые формулы приведены в конце программы.
Program LAB_511;
Uses Crt;
Var
i, j: integer;
S:real;
t: array[1..3,1..2] of real;
V0: array[1..3] of real;
a: array[1..3] of real;
Procedure Sp (V0,a,t:real;var S:real);
begin
S:=V0*t+a*t*t/2 ;
end;
BEGIN
Clrscr;
For i:=1 to 3 do
begin
write(‘ V0=’);
read(V0[i]);
write(‘ a=’);
read(a[i]);
for j:=1 to 2 do
begin
write(‘t=’);
read(t[i,j]);
end;
end;
For i:=1 to 3 do
begin
for j:=1 to 2 do
begin
SP(V0[i],a[i],t[i, j],S);
147
writeln(‘ V0=’,V0[i]:4:2,’ a=’, a[i]:4:2,’ t=’, t[i, j]:4:1);
writeln(‘ S=’,S:7:2);
end;
end;
END.
Определение пути
t2
at 2
S=∫ V 0 at dt =V 0 t ,
t
2
1
1
В момент времени пройденный путь S 1 , в момент времени t 2 -пройденный путь
talignl¿¿¿ ¿
S 2 . Пройденный путь за время t 2 −t 1 будет S =S 2−S 1 .
at 2
Выражение V 0 t можно оформить как процедуру, значения которой
2
вычисляются при t 1 и t 2 .
148
Лабораторная работа LAB_512
a 1 −a n q a 1 −a 1 q n a 1 1−q n
S= = = ,
1−q 1−q 1−q
если прогрессия убывающая.
Если n меняется, то S= f n . Вычисление суммы членов прогрессии можно
оформить как функцию пользователя (процедуру) и обращаться к ней при каждом
новом значении n ( в цикле ).
Program LAB_512;
Uses Crt;
Var
i:integer;
N1,s,a1,a2,a3,q:real;
N:array[1..3] of real;
Procedure SGP(a1,d,N:real;var S:real);
begin
S:=(a1*(1-exp(N*ln(q))))/(1-q);
end;
BEGIN
Clrscr;
a1:=10;
a2:=5;
a3:=2.5;
q:=a2/a1;
For i:=1 to 3 DO
begin
write(‘N(i)=’);
read(N[i]);
end;
writeln(‘ Сумма геометрической прогрессии‘);
writeln;
149
For i:=1 to 3 Do
begin
SGP(a1,q,N[i],S);
Writeln(‘ N=’,N[i]:3:0,’ S=’,S:8:2);
end;
END.
Сумма геометрической прогрессии
N= 2 S= 15.0000
N= 5 S= 19.3750
N= 10 S= 19.9805
Program LAB_513;
Uses Crt;
Const N1=4;
Const N2=3;
Var
k,i,j:integer;
s:real;
Mas:array[1..N1,1..N2] of real;
Type
U=array[1..N2] of real;
Var Ur:U;
Procedure Smas(k, N2: integer; Ur :U; var S: real) ;
begin
s:=0;
for k:=1 to N2 do
begin
S:=S+Ur[k];
end;
end;
Begin
Clrscr;
writeln(' Введите элементы массива ');
For i:=1 to N1 do
150
for j:=1 to N2 do
begin
write(i, j, 'элемент');
end;
readln(Mas[i,j]);
For i:=1 to N1 do
begin
For k:=1 to N2 do
Begin
Ur[k]:=Mas[1,k];
SMas(k, N2, Ur, S);
writeln(' s=', s:7:3);
end;
end;
END.
Введите элементы массива
11элемент:-3
12элемент:5
13элемент:6
21элемент:0
22элемент:1
23элемент:2
31элемент:-5
32элемент:4
33элемент:-7
41элемент:1
42элемент:2
43элемент:-11
s= 8.000
s= 3.000
s= -8.000
s= -8.000
151
Program LAB_514;
Uses Crt;
Const N1=5;
Const N2=3;
Var k,i,j:integer; s:real;
Var Mas:array[1..N1,1..N2] of real;
Type
U=array[1..N2] of real;
Var Ur:U;
Procedure Smas(k, N1: integer;Ur:U; var S:real);
begin
s:=0;
for k:=1 to N1 DO
begin
S:=S+Ur[k];
end;
end;
Begin
Clrscr;
writeln(' Введите элемент массива ');
For i:=1 to N1 DO
for j:=1 to N2 DO
begin
write(i,j,элемент');
readln(Mas[i,j]);
end;
For i:=1 to N2 DO
begin
For k:=1 to N1 DO
Begin
Ur[k]:=Mas[i,k];
end;
SMas(K,N1,Ur, S);
writeln(' s=', s:7:3);
152
end
END.
Введите элементы массива
11элемент: 2
12элемент: 3
13элемент: 1
21элемент: -1
22элемент: 2
23элемент: 5
31элемент: 0
32элемент: -5
33элемент: -3
41элемент: 3
42элемент: 4
43элемент: 7
51элемент: 1
52элемент: 2
53элемент: -4
S = 5.000
S= 6.000
S=6.000
153
154
Литература
155
156
157
158