Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика. Практикум

.pdf
Скачиваний:
1
Добавлен:
24.11.2025
Размер:
5.18 Mб
Скачать

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