Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BPlab (работы по паскалю).pdf
Скачиваний:
33
Добавлен:
01.06.2015
Размер:
1.04 Mб
Скачать

23 –

виде процедур.

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

обилетах, не попадающих в интервал, оформить в виде процедур.

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

8.Ввести таблицу розыгрыша, упорядочить ее по возрастанию выигрыша, вывести упорядоченную таблицу на экран, циклически запрашивать сумму выигрыша и выдавать все пары «серия-номер», на которые такой выигрыш выпал. Ввод, вывод, упорядочение таблицы и вывод серий и номеров билетов, на которые выпал выигрыш, оформить в виде процедур.

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

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

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

Контрольные вопросы

1.Заголовок процедуры.

2.Формальные и фактические параметры.

3.Параметры-значения и параметры-переменные.

4.Вызов процедуры и возврат из процедуры.

5.Передача фактических параметров по ссылке и по значению.

6.Правило установления соответствия формальных и фактических параметров, требования к соответствующим формальным и фактическим параметрам.

7.Глобальные и локальные данные подпрограмм. Области видимости.

8.Рекурсивный вызов подпрограмм.

Лабораторная работа 7. Использование функций

Основные сведения

Описание функции

function имя_функции(параметр1; параметр2;...): тип; тело_функции;

Описание функции располагается непосредственно перед разделом операторов основной программы или вызывающей подпрограммы.

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

24 –

Вызов (обращение к) функции

имя_функции( фактический_параметр1, фактический_параметр2,...)

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

Связь по данным между вызывающей программой и функцией может осуществляться одним из следующих способов:

через возвращаемое функцией значение;

через параметры функции;

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

Пример выполнения

По заданным 50-элементным вещественным массивамA, B и C вычислить

min

( A ) / min

j

(B

j

) + min

(C

) / min

j

( A

j

+ B

j

)

при min

( A )

< min

j

(B

j

);

f =

i

i

 

i

i

 

 

 

 

i

i

 

 

 

 

 

min j ( Aj + B j ) + mini (Ci ),

 

в противном случае.

 

 

 

 

 

Здесь запись mini означает минимум по всем элементам массива.

program

PRIMER;

const

N=50;

type

MAS=array[1..N] of real;

var

arA, arB, arC, arBC, arBA : MAS;

 

rT : real;

{***** SUMMATR *****}

procedure SUMMATR( var arREZ:MAS; arM1,arM2:MAS );

{

Действие:

Поэлементное суммирование массивов arREZ=arM1+arM2 Параметры входные:

arM1, arM2 – массивы-слагаемые Параметры выходные:

arREZ – массив-результат Замечания: –

}

var I:integer; begin

for I:=1 to N do arREZ[I]:=arM1[I]+arM2[I]

end;{ SUMMATR }

{***** VVOD *****}

procedure VVOD(var arM:MAS);

{

Действие: Ввод массива

Параметры входные: - Параметры выходные:

arM – массив-результат Замечания: –

}

var I:integer; begin

for I:=1 to N do

25 –

read(arM[I]) end;{ VVOD }

{***** MIN *****}

function MIN( arM:MAS ): real;

{

Действие:

Нахождение минимального элемента Параметры входные:

arM – массив Параметры выходные: - Возвращает:

значение минимального элемента Замечания: –

}

var I:integer; R:real; begin

R:=arM[1];

for I:=2 to N do

if R>arM[I] then R:=arM[I]; MIN:=R

end;{ MIN }

{***** MAX *****}

function MAX(arM:MAS): real;

{

Действие:

Нахождение максимального элемента Параметры входные:

arM – массив Параметры выходные: - Возвращает:

значение максимального элемента Замечания: –

}

var I:integer; R:real; begin

R:=arM[1];

for I:=2 to N do

if R<arM[I] then R:=arM[I]; MAX:=R

end;{ MAX }

{***** MAIN *****}

begin

writeln('Введите A'); VVOD(arA); writeln('Введите B'); VVOD(arB); writeln('Введите C'); VVOD(arC); SUMMATR(arBC,arB,arC); SUMMATR(arBA,arB,arA);

if MIN(arA) < MAX(arB) then

T := MIN(arB)/MAX(arA) + MAX(arC)/MIN(arBC) else

T := MAX(arBA) + MIN(arC); writeln('T=',T)

26 –

end.

Варианты заданий

1.Даны коэффициенты многочленов P(x) и Q(x) пятого порядка и вещественное число a. Вычислить величину P(a+Q(a)*(a+1)). Написать функцию (единственную), вычисляющую как P(x), так и Q(x).

2.Дано вещественное число a. Вычислить:

ln(1+sin a/(a2+5))*ln((sin2(a-1))/(1+a4))-ln(1+sin(a/2)/(3+sin2a))

Для вычисления ln x и sin x использовать степенные ряды:

ln(1+z)= z - z2/2 + z3/3 – z4/4 + ... для |z| < 1, sin z = z - z3/3! + z5/5! – z7/7! + z9/9! – …

Вычисление рядов производить с точностью e=0,0001. Написать функции для вычисления ln x, sin x.

3. Дано вещественное число a. Вычислить: arctg((a2-1)/(a2+1))*arctg((cosa-sin2a)/(a2+4))-arctg(1/(a2+4))

Для вычисления arctg(x) использовать степенной ряд arctg x = x - x3/3 + x5/5 - x7/7 + x9/9 - …

Вычисление ряда производить с точностью e=0,0001. Написать функцию для вычисления arctg x .

4. По вещественным числам e>0 и t вычислить величину

4 1 cos4 t / 4 + 5 1 arctan t / 200 9 1 /(3 + t 2 ) .

Корни вычислить с точностью e , используя ряд Тейлора

(1+x)a=1+ax+(a(a-1)/2!)x2+(a(a-1)(a-2)/3!)x3+... (|x|<=1, a>0).

Написать функцию для вычисления корня. 5. Дано вещественное число a. Вычислить:

arcsin((cos2a-1)/(4+a2))-arcsin(sin(a2-1)/(8a+3))*arcsin((sin a+cos a)/9).

Для вычисления arcsin x использовать степенной ряд

arcsin x = x+x3/(2*3)+3x5/(2*4*5)+(3*5)x7/(2*4*6*7)+… (|x|<1).

Вычисления ряда производить с точностью e=0,0001. Написать функцию для вычисления arcsin x .

6. Дано вещественное число a. Вычислить ecos2a+1 cos(e2a 4) + ecos( a2 1)+cos3 (a+1) . Для вычисления функций ex и cos x использовать степенные ряды:

ex= 1 + x + x2/2! + x3/3! + … ,

cos x = 1 - x2/2! + x4/4! - x6/6! + x8/8! - …

Вычисление рядов производить с точностью e=0,0001. Написать функции для вычисле-

ния ex и cos x .

7. Даны координаты (x1,y1), (x2,y2)…(x7, y7) точек p1p7 замкнутой ломаной. Проверить, имеет ли эта ломаная самопересечения. Если ломаная не имеет самопересечений, выяснить, является ли семиугольник p1...p7 выпуклым. Написать функцию, проверяющую, пересекаются ли два отрезка с указанными координатами, и функцию, вычисляющую площадь треугольника по координатам его сторон.

8.Дано четное число n . Проверить для этого числа гипотезу Гольдбаха. Эта гипотеза заключается в том, что каждое четное число n, большее 2, представляется в виде суммы двух простых чисел. Написать и использовать функцию, проверяющую, является ли число простым.

9.Даны вещественные матрицы A, B, C размером 5x6. Вычислить величину

(||A||+||B||+||C||)/(||A+B+C||+||A-B-C||),

где ||D||= maxj |d1,j| + maxj |d2,j| +…+ maxj |d5,j|.

Программа должна использовать функцию нахождения максимума в строке матрицы и функцию вычисления ||D||.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]