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

Практикум ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПАСКАЛЬ_Янченко Д.В

.pdf
Скачиваний:
15
Добавлен:
13.03.2016
Размер:
786.83 Кб
Скачать

70

Пример 6.5.1. Известны данные среднедекадных расходах воды за n декад (n 50). Требуется определить средний расход.

Для решения этой задачи необходимо воспользоваться алгоритмами ввода данных в одномерный массив (5.5.1) и алгоритмом нахождения среднего значения элементов массива (5.5.10).

Переменные, используемые в задаче:

-Одномерный массив Q Q:ARRAY [1..50] OF REAL;

-N, I - количество и индекс переменной соответственно (Integer);

-S, SR – сумма элементов (S) и среднее значение (SR) – REAL.

Блок-схема алгоритма представлена на рисунке 33.

Текст программы на языке Pascal:

Program zad10;

Var

Q :ARRAY [1..50] OF Real;

I, N:Integer;

S, SR :Real;

Begin

Write(‘ N = ‘);

Readln(N);

For I:=1 To N Do Begin

Write(‘Q[‘,i,’]= ‘); Readln(Q[i]);

End;

S:=0;

For I:=1 To N Do

S := S +Q[I];

Sr := S/N;

Writeln(‘ Sr = ‘,Sr:8:3);

End.

Контрольный пример.

Исходные данные N = 5, Массив Q = {50; 60; 65; 76; 72};

Сумма элементов S = 323. Среднее значение Sr = 64,6 .

71

Начало

Ввод

N

I = 1

Ввод

QI

I = I + 1

Да

I N

S = 0 Нет

I = 1

S= S+Qi

I = I + 1

Да

I N

Нет

Sr = Sn

Ввод

Sr

Конец

Рисунок 33 – Алгоритм решения примера 6.5.1

Алгоритм нахождения среднего значения Алгоритм ввода элементов в массив

72

Пример 6.5.2. Известны данные среднедекадных температурах почв за К декад (К 30). Требуется определить наибольшую и наименьшую из положительных температур.

Для решения этой задачи необходимо воспользоваться алгоритмами ввода данных в одномерный массив (5.5.1) и алгоритмом нахождения максимального и минимального значения элементов массива (5.5.8). Однако, по условию задачи, необходимо найти максимальную и минимальную температуру не среди всех значений, а только среди положительных (отрицательные температуры игнорируются).

Необходимо модифицировать стандартный алгоритм нахождения максимума (минимума) так, чтобы работать только с положительными элементами. Для этого необходимо:

1)присвоить в переменную условного максимума (минимума) только положительное значение температуры;

2)при определении текущего максимума (минимума) проверять только положительные элементы.

Проверка на положительность осуществляется с помощью оператора условного перехода. Проверяется больше ли текущее значение температуры нуля или нет. Присвоение положительного значения температуры в переменную условного максимума можно оформить как самостоятельным циклом или совместить с вводом значений. В этом случае необходимо модифицировать алгоритм ввода исходных данных, в одномерный массив, добавив в него оператор условного перехода, для определения положительной температуры.

Переменные, используемые в задаче:

-Одномерный массив Т Т:ARRAY [1..30] OF REAL;

-N, I - количество и индекс переменной соответственно (Integer);

-MAX, MIN – максимальное и минимальное значение – REAL.

Алгоритм решения задачи представлен на рисунке 34 (модификация ввода данных и нахождения максимума и минимума). Текст программы на языке Pascal:

Program zad11;

Var

T:ARRAY [1..30] OF Real;

I, N:Integer;

MAX, MIN :Real;

Begin

Write(‘ N = ‘);

73

Readln(N);

For I:=1 To N Do Begin Write(‘T[‘,i,’]= ‘); Readln(T[i]); If T[I] >= 0 Then Begin

MAX:=T[I];

MIN:=T[I];

End;

End;

For I:=1 To N Do

If (T[I] >= 0) And (T[I] > Max) Then Max:=T[I]; For I:=1 To N Do

If (T[I] >= 0) And (T[I] < Min) Then Min:=T[I]; Writeln(‘ Max = ‘,Max:8:3, ‘ Min = ‘, Min:8:3);

End.

Начало

Ввод

N

I = 1

Ввод

TI

Да

TI 0

Нет

MAX= TI

 

 

 

 

 

 

MIN= TI

I = I + 1

Да

I N

1

Алгоритм ввода элементов в массив и присвоения условного максимума и минимума

 

 

74

 

 

 

1

 

 

 

I = 1

 

 

 

TI

0

Да

нахожденияАлгоритм

элементамаксимального

Да

Нет

 

 

 

 

 

TI>MAX

 

 

 

 

MAX= TI

 

 

I = I + 1

 

 

 

I N

Да

 

 

 

Алгоритмнахождения

минимальногоэлемента

Нет

 

TI<MIN

I = 1

 

 

 

TI

0

Да

 

 

Да

 

 

 

 

 

 

 

 

MIN= TI

 

 

I = I + 1

 

 

 

I N

Да

 

 

 

 

 

Вывод

 

 

 

MAX, MIN

 

 

 

Конец

 

 

 

Рисунок 34 – Алгоритм решения примера 6.5.2

 

 

75

Комментарии к программе.

При вводе значений массива (первый цикл) проверяется положительность числа (оператор If T[I] >= 0 Then …). Если условие выполняется, то необходимо присвоить текущее значение массива в переменные условного минимума и максимума. Поскольку по условию алгоритма после служебного слова Then необходимо записать больше одного оператора (в нашем случае два) необходимо использовать составной оператор:

If T[I] >= 0 Then Begin MAX:=T[I]; MIN:=T[I];

End;

При нахождении максимума и минимума необходимо проверка двойного условия – число положительно и число больше (меньше) чем текущий максимум (минимум). Возможно, записать два оператора условного перехода друг за другом:

If T[I] >= 0 Then

If T[I] > Max Then Max:=T[I];

или использовать в операторе условного перехода служебное слово «И»

(AND):

If (T[I] >= 0) And (T[I] > Max) Then Max:=T[I];

Оба варианты равносильны.

Контрольный пример.

Исходные данные N = 10, Массив Т = {5; -2; 1; 3; -5; -3; 6; 10; 4; 5};

Максимальный элемент Max = 10. Минимальный элемент Min = 1 .

Пример 6.5.3. Известны данные среднемесячных уровнях воды в реке за N месяцев (N 20). Требуется определить минимальный уровень и превышение каждого уровня над минимальным.

При решении этого примера будут использованы два стандартных алгоритма – алгоритм ввода данных в одномерный массив (5.5.1) и алгоритм нахождения минимального значения (5.5.8).

Для нахождения превышения каждого уровня над минимальным необходимо в цикле для каждого элемента массива найти разность между текущим элементом и найденным минимумом. Поскольку данный алгоритм не относится к характерным приемам обработки одномерных массивов необходимо его записать самостоятельно. Воспользуемся алгоритмом, изображенным на рисунке 10. В этом алгоритме обработка элемента будет заключаться в нахождении разницы между текущим элементом и

76

минимумом. Найденную разность поместим в переменную, например, PR (превышение) и выведем на печать. Определение разницы и вывод ее на печать выполним в одно цикле (в программе для этого придется воспользоваться составным оператором).

Переменные, используемые в задаче:

-Одномерный массив Н Н:ARRAY [1..20] OF REAL;

-N, I - количество и индекс переменной соответственно (Integer);

-MIN – минимальное значение массива (REAL);

-PR – превышение каждого уровня над минимальным (REAL).

Алгоритм решения задачи представлен на рисунке 35.

Текст программы на языке Pascal:

Program zad12; Var

H:ARRAY [1..30] OF Real; I, N:Integer;

MIN, Pr :Real; Begin

Write(‘ N = ‘); Readln(N);

For I:=1 To N Do Begin Write(‘H[‘,i,’]= ‘); Readln(H[i]);

End;

Min := H[1];

For I:=1 To N Do

If H[I] < Min Then Min:=H[I]; Writeln(‘ Min = ‘, Min:8:3);

For I:=1 To N Do Begin

Pr := H[I] – Min;

Writeln(‘ Превышение ‘, I,’-го уровня = ‘, Pr:8:3); End;

End.

Начало

Ввод

N

I = 1

Ввод НI

I = I + 1

I N

Нет

MIN= Н1

I = 1

НI<MIN

Нет

I = I + 1

77

Да

Да

MIN= НI

I N

Да

 

1

Алгоритм нахождения минимального элемента Алгоритм ввода элементов в массив

78

1

Ввод

MIN

I = 1

Pr = НI - MIN

Ввод

Pr

I = I + 1

I N

Да

 

Конец

Рисунок 35 – Алгоритм решения примера 6.5.3

Алгоритм нахождения разности и ее вывод

Контрольный пример.

Исходные данные N = 10, Массив Н= {25;22;22;23;21;23;26;30;28; 26};

Минимальный элемент Min = 21. Превышение уровней над минимальным PR:

Превышение 1-го уровня =

4.000

Превышение 2-го уровня =

1.000

Превышение 3-го уровня =

1.000

Превышение 4-го уровня =

2.000

Превышение 5-го уровня =

0.000

Превышение 6-го уровня =

2.000

Превышение 7-го уровня =

5.000

Превышение 8-го уровня =

9.000

Превышение 9-го уровня =

7.000

Превышение 10-го уровня =

5.000

79

7 ВАРИАНТЫ КОНТРОЛЬНЫХ ЗАДАНИЙ

7.1 Варианты задания №1

Для перечисленных ниже задач, необходимо составить блок-схему алгоритма и программу на языке Pascal, выполняющую вычисление требуемой величины и вывода найденного значения.

Выбор конкретной задачи производят по номеру задания №1 (см. таблицу 3).

1. Вычислить величину расхода Q

 

если H2 = 0

µω 2gH ,

Q =

если H

 

0

µω 2gZ ,

2

 

 

 

2. Вычислить коэффициент Шези С для бетонного канала

C = 1n R y

 

 

n,

если R 1

при

1,5

y =

 

 

 

 

n,

если R >1

 

1,3

3. Определить повторяемость L гидрологической величины

 

100

,

 

 

 

 

если P 50

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

 

 

 

 

L =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

100

 

 

,

 

если P >50,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

100 P

 

 

 

 

 

 

 

 

 

 

где P =

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n +1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.

Вычислить максимальный изгибающий момент

 

 

 

 

2

 

 

Q

2

 

 

 

L

 

 

 

 

 

L

 

 

 

 

 

 

 

 

 

P

 

 

 

 

,

если a

 

 

 

 

 

M =

8

 

6

2

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L

 

 

P

L

,

 

 

 

 

 

если a =

 

 

 

 

 

 

 

 

2

 

 

 

 

 

12

 

 

 

 

 

 

 

 

 

5.

Вычислить величину испарения Е с поверхности суши

Eo ω1 ω+ω2 , E = 2 o

Eo ,

если ω1 +2ω2 <ωo

если ω1 +2ω2 ωo