Информатика. Практикум
.pdf
1 |
Начало |
|
2 Создание |
|
|
|
файлов |
|
|
a.lst,b.lst, |
|
|
c.lst |
|
3 |
A |
|
|
|
|
|
I=1,3 |
|
4 |
B |
|
|
|
|
|
J=1,2 |
|
5 |
|
|
|
A[I,J]=cos2 |
|
|
(IJ) ln2(IJ) |
|
6 |
Вывод |
|
|
в файл |
|
|
a.lst |
|
|
A[I,J] |
|
нет 7 |
A[I,J]>0 |
да |
|
8 |
|
|
|
|
|
|
Вывод |
|
|
в файл |
|
|
с.lst |
|
|
A[I,J] |
9 |
|
|
|
B |
|
10 |
|
|
|
A |
|
|
1 |
|
|
1 |
|
|
11 |
C |
|
|
|
|
|
|
|
I=1,5 |
|
|
12 |
D |
|
|
|
|
|
|
|
J=1,4 |
|
|
13 |
B[I,J] |
|
|
|
|
|
|
|
3sinIcosJ |
|
|
14 |
Вывод |
|
|
|
в файл |
|
|
|
b.lst |
|
|
|
B[I,J] |
|
|
15 |
|
да |
|
нет |
B[I,J]>0 |
||
|
16 |
Вывод |
|
|
|
|
в файл |
|
|
|
с.lst |
|
|
|
B[I,J] |
17 |
|
|
|
|
D |
|
|
18 |
|
|
|
|
C |
|
|
19 |
|
|
|
|
Закрытие |
|
|
|
файлов |
|
|
20 |
Конец |
|
|
|
|
|
|
Рис. 2.12
91
Обозначения схемы алгоритма
A[I, J] – aij элемент матрицы А;
B[I, J] – bij элемент матрицы B.
Программа
Program Task2_12;
Uses Crt;
Var
F1, F2, F3 : Text;
I, J : Integer;
A : Array [1..3, 1..2] of Real;
B : Array [1..5, 1..4] of Real;
Begin |
{начало раздела операторов программы} |
ClrScr; |
{очистка экрана} |
{создание и открытие файлов}
Assign(F1,'a.lst');Assign(F2,'b.lst');Assign(F3,'c.lst'); Rewrite(F1); Rewrite(F2); Rewrite(F3);
{формирование матрицы A} for I:=1 to 3 do
Begin |
{начало цикла 1} |
for J:=1 to 2 do |
|
Begin |
{начало цикла 2} |
{вычисление A[I,J]}
A[I, J] := Cos(I*J)*Cos(I*J) * Ln(I*J)*Ln(I*J);
{запись элемента A[I, J] в файл a.lst}
Write(F1, A[I, J]:7:3, ' ');
{запись положит. элемента А[I, J] в файл c.lst}
If A[I, J] > 0 Then Write(F3, A[I, J]:7:3, ' ');
end; |
{конец цикла 2} |
Writeln(F1); |
{переход на след. строку в файле a.lst} |
end; |
{конец цикла 1} |
{формирование матрицы B} |
|
for I:=1 to 5 do |
|
Begin |
{начало цикла 3} |
for J:=1 to 4 do |
|
Begin |
{начало цикла 4} |
B[I, J]:= 3*Sin(I)*Cos(J);{вычисление B[I, J]}
{запись элемента B[I, J] в файл b.lst}
Write(F2, B[I, J]:7:3, ' ');
{запись положит. элемента B[I, J] в файл c.lst}
If B[I, J] > 0 Then Write(F3, B[I, J]:7:3, ' ');
end; |
{конец цикла 4} |
Writeln(F2); |
{переход на след. строку в файле b.lst} |
92
end; |
{конец цикла 3} |
Close(F1); Close(F2); Close(F3);{закрытие файлов} |
|
End. |
{конец программы} |
|
Результат работы программы |
|
|
||
|
Файл а.lst: |
|
Файл b.lst: |
|
|
0.000 |
0.083 |
1.364 |
-1.051 |
-2.499 |
-1.650 |
0.083 |
0.821 |
1.474 |
-1.135 |
-2.701 |
-1.783 |
1.183 |
2.960 |
0.229 |
-0.176 -0.419 -0.277 |
||
|
|
-1.227 |
0.945 |
2.248 |
1.484 |
|
|
-1.554 |
1.197 |
2.848 |
1.880 |
Файл с.lst:
0.083 |
0.083 |
0.821 |
1.183 |
2.960 |
1.364 |
1.474 |
0.229 |
|||||
0.945 |
2.248 |
1.484 |
1.197 |
2.848 |
1.880 |
|
|
|||||
Задача 2.13. Пусть дано неупорядоченное множество А с числом элементов множества 10 000, сгенерированное случайным образом. Значение каждого элемента является целым числом в диапазоне от 0 до 10 включительно. Разработать схему алгоритма определения числа упорядоченных подмножеств В = {2, 5}, которые включены в неупорядоченное множество А.
Пояснения к задаче
В приведенном множестве А
А = {2, 4, 5, 4, 3, 4, 6, 7, 1, 2, 5, 1, 9, 4, 2, 1, 2, 5, 3, 1, 2, 2, 7, 2, 5}
последовательность {2, 5} встречается три раза.
Решение задачи
Схема алгоритма решения задачи представлена на рис. 2.13.
93
1Начало
2
A
I=1,10 000
3
Задание для элемента A[I]=... массива А случайного
значения от 0 до 10
4
A
5
K=0
6
B
I=1,9 999
7 |
A[I]=2 и |
|
да |
|
|
A[I+1]=5 |
8 |
|
|
|
|
|
|
|
нет
K=K+1
9
B
10
Вывод
K 11 Конец
Рис. 2.13
Формирование массива А
Поиск
последовательности {2, 5} в массиве А
94
Обозначения схемы алгоритма
A[I], A[I+1] – ai, ai+1 элементы массива А;
K – число подмножеств B = {2, 5}.
Программа
Program Task2_13;
Var
A : Array [1..10000] of Byte; I, K : Integer;
Begin {начало раздела операторов программы}
for I :=1 to 10000 do A[I]:=Random(10); {формирование массива А} K := 0;
for I :=1 to 9999 do {цикл - для перебора элементов массива А} {проверка является ли последовательность (I,I+1) заданной (2,5)}
If (A[I] = 2) and (A[I + 1] = 5) then K := K + 1;
Writeln('Число последовательностей = ',K); {вывод результата}
End. {конец программы}
Результат работы программы
Число последовательностей = 92.
2.4.Задачи по вычислению функциональных выражений
сиспользованием сложных сумм и произведений
Задача 2.14. Построить схему алгоритма и программу вычисле-
10 |
20 30 |
i j k . |
|
ния и вывода на экран значения суммы S |
|
e |
|
i 1 j 1k |
1 |
|
|
Решение задачи
Схема алгоритма решения задачи представлена на рис. 2.14.
Программа
Program Task2_14;
Var
I, J, K : Byte;
S : Real;
95
Begin {начало раздела операторов программы} S:= 0; {обнуление переменной суммы S}
for I:=1 to 10 do for J:=1 to 20 do
for K:=1 to 30 do
S := S + Exp(-I-J-K);
Writeln('Сумма = ', S:6:3); {вывод суммы на экран} Readln; {ожидание нажатия клавиши Enter}
End. {конец программы}
Результат работы программы
Сумма = 0.197
1
Начало
2
S=0
3
A
I=1,10
4
B
J=1, 20
5
C
K=1, 30
6
S=S+e-I-J-K
7
C
8
B
9
A
10 Вывод
S
11
Конец
Рис. 2.14
Задача 2.15. Разработать схему алгоритма и программу вычисления сумм для каждого элемента массива X = {4,1; 5,3; 6,1; 7,2;
10,1} по формуле S(xi) = log2(3xi + 1) + log3(4xi + 1) + log4(5xi + 1) + + …+ log101(102xi + 1). Вывести значения сумм на экран.
96
Решение задачи
Схема алгоритма решения задачи представлена на рис. 2.15.
Программа
Program Task2_15;
Var
I, J : Byte;
X : Array[1..5] of Real;
S : Real;
Begin {начало раздела операторов программы}
Write('Введите 5 значений: '); |
|
for I:=1 to 5 do Read(X[I]); {ввод значений массива X} |
|
for I:=1 to 5 do |
|
Begin |
{начало цикла 1 - для перебора значений массива Х} |
S:=0; |
{первоначальное значение переменной суммы S} |
{суммирование} |
|
For J:=2 to 101 do S := S + Ln((J+1)*X[I]+1)/Ln(J); |
|
Writeln('X= ',X[I]:5:1,' S= ',S:7:2);{вывод результатов на экран} |
|
End; |
{конец цикла 1} |
Readln; |
{ожидание нажатия клавиши Enter} |
End. |
{конец программы} |
|
|
|
Результат работы программы |
Введите 5 значений: 4.1 5.3 6.1 7.2 10.1 |
|||
X= |
4.1 |
S= |
145.16 |
X= |
5.3 |
S= |
152.81 |
X= |
6.1 |
S= |
157.01 |
X= |
7.2 |
S= |
161.98 |
X= |
10.1 |
S= |
172.13 |
Обозначение схемы алгоритма
X[I] – xi элемент массива X.
Обозначения схемы алгоритма
S1, S2 – значения предыдущего (Sn) и следующего (Sn+1) элементов ряда;
Sum – значение суммы членов ряда.
97
1Начало
2
A
I=1,5
3
Ввод
X[I]
4
A
5
B
I=1, 5
6
S=0
7
C
J=2, 101
8
9
S=S+ logj((J+1)X[I]+1)
C
10
Вывод
X[I], S
11
B
12
Конец
Рис. 2.15
Формирование массива Х
Вычисление суммы S при заданном X[I]
98
Задача 2.16. Разработать схему алгоритма и программу вычис-
ления суммы членов ряда S |
|
1,5x |
|
x 1 |
|
. Ограничиться числом |
|
ln(sin x) |
|||
членов ряда, для которых выполняется условие: разница между соседними членами ряда меньше 0,001. Если sin x 0, то положить
ln sin x
x5 . Значение суммы ряда вывести на экран.
Решение задачи
Схема алгоритма решения задачи представлена на рис. 2.16.
Программа
Program Task2_16; |
|
Uses Crt; |
|
Var |
|
X : Integer; |
|
Sum, S1, S2 : Real; |
|
Begin |
{начало раздела операторов программы} |
ClrScr; |
{очистка экрана} |
X:= 1; |
{начальное значение переменной Х} |
S2 := –1.5/(Ln(Sin(X))); |
|
Sum:= S2; |
|
Repeat |
{начало цикла 1} |
S1 := S2; |
{предыдущий элемент ряда S1} |
X := X + 1; |
{приращение переменной Х} |
{вычисление |
следующего элемента ряда S2} |
|
If Sin(X) > |
0 Then S2 := – Exp(X*Ln(1.5))/Ln(Sin(X)) |
|
Else S2 := – Exp(X*Ln(1.5))/Exp(5*Ln(X)); |
||
Sum:= Sum + |
S2; {подсчет суммы ряда} |
|
Until Abs(S1 - S2) < 0.001; |
{конец цикла 1} |
|
Write('Сумма ряда = ',Sum:6:2); |
{вывод результата на экран} |
|
Repeat Until KeyPressed; {ожидание нажатия любой клавиши} End. {конец программы}
99
Результат работы программы
Сумма ряда = 34.07
|
|
1 |
Начало |
|
|
|
|
|
2 |
X=1 |
|
|
-1.5 |
|
|
|
|
|
||
|
|
|
S2=… |
|
S2 |
|
|
|
|
|
ln(sinX) |
||
|
|
|
Sum=S2 |
|
|
|
|
|
3 |
S1=S2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
X=X+1 |
|
|
|
|
нет |
4 |
SinX>0 |
да |
|
|
6 |
|
|
5 |
|
|
|
|
|
|
|
|
||
S2 |
1.5X |
|
|
S2 |
|
-1.5 X |
X5 |
|
|
ln(sinX) |
|||
|
|
|
|
|||
|
|
7 |
|
|
|
|
|
|
Sum=Sum+ |
|
|
|
|
|
|
|
+S2 |
|
|
|
|
нет |
8 |
|S1-S2| |
да |
|
|
|
|
|
<0.001 |
9 Вывод |
||
|
|
|
|
|||
|
|
|
|
Sum |
||
|
|
|
|
10 |
|
|
|
|
|
|
Конец |
||
|
|
|
Рис. 2.16 |
|
|
|
Задача 2.17. Разработать схему алгоритма и программу решения квадратного уравнения ax2 + bx + c = 0 с параметрами a, b, c, кото-
|
|
|
|
|
|
1 |
20 |
1 |
|
|
рые |
вычисляются |
по |
формулам: |
a |
|
; |
||||
sin R 1,5 |
n R Rn |
|||||||||
|
|
|
|
|
|
|
||||
|
eR / 50 |
30 |
|
|
|
|
|
|
|
|
b |
sin n; c |
a·b |
ln | a | ln | b |; |
R = 10, 100 (5). В случае, |
||||||
n 1
если есть решение (D = b2 – 4a·c > 0), вывести на экран корни урав-
100
