
- •Лабораторная работа №1 программирование линейных вычислительных процессов
- •Лабораторная работа №2 программирование разветвляющихся вычислительных процессов с проверкой логического условия в цикле
- •Лабораторная работа №3 Программирование циклических вычислительных структур
- •Лабораторная работа №4 программирование с использованием подпрограмм
- •Int: Real;
- •Iter: Integer;
- •Лабораторная работа №5 Обработка одномерных и двумерных массивов.
- •I, j: Integer;
- •Лабораторная работа №6 построение графических изображений
- •InitGraph (gd, gm, '');
Лабораторная работа №4 программирование с использованием подпрограмм
Задание №1. Используя подпрограмму-процедуру, составить программу для вычисления определенного интеграла, указанным в варианте численным методом. Определить число итераций, необходимых для вычисления суммы.
Исходные данные:
Определенный
интеграл
.
Метод: Трапеций.
.
.
Точность
вычислений
.
Ответ = 0.916.
Число итераций = 15.
Текст программы к заданию №1:
Program m111416;
Uses
Crt;
Const
A=2;{Trunc(3*Pi*Cos(Pi/2)/2+4 Div 2);}
B=Trunc(Sqr(2)+Sqr(3)+Sqrt(4)-10);
Eps=0.001;
Var
Int: Real;
Iter: Integer;
Function Y(X: Real): Real;
Begin
Y:=1/X;
End;
Procedure Metod_Trap(A, B: Real; Eps: Real);
Var
J: Integer;
H, Sum, I1, I2: Real;
Begin
I2:=0;
Iter:=0;
H:=(B-A)/15;
Repeat
I1:=I2;
Sum:=0;
For J:=1 To Trunc((B-A)/H)-1 Do
Begin
Sum:=Sum+Y(A+J*H);
End;
Sum:=Sum+A/2+B/2;
I2:=Sum*H;
H:=H/2;
Iter:=Iter+1;
Until Abs(I1-I2)<=Eps;
Int:=I2;
End;
Begin
ClrScr;
WriteLN('A=', A);
WriteLN('B=', B);
Metod_Trap(A, B, Eps);
WriteLN('Ответ: I=', Int:5:3);
WriteLN('Количество итераций:', Iter);
readln
End.
Результаты работы программы к заданию №1:
A=2
B=5
Ответ: I=0.917
Количество итераций:11
Задание №2. С помощью подпрограммы-функции составить программу для вычисления корня алгебраического уравнения численным методом, указанным в варианте. Определить число итераций, необходимых для вычисления корня.
Исходные данные:
Уравнение
.
Метод: Хорд.
Интервал
=
.
Точность вычислений .
Ответ = 1,1442.
Число итераций = 100.
Текст программы к заданию №2:
Program m111426;
Uses
Crt;
Var
X: Real;
Iter: Integer;
Const
A = 0.0;
B = 10.0;
Eps= 1E-4;
Function Y(X: Real): Real;
Begin
Y:=x*x*x+4.1*x-6.2;
End;
Function Y2(X: Real): Real;
Begin
Y2:=6*x;
End;
Procedure Metod_Hord (A, B: Real; Eps: Real);
Var
C, X0, X1: Real;
Begin
If Y(A)*Y2(A)>0 then
Begin
C:=A;
X1:=B;
End
Else
Begin
C:=B;
X1:=A;
End;
Repeat
X0:=X1;
X1:=(C*Y(x0)-X0*Y(C))/(Y(X0)-Y(C));
iter:=iter+1;
Until Abs(X0-X1)<=Eps;
X:=X1;
End;
Begin
ClrScr;
WriteLn('A=',A:4:1);
WriteLn('B=',B:4:1);
Metod_Hord(A, B, Eps);
WriteLn('Ответ I=', X:7:4);
WriteLn('Количество итераций: i=', Iter);
End.
Результаты работы программы к заданию №2:
A= 0.0
B=10.0
Ответ I= 1.1442
Ко-во итераций: i=100
Лабораторная работа №5 Обработка одномерных и двумерных массивов.
Задание №1. В матрице А размерности 5х5 найти сумму элементов главной диагонали:
Исходные данные:
.
Текст программы к заданию №1:
Program m111516;
Uses
Crt;
Const
N=5;
A: Array [1..N, 1..N] OF Real = (( 1, 0.2, 56, 4 , 7),
( 0, 5 , 1, 0.567, 45),
(23, 12.1, 9, 9.09 , 2),
( 0, 0 , 3, 6 , 123),
( 0, 3 , 5, 7 , 8));
Var
I, J: Integer;
Sum: Real;
Begin
ClrScr;
For I:=1 To N Do
Begin
For J:=1 To N Do
Write (A[I, J]:6:2, ' ');
WriteLn;
End;
Sum:=0;
For I:=1 To N Do
Sum:=Sum+A[I,I];
WriteLn('Сумма элементов главной диагонали матрицы=', sum:6:2);
End.
End.
Результаты работы программы к заданию №1:
1.00 0.20 56.00 4.00 7.00
0.00 5.00 1.00 0.57 45.00
23.00 12.10 9.00 9.09 2.00
0.00 0.00 3.00 6.00 123.00
0.00 3.00 5.00 7.00 8.00
Сумма элементов главной диагонали матрицы=29.0
Задание №2.Сформировать матрицы. А, В, С:
Исходные данные:
Выполнить
.
Текст программы к заданию №2:
Program m111526;
Uses
Crt;
Var
I, J, K, P, Sum: Integer;
A, B, C, D, E: Array [1..5,1..5] of Integer;
Begin
ClrScr;
WriteLN ('Матрица A:');
For I:=1 To 4 Do
Begin
For j:=1 to 5 do
Begin
If I=2 Then
A[I,J]:=J
Else
A[I,J]:=0;
Write (A[I,J]:4);
End;
WriteLN;
End;
WriteLN ('Матрица B:');
For I:=1 To 5 Do
Begin
For J:=1 To 5 Do
Begin
If J=2 Then
B[I,J]:=5
Else
B[I,J]:=I*J;
Write (B[I,J]:4);
End;
WriteLN
End;
WriteLN ('Матрица C:');
For I:=1 To 5 Do
Begin
For J:=1 To 5 Do
Begin
If I=5 Then
C[I,J]:=3*J
Else
C[I,J]:=2;
Write (C[I,J]:4);
End;
WriteLN
End;
For I:=1 To 5 Do
For J:=I+1 To 5 Do
Begin
P:=A[I,J];
A[I,J]:=A[J,I];
A[J,I]:=P;
End;
WriteLN('Матрица A^T:');
For I:=1 To 5 Do
Begin
For J:=1 To 5 Do
Write (A[I,J]:4);
WriteLN;
End;
WriteLN('Матрица D=A^T*B:');
For I:=1 To 5 Do
Begin
For J:=1 To 5 Do
Begin
Sum:=0;
For K:=1 To 5 Do
Sum:=Sum+A[I,K]*B[K,J];
D[I,J]:=Sum;
Write (D[I,J]:4);
End;
WriteLN;
End;
WriteLN('Матрица A^T*B+3*C:');
For I:=1 To 5 Do
Begin
For J:=1 To 5 Do
Begin
E[I,J]:=D[I,J]+3*C[I,J];
Write (E[I,J]:4);
End;
WriteLN;
End;
End.
Результаты работы программы к заданию №2:
Матрица C:
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
3 6 9 12 15
Матрица A^T:
0 1 0 0 0
0 2 0 0 0
0 3 0 0 0
0 4 0 0 0
0 5 0 0 0
Матрица D=A^T*B:
2 5 6 8 10
4 10 12 16 20
6 15 18 24 30
8 20 24 32 40
10 25 30 40 50
Матрица A^T*B+3*C:
8 11 12 14 16
10 16 18 22 26
12 21 24 30 36
14 26 30 38 46
19 43 57 76 95
Задание №3. Найти сумму нечетных элементов данного вектора.
Исходные данные:
Текст программы к заданию №3:
Program m111536;
Uses
Crt;
Const
N=10;
A: array[1..N] of Integer=(10, -17, -3, 5, -10, -5, 7, 10, 6, 1);
Var
Sum, I:Integer;
Begin
ClrScr;
WriteLN('Вектор А:');
For I:=1 To N Do
Write (A[I]:4);
Sum:=0;
For I:=1 To N div 2 Do
Sum:=Sum+A[2*I-1];
WriteLN;
WriteLN('Сумма нечет. эл-ов вектора А=', Sum:5);
End.
Результаты работы программы к заданию №3:
Вектор A:
10 -17 -3 5 -10 -5 7 10 6 1
сумма нечет. эл-ов вектора A= 10
Задание №4. В матрице размерностью 5×5 найти среднее арифметическое элементов второстепенной диагонали.
Исходные данные:
Текст программы к заданию №4:
Program m111546;
Uses
Crt;
Const
N=5;
A: Array[1..N,1..N] of Real=(( 1, 0.2, 56, 4 , 7),
( 0, 5 , 1, 0.567, 45),
(23, 12.1, 9, 9.09 , 2),
( 0, 0 , 3, 6 , 123),
( 0, 3 , 5, 7 , 8));
Var