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

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

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

|

5

|

3.00

|

3.50

|

51.88

|

|

6

|

3.00

|

4.00

|

73.00

|

|

7

|

5.00

|

3.00

|

52.00

|

|

8

|

5.00

|

3.50

|

67.87

|

|

9

|

5.00

|

4.00

|

89.00

|

|

------------------------------

 

 

 

 

 

 

|

 

Задача 2.4. Разработать схему алгоритма и программу табуляции

функции

z log3 (x y)

 

x y с ограниченной областью опреде-

ления, где x = 1; 200 (1) и y = 40; 100 (2). Если функцию z вычислить нельзя в силу области ее определения, то принять z = cos(x + y). Вывести в файл а.а все значения z, для которых выполняется условие

z 10;

x 31 y.

Решение задачи

Схема алгоритма решения задачи представлена на рис. 2.4.

Программа

Program Task2_4;

Var

Z : Real;

X, Y : Byte;

f : Text;

Begin {начало раздела операторов программы}

Assign(f, 'a.a'); Rewrite(f); {создание файла a.a} for X := 1 to 200 do

Begin {начало цикла 1 – для перебора значений Х} Y := 40; {начальное значение Y}

While Y <= 100 do

Begin {начало цикла 2 – для перебора значений Y}

If (X - Y) >= 0 Then Z := Ln(X+Y)/Ln(3) + Sqrt(X-Y) Else Z := Cos(X+Y);

{если условие выполняется, то вывод в файл}

If (Z > 10)

and (X > 31*Sqrt(Y)) Then

 

Writeln(f, 'X = ',X,' Y = ',Y,' Z = ',Z:6:2);

Y := Y + 2;

{приращение переменной Y}

End;

 

{конец цикла 2}

71

End;

{конец цикла 1}

Close(f);

{закрытие файла а.а}

End.

{конец программы}

 

1

Начало

 

 

 

2

Создание

 

 

 

 

файла a.a

 

 

 

3

 

A

 

 

 

 

 

 

 

 

 

X=1,200

 

 

 

4

 

 

 

 

 

 

Y=40

 

 

 

5

Y<100

нет

 

 

 

 

 

 

 

 

да

 

 

нет 6

X-Y>0

да

 

8

 

7

 

 

 

 

 

 

 

 

 

 

Z=cos(X+Y)

 

 

Z

 

 

 

log3(X

Y)

 

 

 

 

X

Y

да

9

Z

10 и

 

 

10 Вывод

 

X

31 Y

 

 

 

 

нет

 

 

в файл

 

 

 

 

a.a

 

 

 

 

 

X, Y, Z

 

 

 

 

 

 

11

 

 

 

 

 

 

Y=Y+2

 

 

 

12

 

 

 

 

 

 

 

A

 

 

 

13

 

 

 

 

 

 

Закрытие

 

 

 

 

файла a.a

 

 

 

14

Конец

 

 

 

 

 

 

Рис. 2.4

72

Обозначение схемы алгоритма

X[I] – xi элемент массива X.

Результат работы программы

Файл а.а содержит:

X = 197

Y = 40

Z =

17.51

X = 198

Y = 40

Z =

17.55

X

=

199

Y

=

40

Z =

17.59

X

=

200

Y

=

40

Z =

17.64

Задача 2.5. Разработать схему алгоритма и программу вычисления значения функции y lg(sin 5x)3 для x = 40,1; 50,2; 70,8, нахо-

дящихся в файле а.а. Вывести на экран значения х и y. Если функция y не имеет значения в силу области определения х, вывести сообщение «Значение y не определено».

Решение задачи

Схема алгоритма решения задачи представлена на рис. 2.5.

Программа

Program Task2_5;

Var

I : Integer;

F : Text;

X: Array [1..3] of Real;

Y: Real;

Begin

{начало раздела операторов программы}

Assign(F, 'a.a'); Reset(F); {открытие файла a.a}

for I:=1 to 3 do

 

Begin

{начало цикла}

Read(F, X[I]);

{чтение значения X[I] из файла}

If Sin(5*X[I])>0 Then {если Х принадлежит области определения}

Begin

 

 

Y := Sin(5*X[I])*Sin(5*X[I])*Sin(5*X[I]);

 

Y:=Ln(Y)/Ln(10);

{вычисление Y}

 

Writeln('При X = ',X[I]:3:1,' Y = ',Y:5:2);{вывод Y на экран}

End Else Writeln('При X = ',X[I]:3:1,' значение Y не определено');

73

End; {конец цикла 1}

Close(F); {закрытие файла a.a}

Readln; {ожидание нажатия клавиши Enter}

End. {конец программы}

Результат работы программы

При X = 40.1 значение Y не определено При X = 50.2 значение Y не определено При X = 70.8 Y = -0.22

2.3. Задачи с использованием массивов различной размерности

Задача 2.6. Разработать схему алгоритма и программу вычисления выражения S = max{ai} + min{aj}, где i = 2, 4, 6, …, 100 – четные индексы элементов массива А, j = 1, 3, 5, …, 99 – нечетные индексы элементов массива А. Элементы массива А формируется по закону ak = cos(k2 + 2k + 30). Результат вычисления вывести на экран.

Решение задачи

Схема алгоритма решения задачи представлена на рис. 2.6.

Обозначения схемы алгоритма

A[K] – ak элемент массива А;

Max – значение максимального элемента среди четных элементов массива A;

Min – значение минимального элемента среди нечетных элементов массива A.

74

 

 

 

1

 

 

 

 

 

 

Начало

 

 

 

 

2

 

 

 

 

 

 

Открытие

 

 

 

 

 

файла а.а

 

 

 

 

3

A

 

 

 

 

 

 

 

 

 

 

I=1,3

 

 

 

 

4

Ввод из

 

 

 

 

 

файла

 

 

 

 

 

a.a

 

 

 

 

 

X[I]

 

 

 

нет

5

sin(5X[I])

да

 

 

 

Вывод сообщения

8

Вывод

 

>0

6

 

 

Y=

 

 

 

«Значение Y не

 

Х[I]

 

 

lg(sin5X[I])3

определено»

 

«...»

 

 

 

 

 

 

 

 

7

 

 

 

 

 

Вывод

 

 

 

 

 

X[I], Y

9

A

10

Закрытие файла а.а

11

Конец

Рис. 2.5

75

 

 

1

Начало

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

Min=…

Min=cos(12+1·2+30)

 

 

 

Max=...

Max = cos(22+2·2+30)

 

 

3

A

 

 

 

 

 

 

 

 

 

 

K=1,100

 

 

 

 

4

A[K]=cos(K2

 

 

 

 

 

 

 

 

 

 

+2·K+30)

 

 

 

да

5

нет

 

 

 

К

 

 

 

 

нечетно?

 

 

8 Min>

да

6

6 Max<

да

 

A[K]

9

 

 

A[K]

7

нет

Min=A[K]

нет

Max=A[K]

 

 

 

10

A

11

S=

Max+Min

12

Вывод

S

13

Конец

Рис. 2.6

Программа

Program Task2_6;

Uses Crt;

Var

Min, Max, S : Real;

K : Integer;

A : Array[1..100] of Real;

76

Begin

{начало раздела операторов программы}

ClrScr;

{очистка экрана}

Min:=cos(1+2+30);

{начальное значение переменной минимума}

Max:=cos(2*2+2*2+30);{начальное значение переменной максимума} for K := 1 to 100 do

begin

{начало цикла}

A[K]:=cos(K*K + 2*K + 30); {вычисление элемента A[K]}

If odd(K) Then

{проверка на нечетность}

If Min>A[K] then Min:=A[K] {если нечетный элемент}

 

Else If Max<A[K] then Max:=A[K]; {если четный элемент}

end;

{конец цикла}

S:=Max + Min; {сумма максимального и минимального элементов}

Writeln('Сумма максимального и минимального элементов массива = ', S:8:5); {вывод S на экран}

Readln;

{ожидание нажатия клавиши Enter}

End.

{конец программы}

 

Результат работы программы

Сумма максимального и минимального элементов массива = -0.00303

Задача 2.7. Разработать схему алгоритма и программу для нахождения максимального элемента каждой строки матрицы А. Элементы матрицы формируются по закону aij = сos(i + j), i = 1; 10, j = 1; 30. Максимальный элемент вычислять с использованием подпрограммы (function). Максимальные значения выводить с точностью до пяти знаков после десятичной точки.

Решение задачи

Схема алгоритма решения задачи представлена на рис. 2.7.

Обозначения схемы алгоритма

A[I, J] – аij элемент матрицы А;

B[J] – bj элемент одномерного массива B, который формируется из строки матрицы А;

MaxB(B) – вызов функции MaxB вычисления максимального элемента одномерного массива B;

Max – значение максимального элемента массива B, равное возвращаемому значению функции MaxB.

77

1

Начало

2 A I=1,10

3

B

J=1,30

4

A[I, J]= cos(I+J)

5 B[J]=A[I, J]

B

6

MaxB(B)

7

Вывод

I, Max

8

A

9

Конец

Рис. 2.7

Программа

Program Task2_7;

Type

TypeB = array[1..30] of Real; {описание типа массива TypeB}

Var

A : Array[1..10, 1..30] of Real;

B : TypeB;

I, J : Integer;

Max : Real;

{функция нахождения максимального элемента массива B1}

Function MaxB(B1 : TypeB) : Real;

78

var

 

I : Integer;

 

Max : Real;

 

begin

{начало раздела операторов функции MaxB}

Max := B1[1]; {начальное значение переменной максимума} for I := 2 to 30 do

If Max < B1[I] then Max := B1[I]; MaxB := Max;

end; {конец функции MaxB }

Begin {начало раздела операторов основной программы} for I := 1 to 10 do

begin {начало цикла 1-для перебора строк массива A} for J := 1 to 30 do

begin {начало цикла 2-для перебора столбцов массива B} A[I, J] := cos(I * J);{вычисление элемента массива A} B[J] := A[I, J]; {создание массива B из строки массива A}

end;

{конец цикла 2}

Max := MaxB(B);

{вызов функции MaxB}

{вывод на экран}

 

Writeln('Максимальный элемент ',I,'-й строки = ',Max:8:5);

end;

{конец цикла 1}

end.

{конец основной программы}

Результат работы программы

Максимальный элемент 1-й строки = 0.99120 Максимальный элемент 2-й строки = 0.99984 Максимальный элемент 3-й строки = 0.99339 Максимальный элемент 4-й строки = 0.99984 Максимальный элемент 5-й строки = 0.99120 Максимальный элемент 6-й строки = 0.99859 Максимальный элемент 7-й строки = 0.98590 Максимальный элемент 8-й строки = 0.99937 Максимальный элемент 9-й строки = 0.98590 Максимальный элемент 10-й строки = 0.99609

Задача 2.8. Разработать схему алгоритма и программу нахождения минимального элемента двухмерного массива А размером 7 10, который сформирован из случайных чисел, находящихся в интервале от 0 до 999 включительно. Значение минимума искать в заштрихованных областях двумерного массива. Поиск минимального элемента оформить в виде подпрограммы (procedure). Значения элементов массива A в заштрихованной области и минимального элемента вывести на экран.

79

 

 

 

 

 

Область 3

 

 

a11

a12

a13

a14

a15

a16

a17

a18

a19

a1 10

a21

a22

a23

a24

a25

a26

a27

a28

a29

a2 10

a31

a32

a33

a34

a35

a36

a37

a38

a39

a3 10

a41

a42

a43

a44

a45

a46

a47

a48

a49

a4 10

a51

a52

a53

a54

a55

a56

a57

a58

a59 a5 10

a61

a62

a63

a64

a65

a66

a67

a68

a69 a6 10

a71

a72

a73

a74

a75

a76

a77

a78

a79 a710

Область 1

Область 2

Решение задачи

Схема алгоритма решения задачи представлена на рис. 2.8.

Программа

Program Task2_8;

Type

T1 = array[1..40] of Integer;

Var

A : Array[1..7, 1..10] of Integer; I, J, K, Min : Integer;

B : T1;

{процедура поиска минимального элемента (MinХ) массива Х размерности N}

Procedure MinArr(X : T1; N : Integer; Var MinX : Integer); Var I : Integer;

begin {начало раздела операторов процедуры MinArr} MinX := X[1]; {начальное значение переменной минимума} for I:=2 to N do {цикл для перебора элементов массива Х}

If MinX > X[I] then MinX := X[I]; end; {конец процедуры MinArr }

Begin {начало раздела операторов основной программы}

K := 0; {начальное значение числа элементов массива B}

Writeln('Значения элементов массива заштрихованной области:'); for I := 1 to 7 do {цикл 1–для перебора строк массива А}

for J := 1 to 10 do {цикл 2–для перебора столбцов массива А} begin {начало циклов 1, 2}

80