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

36 –

2.Ввести неопределенное количество целых чисел и сформировать из них список. Создать второй список, состоящий из разностей соседних элементов первого списка и вывести его на экран.

3.Ввести неопределенное количество целых чисел и сформировать из них список. Найти минимальный элемент в списке и исключить его. Вывести полученную последовательность на экран.

4.Ввести неопределенное количество целых чисел и сформировать из них список. Найти максимальный и минимальный элементы списка, и их разность включить в список первым элементом. Вывести полученную последовательность чисел на экран.

5.Ввести неопределенное количество вещественных чисел и сформировать из них список. Найти сумму элементов списка и поставить ее первым элементом списка. Вывести полученную последовательность чисел на экран.

6.Ввести неопределенное количество вещественных чисел и сформировать из них список. Найти среднее арифметическое элементов списка и поставить найденное значение последним элементом в списке.

7.Ввести неопределенное количество целых чисел и сформировать из них список. Найти количество четных элементов в списке и включить его в список после последнего чётного элемента. Вывести полученную последовательность на экран.

8.Ввести неопределенное количество вещественных чисел и сформировать из них список. Найти среднее арифметическое отрицательных элементов списка и вставить его в список перед первым отрицательным элементом. Вывести полученную последовательность чисел на экран.

9.Ввести неопределенное количество целых чисел и сформировать из них список. Найти максимальный элемент в списке и поставить его на первое место в списке. Вывести полученную последовательность чисел на экран.

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

11.Ввести неопределенное количество вещественных чисел и сформировать из них список. Найти среднее арифметическое положительных элементов списка и вставить его в список после последнего положительного элемента. Вывести полученную последовательность на экран.

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

1.Указатель. Типизированный и нетипизированный указатели.

2.Операция разыменования.

3.Динамическая память. Куча.

4.Выделение и освобождение памяти.

5.Описание элемента односвязного списка.

6.Описание элемента двусвязного списка.

7.Что такое пустой список ? Каким образом инициализировать список?

8.В чем основные отличия односвязного и двусвязного списков ?

9.Особые ситуации при включении элемента в список.

10.Особые ситуации при исключении элемента из списка.

11.Реализация стека на основе односвязного списка.

12.Реализация очереди на основе односвязного списка.

Лабораторная работа 11. Создание и использование модулей

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

Структура модуля:

37 –

unit имя_модуля; {заголовок модуля} interface {раздел интерфейса модуля}

uses имя_модуля1, имя_модуля2, …;{модули, используемые в разделе интерфейса} const

{описание внешних констант} type

{описание внешних типов} var

{описание внешних переменных} {заголовки внешних процедур и функций} implementation {раздел реализации модуля}

uses имя_модуля1, имя_модуля2, …;{модули, используемые в разделе реализации} const

{описание внутренних констант модуля} type

{описание внутренних типов модуля} var

{описание внутренних переменных модуля} {тексты внешних процедур и функций} label

{метки, используемые в разделе инициализации модуля} begin

{раздел инициализации модуля} end.

Имя файла, в котором находится модуль, должно совпадать с именем модуля. При компиляции модуля создается файл имя_модуля.TPU, который располагается в каталоге, заданном в пункте меню Options+Directories+EXE&TPU .

Для использования констант, типов, переменных и подпрограмм модуля необходимо в основную программу непосредственно за ее заголовком включить строку:

uses имя_модуля1,имя_модуля2,...;

Указанные в этой директиве модули Pascal будет искать в каталогах, заданных в пункте меню Options+Directories+Unit (можно задавать несколько каталогов, разделяя их точкой с запятой).

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

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

Оформить в виде модуля вычисление следующих математических функций:

f1 (x, y) = sin x cos y +sin y cos x ;

x2 + y, при x < y , f2 (x, y) = x y 2 , при x y ;

f3 (x) = tan x /(x2 +1) ;

f4 (x) = (x2 3x +4) /(| x | +2) .

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

{ Файл модуля MODUL.PAS } unit MODUL;

interface

function F1(X,Y:real): real; function F2(X,Y:real): real; function F3(X:real): real;

38 –

function F4(X:real): real;

implementation

function F1(X,Y:real): real; begin

F1:=sin(X)*cos(Y)+sin(Y)*cos(X) end; { F1 }

function F2(X,Y:real):real; begin

if X<+Y then F2:=sqr(X)+Y else F2:=X-sqr(Y)

end; { F2 }

function F3(X:real):real; begin

F3:=(sin(X)/cos(X))/(sqr(X)+1) end; { F3 }

function F4(X:real):real; begin

F4:=(sqr(X)-3*x+4)/(abs(X)+2) end; { F4 }

end.

{ Файл основной программы PRIMER.PAS } program PRIMER;

uses MODUL; var

X,Y: real; C: char;

begin repeat

writeln('Введите x и y'); readln(X,Y); writeln('F1(',X,',',Y,')=',F1(X,Y)); writeln('F2(',X,',',Y,')=',F2(X,Y)); writeln('F3(',X,')=',F3(X)); writeln('F4(',X,')=',F4(X)); writeln('Продолжить?(N-нет)'); readln(C)

until (C='N') or (C='n') end.

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

Для всех вариантов задание состоит в следующем:

оформить в виде модуля подпрограммы, получающие в качестве параметров некоторые данный и производящие с ними определенные действия (действия и данные определяются вариантом задания);

написать программу, которая использует подпрограммы этого модуля и тестирует их на данных, введенных с клавиатуры.

1. Параметры – строки. Действия:

обмен между строками самого длинного слова первой строки на самое короткое слово

39 –

второй строки;

возврат конкатенации слова первой строки, состоящего из наибольшего количества различных букв, и слова второй строки, состоящего из наименьшего количества различных букв;

вставка в конец первой строки количество слов с четной длиной, а в конец второй – количество слов с нечетной длиной;

удаление из первой строки слов, содержащихся во второй.

2.Параметры – строки. Действия:

урезание более длинной строки до длины более короткой;

добавление пробелов в более короткую строку до длины более длинной;

конкатенация первых слов обеих строк;

конкатенация последних слов обеих строк.

3.Параметры – строки. Действия:

удаление из строки всех гласных;

удаление из строки всех согласных;

подсчет количества слогов в строке;

подсчет количество слов в строке.

4.Параметр – массив из N целых чисел (N – константа модуля). Действия:

нахождение минимального элемента;

нахождение максимального элемента;

нахождение суммы элементов массива;

перестановка элементов массива в обратном порядке.

5.Параметр – массив из N целых чисел (N – константа модуля). Действия:

упорядочение по возрастанию;

упорядочение по убыванию;

подсчет количества отрицательных элементов;

подсчет количества положительных элементов.

6.Параметр – двумерный массив NxM (N и M – константы модуля). Действия:

транспонирование относительно главной диагонали;

транспонирование относительно побочной диагонали;

нахождение минимального элемента;

нахождение максимального элемента.

7.Параметр – двумерный массив NxM (N и M – константы модуля). Действия:

сортировка строк по убыванию суммы элементов строк;

сортировка строк по возрастанию суммы элементов строк;

сортировка столбцов по убыванию суммы элементов столбцов;

сортировка столбцов по возрастанию суммы элементов столбцов.

8.Параметр – двумерный массив NxM (N и M – константы модуля). Действия:

обмен между массивами элементами, находящимися выше главной диагонали;

обмен между массивами элементами четных строк;

обмен между массивами элементами нечетных столбцов;

обмен между массивами отрицательными элементами, стоящими на одном и том же месте в обоих массивах.

9.Параметры – строки. Действия:

обмен между строками первыми словами;

обмен между строками последними словами;

обнуление более длинной строки;

обнуление более короткой строки.

10.Параметр – двумерный массив NxM (N и M – константы модуля). Действия:

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