Вы находитесь на странице: 1из 40

ЛАБОРАТОРНАЯ РАБОТА ¹ 1

ЛИНЕЙНЫЕ АЛГОРИТМЫ
Цель задания:
1. Освоение простейшей структуры программы.
2. Организация простых линейных алгоритмов
3. Получение навыков в организации ВВОДА/ВЫВОДА значений стандартных типов
данных.
4. Использование оператора присваивания при вычислениях..

ВАРИАНТЫ ЗАДАНИЯ
1. Дана сумма начисленной заработной платы. Из этой суммы необходимо удержать 12 % на
подоходный налог, 1 % на профсоюзный налог, 1 % на пенсионный налог и добавить 45 % от
суммы. Полученную сумму к выдаче вывести на экран.
2. Известна цена за килограмм некоторого продукта. Ввести нужный вес в граммах и
рассчитать сумму, которую необходимо заплатить.
3. Известно, что плата за детский сад в месяц составляет 65 лей (месяц - 22 дня). Рассчитать,
сколько нужно заплатить за месяц, если ребенок отходил N дней.
4. Заданы координаты трех вершин треугольника (x1,y1), (x2,y2),(x3,y3). Найдите его периметр
и площадь.
5. Дано целое четырехзначное число. Используя операции div и mod, найти сумму и
произведение его цифр.
6. Скорость первого автомобиля V1 км/ч, второго – V2 км/ч, расстояние между ними S км.
Определить расстояние между ними через T часов, если автомобили первоначально
движутся навстречу друг другу.
7. Вычислить площадь прямоугольного треугольника, а также:
а) длину гипотенузы по двум его катетам;
б) длину одного из его катетов по гипотенузе и второму катету.
8. Завод за квартал выпустил n шт. автомобилей. За первый месяц k%, за третий – x%. Какое
количество автомобилей выпускалось каждый месяц.
9. Написать программу, которая печатает True или False в зависимости от того, выполняются
или нет заданные условия:
– квадрат заданного трехзначного числа равен кубу суммы цифр этого числа;
– среди цифр заданного трехзначного числа есть одинаковые;

10. Оптовая цена закупленного товара составляет n лей за единицу товара. Удалось реализовать
в розницу k% товара по цене d лей за единицу. Вычислить прибыль от сделки.
11. Дается длина прямоугольника. Длина прямоугольника на n см больше ширины. Рассчитать
периметр и площадь прямоугольника.
12. Даны два квадрата с разными длинами сторон. Вычислить на сколько площадь одного из
квадратов больше площади другого.
13. Написать программу, которая печатает True или False в зависимости от того, выполняются
или нет заданное условие:
– определить, равна ли сумма двух первых цифр заданного четырехзначного числа сумме
двух его последних цифр;
14. Составить программу вычисления площади пола и площади боковой поверхности комнаты
длиной а =7м, шириной b = 5м и высотой с =3,5м.

1
15. Рассчитать сумму "S" первых N членов арифметической прогрессии A1, A2, . . . , AN по
формуле: S= (A1 + AN)*N/2. A1, AN, N - исходные данные и сумму "S" первых N членов
ряда геометрической прогрессии B1, B2, . . . , BN по формуле: S=(B1 - BN*Q)/(1-Q). BN =B1
*QN. B1, Q - исходные данные.

16. Розничная цена мужского костюма Р руб. Торговая скидка в пользу магазина Т % розничной
цены. Составьте программу, которая определяет оптовую цену костюма.
17. Дано натуральное число n. Вычислить сколько часов, минут и секунд находится в:
а) n дней (1 день – 24 часа)
б) n недель.

2
ЛАБОРАТОРНАЯ РАБОТА ¹ 2
Вычисление выражений. Использование стандартных функций.
Цель задания:
1. Изучение порядка действий при вычислении выражений.
2. Приобретение навыков в записи выражений на языке ПАСКАЛЬ и использование
стандартных встроенных функций для вычисления выражений.
3. Организация линейных алгоритмов.
Постановка задачи:
Найти значение функции y(x) при заданном x. Вычислить y1=[y], где [ ] - целая часть и
y2={y±0.5}, где { } – округленная часть.
Методические указания:
Функции, отсутствующие в стандартном Паскале, следует выразить через имеющиеся.
ВАРИАНТЫ ЗАДАНИЯ
¹ Функция
варианта Y
Y= 2 −x x+ x
1
2 Y= e x − sin x +8 cosx
3 -x+1

3 Y= x −1 +sin x

4 Y = xcosx + sin3x + 2x
5 x +ex
y= + ln( 5 − x )
(5 − x ) 2
6 y = cos 2
2 x + sin
x
2
7 tgx + e 2
y=
( x + 8) ⋅ ln( x 2 − 6 ⋅ x + 4)
8 sin x 2 + cos 2 x
y= 2
e ( 2 x −5)
9 6 ln( e x +1 + 2e x ⋅ cos x )
y=
ln( x − e x +1 )
10
2
 ex 
y = l n ( x − x ) ⋅ (x −
2
) 
 s i nx ⋅ ( x − 8) 
11 x
y = sin 2 − cos 2 x 2
2
12 x
y = cos 2 − sin x + y
4
13 y = 5 x − 5 ⋅ (arcsin x + ln 2 | x |)
14
 3 e3 
y = l n ( x − x ) ⋅ (5 +
x
) 
 c o x
s ⋅ ( x + 2 ) 
15 y = 5 x ( arctg x + cos 2 x)
16 ctgx − e 2
y=
x3 ⋅ | x 2 + 6 ⋅ x + 4 |
17 arcctg x 3
y= + sin x 3
x

3
ЛАБОРАТОРНАЯ РАБОТА ¹ 3
УСЛОВНЫЙ ОПЕРАТОР IF.
ОПЕРАТОР ВЫБОРА CASE
Цель задания:
1. Приобретение навыков в использовании условного оператора и оператора выбора.
2. Задание логических выражений при определении условия задачи.
3. Использование составного оператора (Begin … End).

ВАРИАНТЫ ЗАДАНИЯ
1. Вводится символ с клавиатуры. Определить является ли символ буквой
латинского алфавита (большой или маленькой, гласная или согласная), цифра ли
или какой-то другой символ.

2. Дана точка (x,y) на плоскости и окружность с центром в точке С(a,b) и радиусом R.


Определить, где находится точка относительно окружности (внутри, вне, на).

3. Даны два времени T1(H1:M1:S1) и T2(H2:M2:S2). Определить разницу часов,


минут и секунд (T2>T1)

4. Составьте программу ввода четырех символьных переменных CH1, CH2, CH3,


CH4 и:
1) определите количество нулей среди этих символов;
2) замените символы пробела ' ' на символы 'Z';
3) выведите на печать те символы из введенных, которые являются цифрами.

5. Написать программу, которая считывает два действительных числа a,b. Затем


пользователю задается вопрос: Что желаете вычислить? Среднеарифметическое
(1) или среднегеометрическое(2). Если ответ 1, то вычисляется и печатается
среднеарифметическое этих двух чисел, если 2 – среднегеометрическое (только
если числа положительные, иначе выведите сообщение об ошибке). Если ответ
другой выводится соответствующее сообщение.

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

7. Задать с помощью условного оператора следующие действия:


а) меньшее из двух значений переменных вещественного типа X и Y заменить нулем,
а в случае их равенства – заменить оба нулями;
б) наибольшее из трех различных значений переменного типа X, Y и Z уменьшить на
0,3.
в) поменять X, Y, Z следующим образом X<Y<Z

8. Даны три переменные: X, Y, Z. Если их значения упорядочены по возрастанию


или убыванию, то удвоить их; в противном случае заменить значение каждой
переменной на противоположное.

9. Найти остаток от деления целой части значения функции z = [ln ( x 2 + ab )] , где [ ] –


целая часть от z, на 7 и в зависимости от его величины вывести сообщение об
одном из дней недели пронумеровав их от 0 до 6.

10. Найти остаток от деления целого выражения


К = А * (В + С)
на 5 и вывести сообщение о величине остатка. Если остаток равен нулю, то
значение переменной К остается без изменений, если 1 или 3 уменьшим на

4
величину остатка, если 2 увеличить на величину остатка, если 4 – то возвести К в
квадрат. Новое значение K также вывести на экран.

11.Поменять местами значения целых переменных А, В, С таким образом, чтобы


оказалось A≥ B≥ C.

12. Составьте программу вычисления площадей различных геометрических фигур:

 P ∗ l , k = 1,
 P∗ h
 ,k = 2
 2

S =  2π R h, k = 3
 π R l, k = 4
 2
 4π R , k = 5
 π R(2h + α ),k = 6

13.Написать программу, которая считывает два действительных числа a,b. Затем


пользователю задается вопрос: Что желаете вычислить? Среднеарифметическое
(1) или среднегеометрическое(2). Если ответ 1, то вычисляется и печатается
среднеарифметическое этих двух чисел, если 2 – среднегеометрическое (только
если числа положительные, иначе выведите сообщение об ошибке). Если ответ
другой выводится соответствующее сообщение.

14. Дано целое число, лежащее в диапазоне от –999 до 999. Вывести строку —
словесное описание данного числа вида "отрицательное двузначное число",
"нулевое число", "положительное однозначное число" и т.д

15. Вычислить:
 x 2 + 1, x < 0

f ( x) =  x − 2.1, x > π / 2
 s i xn,0 ≤ x ≤ π / 2

16. Создать меню:
1 – вычисление площади участка;
2 – вычисление периметра участка;
3 – выход.

17. Определить, какая из двух точек – M1(x1,y1) или M2(x2,y2)- расположена ближе к началу
координат. Вывести на экран дисплея координаты этой точки.

5
ЛАБОРАТОРНАЯ РАБОТА ¹4

Решение уравнений и неравенств.


Использование условных операторов.

Цель задания:
1. Получение навыков в использовании условного оператора.
2. Использование условных выражений при проверки решений неравенств.

Методические указания:
Программа должна правильно выполняться для любого набора исходных данных.
Правильность выполнения любой ветви программы организовать через тестирование.

ВАРИАНТЫ ЗАДАНИЯ

№ Неравенства и № Неравенства и системы


системы неравенств
неравенств
1 ax2 + c ≤ 0 9 ax2 + bx > 0
2 ax2 + bx + c ≤ 0 10 ax2 + c < 0
3 ax2 + c > 0 11 ax2 + c > 0
4 ax2 + c ≥ 0 12 ax2 + c = 0
5 ax2 + bx + c > 0 13 ax2 + bx = 0
6 ax2 + bx + c ≥ 0 14 ax2 + bx + c ≠ 0
7 ax2 + bx < 0 15
8 ax2 + bx + c < 0 16

6
ЛАБОРАТОРНАЯ РАБОТА ¹5

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


Цель задания:
1. Организация циклических алгоритмов на основе оператора цикла с параметрами (FOR).
2. Использование стандартных встроенных функций.

Постановка задачи:
Составить программу, которая вычисляет значение функции y=f(x) в равноотстоящих
точках на отрезке [a,b]: x = a, a+h, a+2h, ...., a+(m-1)h,
h = (b-a)/m и распечатывает результат на экране в виде таблицы в три колонки
N X F(X)

ВАРИАНТЫ ЗАДАНИЯ
¹ Функция A B M
Варианта f(x)
1 x – sinx 0 π /2 10
2 sinx π /4 π /2 15
3 сosx π /3 2π /3 20
4 tgx 0 π /4 10
5 ctgx π /4 π /2 15
6 arctgx + x2 2 8 20
7 x3∗cosx π /4 3π /2 10
8 arctgx 2 7 15
9 sinx-cosx 0 π /2 20
10 x⋅ sinx 0 3π 10
11 sin(1/x) π /8 2/π 15
12 cos(1/x) π /4 4/π 20
13 sinx2 π /6 2π /3 10
14 cosx2 π /3 3π /2 15
15 sinx+tgx 0 π /4 20
16 cosx+ctgx π /4 π /2 10

7
ЛАБОРАТОРНАЯ РАБОТА ¹ 6
Организация циклов в программе.
Цель задания:
1. Использование операторов цикла с параметрами и условием.
2. Применение вложенных циклов.
ВАРИАНТЫ ЗАДАНИЯ
1. Написать программу для разложения числа n на простые множители.
2. На интервале (1000;9999) найти все простые числа, каждое из которых обладает тем
свойством, что сумма первой и второй цифры записи этого числа равна сумме третьей и
четвертой цифр.
3. Задано натуральное число N представить с помощью римских цифр. При этом 500 – D,
100 – C, 50 – L, 10 – X, 5 – V, 1 – I.
4. Дано натуральное число n. Определить сколько различных цифр встречается в его
десятичной записи.
5. Задано натуральное число N, представить в виде суммы различных чисел Фибоначчи.
6. Сгенерировать число Фибоначчи, не превосходящее заранее заданного натурального
числа N.
7. Задано натуральное число N. Преобразовать положительные десятичные числа в
двоичную систему счисления.
8. Заданы 3 числа, обозначающие число, месяц и год. Определите номер этого дня с
начала года.
9. Натуральное число называется палиндромом, если его запись читается одинакового с
начала и с конца (например, 1, 393, 4884). Найти все меньшие 100 натуральные числа,
которые при возведении в квадрат дают палиндром.
10. Построить таблицу всех различных разбиений заданного натурального числа n на сумму
трех натуральных слагаемых (разбиения, отличающиеся лишь порядком слагаемых,
различными не считаются).
11. Написать программу, которая находит и выводит на печать все четырехзначные числа
abcd, для которых выполняются следующие условия:
1) a, b, c, d - разные цифры; 2) ab-cd=a+b+c+d
12. Доказать, что любую целочисленную денежную сумму большую 7 рублей можно
выплатить без сдачи трешками и пятерками. *целочисленная арифметика*
13. Найти все трехзначные числа для которых: abc = a3 + b3 + c3
14. Дано натуральное число К: напечатать к-ую цифру последовательности 12 22 32 42 52 62 ...
в которой присутствуют квадраты всех натуральных чисел
15. Даны два числа А и В. Найти их НОК.
16. Дано натуральное число N. Вычислить произведение первых N сомножителей.
(2/1)*(2/3)*(4/3)*(4/5)/….
17. Дано натуральное число К: напечатать к-ую цифру последовательности 1 1 2 3 5 8 13 21
..., состоящая из чисел Фибоначчи.

8
ЛАБОРАТОРНАЯ РАБОТА ¹ 7
Процедуры и функции
Цель задания:
1. Использование процедур и функции в программе.
2. Объявление параметров по значению и по ссылке.

ВАРИАНТЫ ЗАДАНИЯ
1. Даны три натуральных числа. Определить их НОД.

2. Найдите целые числа-палиндромы, которые при возведении в квадрат тоже дают


палиндромы

3. Вычислить корни системы из квадратных уравнений:

 x 2 + a x+ b = 0
 2
 c y − d x− f = 0
4. Два простых числа называются «близнецами», если они отличаются друг от друга на 2
(например, 41 и 43). Напечатать все пары на отрезке [n, 2n], n>2 (используя процедуру).

5. Назовем шестизначное число «счастливым», если у него сумма первых трех цифр равна
сумме последних трех цифр. Написать функцию определяющую количество «счастливых»
шестизначных чисел у которых суммы трех цифр равны заданному N.

6. Написать программу, используя функции для определения следующего меню:


1 – ввод числа;
2 – число делителей;
3 – обратное число;
4 – простое число или нет;
5 – выход.

7. Напечатать функцию для вычисления корней квадратного уравнения (если корни есть – она
возвращает TRUE, если нет - FALSE).

8. Два натуральных числа называются «дружественными», если каждое из них равно сумме
всех делителей другого, за исключением его самого (например, 220 и 284). Сделать
процедуру, печатающую все пары «дружественных» чисел не превосходящие заданного N.

9. Написать программу, используя функции для определения следующего меню:


1 – ввод числа;
2 – возведение числа N в заданную степень;
3 – нахождение N!;
4 – выводит делители числа N;
5 – выход.

10. Написать функцию, которая определяет если заданное число N – число Фибоначчи и
возвращает в любом случае число Фибоначчи, не превышающее число N.

11. Даны 2 натуральных числа m и n. Проверить есть ли в записи числа m цифры, одинаковые с
цифрами в записи числа n

12. Написать программу, используя функции для определения следующего меню:


1 – ввод числа;
2 – сумму цифр числа;
3 – число палиндром или нет;
4 – совершенное или нет;
9
5 – выход.

13. Написать функцию, которая возвращает результат умножения дробей а/b на c/d.

14. Напишите функцию, которая возвращает наименьший делитель целого числа n>0,
отличный от 1.

15. Написать функцию возвращающую расстояние между точками А(х 1, y1) и В(х2, y2) и
возвращает точку середины С(х, y).

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


f( x , y ) + f ( a , b) + f ( x +1,−y ) + f ( x − y , x ) + f ( x +y , a +b) в пяти различных
точках, где

 u + 2t , u ≥ 0

f (u , t ) =  u + t , u ≤ − 1
 u2 − 2t + 1,− 1 ≤ u ≤ 0

а) x=2,31 y=4,2 a=3,1 b=0,02
b) x=-4,21 y=-31,2 a=1,2 b=-3,2
c) x=0,34 y=17,2 a=-4,6 b=-0,44
d) x=-14,2 y=0,32 a=7,2 b=4,7

10
ЛАБОРАТОРНАЯ РАБОТА ¹ 8

Обработка одномерных массивов.


Цель задания:
1. Использование и обработка одномерных массивов.
2.

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

Методические указания:
Исходные данные должны включать и положительные числа, и отрицательные, и нули.

ВАРИАНТЫ ЗАДАНИЯ
1. Дан массив натуральных чисел. Составить программу, которая выполняет сортировку
его элементов следующим образом: сначала идут элементы, кратные числу K (дают 0 в
остатке от деления на K), затем те, которые при делении на K дают в остатке 1, и т.д.
Последнюю группу составляют числа, остаток от деления на K которых равен K-1.

2. В символьном массиве хранятся фамилии и инициалы (ФИО) учеников класса.


Требуется напечатать список класса с указанием для каждого ученика количества его
однофамильцев.

3. Введите массив (не более 20) и определите, есть ли в нем элементы с одинаковыми
значениями.

4. Программа просит ввести ряд чисел и


1). Находит максимальный и минимальный элементы массива
2). Упорядочивает массив по возрастанию
3). Находит сумму элементов массива
4). Выводит только положительные элементы
Вывод осуществляется на экран

5. Программа просит ввести ряд чисел и


1). Находит номер максимального элемента массива и меняет максимальный
элемент с первым
2). Упорядочивает массив по убыванию
3). Обнуляет все положительные элементы, стоящие перед максимальным
4). Находит среднее арифметическое элементов массива
Вывод осуществляется на экран

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


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

7. Даны координаты N точек на плоскости (x1,x2),..,(xN,xN) N<=30. Найти номера пары


точек, расстояние между которыми наибольшее (считать, что такая пара единственная).

8. Задан целочисленный массив с количеством элементов N. Есть ли среди элементов


массива простые числа? Если да, то вывести их номера

9. Дан числовой массив A(N). Определить число соседств двух положительных чисел.

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

11. В заданном одномерном массиве поменять местами соседние элементы, стоящие на


четных местах, с элементами, стоящими на нечетных местах

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


последовательности X1..Xn, все положительные элементы заменяет на их квадраты,
а отрицательные - на их кубы.

13. В массиве найти наибольший и наименьший элемент, а затем поменять их местами.

14. Дан массив чисел. Найти сумму отрицательных элементов массива и записать ее на
место наименьшего элемента, а также сумму положительны элементов массива и
записать ее на место наибольшего элемента массива.

15. Напишите функцию, которая рассчитывает значение полинома степени N.


Коэффициенты полинома заданы массивом вещественных чисел. Использовать схему
Горнера.
16.

12
ЛАБОРАТОРНАЯ РАБОТА ¹ 9

Обработка одномерных массивов. Методы сортировки.


Цель задания:
1. Использование одномерных массивов.
2. Обработка алгоритмов сортировки.

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

Методические указания:
Исходные данные должны включать и положительные числа, и отрицательные, и нули.
ВАРИАНТЫ ЗАДАНИЯ
1. Используя пузырьковый метод упорядочить по убыванию массив.
2. Используя метод минимального элемента упорядочить по неубыванию массив.
3. Используя метод простого выбора упорядочить по невозрастанию массив.
4. Используя пузырьковый метод упорядочить по убыванию массив.
5. Дан массив целых чисел. Записать в этот же массив сначала все отрицательные
числа и нули, затем все положительные, сохранив порядок их следования.
6. Дан массив целых чисел. Записать в этот же массив сначала все положительные
числа и нули, затем все отрицательные числа, сохранив порядок их следования.
7. Дан массив целых чисел. Записать в этот же массив сначала все отрицательные
числа, затем все положительные числа и нули, сохранив порядок их следования.
8. Дан массив целых чисел. Записать в этот же массив сначала все положительные
числа, затем все отрицательные числа и нули, сохранив порядок их следования.
9. В массиве найти наибольший элемент и поменять его местами с первым элементом.
10. В массиве найти наименьший элемент и поменять его местами с последним
элементом.
11. Найти сумму и число неотрицательных элементов заданного массива.
12. Найти среднее геометрическое элементов заданного массива и записать ее на место
наименьшего элемента.
13. Найти сумму квадратов отрицательных элементов заданного массива и записать ее
на место наибольшего элемента массива.
14. Дан массив целых чисел. Проверить, если вектор упорядочен строго по убыванию.
15. Даны целые числа A1 ... An. Получить количество чисел, которые входят в
последовательность только один раз. Вывести список таких чисел.

13
ЛАБОРАТОРНАЯ РАБОТА ¹ 10

Обработка двумерных массивов. Методы сортировки.


Цель задания:
1. Использование и обработка двумерных массивов.
2. Обработка алгоритмов сортировки.

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

Методические указания:
Исходные данные должны включать и положительные числа, и отрицательные, и нули.

ВАРИАНТЫ ЗАДАНИЯ
1. Дан двумерный массив 5× 3. Упорядочить массив по неубыванию элементов первого
столбца.
2. Дан двумерный массив 4× 5. Упорядочить массив по невозрастанию элементов
последнего столбца.
3. Дан двумерный массив 3× 4. Упорядочить массив по невозрастанию элементов
последней строки.
4. Дан двумерный массив 5× 3. Упорядочить массив по неубыванию элементов первого
строки.
5. Дан двумерный массив 5× 4. Поменять местами строки, содержащие минимальный и
максимальный элементы.
6. Дан двумерный массив 4× 4. Добавить 5-ю строку, элементы которой это среднее
арифметическое элементов этого же столбца по другим строках.
7. Дан двумерный массив 4× 4. Добавить 5-й столбец, элементы которого это среднее
арифметическое элементов этой же строки по другим столбцам.
8. Дан двумерный массив 4× 4. Добавить 5-ю строку, элементы которой это среднее
геометрическое элементов этого же столбца по другим строках.
9. Дан двумерный массив 4× 4. Добавить 5-ю строку, элементы которой это сумма
четных элементов этого же столбца по другим строках.
10. Дан двумерный массив 4× 4. Добавить 5-ю строку, элементы которой это сумма
нечетных элементов этого же столбца по другим строках.
11. Дан двумерный массив 4× 4. Добавить 5-ю строку, элементы которой это число
нечетных элементов этого же столбца по другим строках.
12. Дан двумерный массив 4× 4. Найти в каждой строке наибольший элемент а затем
поменять его местами с элементом главной диагонали.
13. Дан двумерный массив 5× 4. Найти строки содержащие наибольший и наименьший
элемент а затем эти строки поменять местами.
14. Дан двумерный массив 4× 5. Записать в этот же массив сначала все отрицательные
числа и нули, затем все положительные, сохранив порядок их следования.
15. Дан двумерный массив 4× 4. Вычислить сумму положительных элементов
находящихся под главной диагональю
16. Дан двумерный массив 4× 5. Найти в каждой строке наибольший и наименьший
элемент а затем поменять их местами.

14
ЛАБОРАТОРНАЯ РАБОТА ¹ 11
Обработка двумерных массивов.
Цель задания:
1. Использование и обработка двумерных массивов.

ВАРИАНТЫ ЗАДАНИЯ
1) Дана матрица А(n, m) из целых чисел. Замените местами первую строку со строкой
в которой находится первый нулевой элемент.

2) Дана матрица А(n, m) из целых чисел. Замените столбцы матрицы следующим


образом: последний, предпоследний, …, второй, первый.

3) Дана матрица А(n, m) из целых чисел. Определите если в ней существует строка в
которой больше положительных элементов чем отрицательных.

4) Дана матрица А(n, m) из целых чисел. Определите пары индексов (i, j) для
которых суммы соседних элементов сверху, слева, снизу, справа для А[i, j]
является положительной.

5) Дана матрица А(n, m) из целых чисел. Определите пары индексов (i, j) для
которых суммы соседних элементов сверху, слева, снизу, справа для А[i, j]
является максимальной.

6) Дана двоичная матрица А(n, m) (в ней только нули и единицы) и предполагается


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

7) Выведите на экран арифметический квадрат. В арифметическом квадрате все


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

8) Элемент матрицы назовем седловой точкой, если он является наименьшим в


своей строке и одновременно наибольшим в своем столбце или, наоборот,
является наибольшим в своей строке и наименьшим в своем столбце. Для
заданной матрицы А(n, m) напечатать индексы всех ее седловых точек.

9) Создать матрицу А из n строк и n столбцов следующим образом:


Например для n = 6

1 3 4 10 11 21
2 5 9 12 20 22
6 8 13 19 23 30
7 14 18 24 29 31
15 17 25 28 32 35
16 26 27 33 34 36

10) Дана матрица А из целых чисел. Вставьте перед всеми столбцами в которых нет
нулевых элементов второй столбец.

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

15
12) Даны координаты позиции шахматной королевы на шахматной доске. В матрице
8х8 укажите единичками позиции недоступные для королевы и нулями все
остальные.

13) Дана матрица А(n, m) и вектор V из q элементов. Выведите на экран номера строк
из матрицы равные вектору V. Если не существует таких строк, добавить вектор к
низу матрицы и вывести на экран ее.

14) Напишите программу которая проходит по спирали матрицу А. Например:


1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

15) Дан вектор Х. Создать квадратную матрицу максимально возможного порядка, так
чтобы элементы матрицы были расположены в следующем порядке

X[1] X[2] X[4] X[7] …


X[3] X[5] X[8] …
X[6] X[9] …
X[10] …

16) Пусть А - двумерный массив целых чисел размерности N*N. Ввести его как
типизированную константу и найти:
а) максимальный по модулю элемент массива, его индексы
б) среднее геометрическое положительных элементов
в) число строк с отрицательной суммой элементов
г) минимальный из элементов, лежащих на главной диагонали и двух смежных с ней
17) Дан вектор Х. Создать квадратную матрицу максимально возможного порядка, так
чтобы элементы матрицы были расположены в следующем порядке

X[1] X[2] X[5] X[10] …


X[4] X[3] X[6] X[11] …
X[9] X[8] X[7] X[12] …
X[16] X[15] X[14] X[13] …

16
ЛАБОРАТОРНАЯ РАБОТА ¹ 12

Процедуры и функции. Массивы

Цель задания:
1. Использование функций и процедур для обработки массивов в программе.
2. Передача параметров по значению и по ссылке.

Постановка задачи:
1. Вывести исходную информацию и результат.
2. Ввод и вывод исходной информации и вывод результатов организовать в виде
процедуры. Вычисления согласно варианты организовать в виде функции.

ВАРИАНТЫ ЗАДАНИЯ
1. Найти количество точек, находящихся внутри круга с радиусом r и центром в
основании координат; координаты заданы через массивы X(15), Y(15).
2. Определить периметр треугольников, заданными через их вершины (xA, xB, xC),
(yA, yB, yC).
3. Найти количество точек, находящихся внутри круга с радиусом R и центром в точке
(1;1); координаты заданы через массивы X(20), Y(20).
4. Вычислить z= (V1+V2+V3)/3, где V1, V2, V3 - объемы шаров с радиусами
соответственно R1, R2, R3.
5. Вычислить сумму положительных элементов массивов X(N), Y(N), Z(N).
6. Вычислить среднее арифметическое положительных элементов массивов A(N1),
B(N2), C(N3).
7. Вычислить сумму и количество элементов матриц X(4× 6) и Y(8× 5),
удовлетворяющих условиям 0≤ Xij≤ 10 и –10≤ Yij≤ 5.
8. Определить количество положительных элементов матриц A(6×8), B(4 ×5),
которые удовлетворяют условию 0≤ Aij≤ 1 и 0≤ Bij≤ 1.
9. Вычислить Z=(Xm1+Xm2)/2, где xm1 и xm2 - минимальные элементы массивов
X1(10), X2(15).
10. Вычислить сумму элементов главной диагонали матриц A(N× N), B(M× M).
11. Вычислить Z=(S1+S2)/2, где S1 – сумма положительных элементов массива X(10), S2
– сумма отрицательных элементов массива Y(15).
12. Вычислить количество нулевых элементов матриц A(N× N), B(M× M).
13. Вычислить сумму элементов матрицы А(5×5) и B(4×4), удовлетворяющих условиям
2≤ Аij≤ 5 и 0≤ Bij≤ 10.
14. Определить количество положительных элементов до первого отрицательного из
массивов X(10), Y(15), Z(N).
15. Определить количество отрицательных элементов до первого положительного из
массивов X(18), Y(13), Z(N).
16. Вычислить корни системы из квадратных уравнений:

 x 2 + a x+ b = 0
 2
 c y − d x− f = 0

17
ЛАБОРАТОРНАЯ РАБОТА ¹ 13

Обработка данных типа STRING (строковых типа данных).


Цель задания:
1. Обработка данных типа STRING.
2. Использование стандартных процедур и функций при обработке данных типа STRING.

Методические указания:
1. Изучить :
- правила записи данных строкового типа;
- процедуры ввода и просмотра текстовых данных;
- процедуры обработки текстовых данных;
2. Составить алгоритм решения задачи согласно варианту.
3. Составить программу согласно алгоритму.

ВАРИАНТЫ ЗАДАНИЯ
1. Даны натуральное число n и символы S1..Sn, среди которых есть точки.
Напечатать все символы между первой и второй точками. Если второй точки
нет, то получить все символы, расположенные после единственной точки.

2. Написать целое число от 1 до 1999 римскими цифрами.

3. Напишите программу, которая вводит с клавиатуры строку и подсчитывает


количество символов в последнем слове (слова - группы символов, разделенные
пробелами).

4. Для встречающихся в заданном тексте пар рядом расположенных одинаковых


символов указать, сколько раз встречается каждое из таких двухбуквенных
сочетаний

5. Из текста выбрать числа и записать в массив Х. Количество чисел не более 10.

6. Напишите программу, которая вводит с клавиатуры строку и цепочку символов


(подстроку) и подсчитывает число появлений цепочки символов в строке.

7. Напишите программу, которая вводит две строки и проверяет, является ли первая


строка перевертышем второй.

8. Сколько слов содержатся в заданном тексте ?

9. Дано число от 1 до 99. Необходимо вывести его словами.

10. Отредактировать предложение, удаляя из него лишние пробелы, оставляя только по


одному пробелу между словами.

11. Напишите программу, которая вводит текстовую строку из букв латинского


алфавита и проверяет, расположены ли символы в алфавитном порядке.

12. Составить программу, которая по введённой фразе из латинских букв выводит


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

18
13. Произвольный русский текст содержит не более 255 символов. Написать, какие
буквы, и сколько раз каждая встречается в этом тексте. Ответ должен приводиться в
грамматически правильной форме; например, 'а' - 25 раз, 'к' - 3 раза и т.д.

14. Найти самое длинное симметричное слово заданного предложения, например АККА.

15. Дана строка из предложений разделенными точками. Сделать строку, где каждое
предложение начинается с большой буквы, а остальные с маленькой.

19
ЛАБОРАТОРНАЯ РАБОТА ¹ 14
Записи (RECORD).

1. Используя тип данных Запись и пологая, что социальная группа состоит максимум
из 200 человек, о которых известно (фамилия, возраст, рост, пол, семейное положение)
выполнить статистические вычисления и вывести следующую информацию:
- Процент людей старше 18 лет
- Средний рост мужчин в возрасте от 18 до 30 лет
- Процент женатых людей
2. Определите тип запись для описания геометрической фигуры на плоскости. Запись
содержит тип фигуры для:
- окружности с радиусом R
- прямоугольника с длинами сторон n и m
- треугольника с длинами сторон a, b, c
Разработать программу, которая записывает в таблицу характеристики чисел
геометрических фигур со структурой описанной выше и выводит их площади.
3. Определите тип запись для описания комплексных чисел. Разработайте
программу, которая выполняет операции (сложение, вычитание, вычисление модуля) над
парами комплексных чисел, содержащихся в созданной таблице.
4. В туристическое агентство обратился человек, который желает уехать в
путешествие. Человек располагает суммой денег S и имеет возможность провести в
поездке N дней. Фирма предлагает список существующих путешествий в который
включены: стоимость путешествия, продолжительность и количество человек, которые
путешествовали с такими условиями. Предложите клиенту подходящий список по данным:
цене и количеству дней.
5. В агентстве по трудоустройству есть список свободных рабочих мест со
следующими требованиями: специальность, образование, стаж работы, допустимый
возраст (Vmin ..Vmax). Требуется вывести подходящие свободные рабочие места для
персоны с его данными.
6. О студентах группы известно следующая информация:: порядковый номер,
фамилия, дата рождения, год поступления и средний балл. Вывести список студентов в
порядке возрастания по дате рождения.
7. О студентах группы известно следующая информация:: порядковый номер,
фамилия, дата рождения, год поступления и средний балл. Вывести студентов фамилия
которых начинается на букву из указанного интервала.
8. О друзьях одного человека известна информация: фамилия, имя, дата рождения,
знак зодиака. Вывести список друзей рожденных под указанным знаком зодиака.
9. Информация о товарах со склада включает: название товара, цена, фирма
производителя, количество. Определите, если на складе существует товар, название
которого вводится с клавиатуры. Вывести названия товаров, которые хранятся на складе в
минимальном количестве.
10. Структура Аэропорта построена из следующих полей:
- пункт назначения;
- номер полета;
- тип самолета;
Сформируйте таблицу с информацией о n полетах и вывести пункт назначения и
номер полета по типу указанного самолета.
11. Опишите структуру Worker, сформированная из:
- фамилия работника;
- занимаемый пост;
- год приема на работу
Составьте таблицу из данных о служащих фирмы. Вывести информацию о служащих
стаж которых превышает значение указанное с клавиатуры.
12. Составьте таблицу с информацией о железнодорожном вокзале со следующей
структурой:
ПОЕЗД
- пункт назначения;
- номер поезда;
20
- время отправления (часы, минуты);
Отсортируйте и выведете информацию в порядке возрастания по времени
отправления.
13. Опишите структуру Студент со следующими полями:
- фамилия;
- номер группы;
- успеваемость (3 оценки);
Запишите в таблицу данные о n студентах. Вывести информацию о студентах,
которые имеют хотя одну оценку 4.
14. Меню ресторана содержит информацию о блюде со следующей структурой:
- название;
- цена;
- количество калорий;
Вывести информацию о блюдах с минимальным количеством калорий.
15. В компьютере гостиницы записана следующая информация о проживающих
людях: фамилия, страна из которой приехал, возраст и цель поездки. Вычислить
количество людей приезжих из каждой страны.
16.Опишите структуру Студент со следующими полями:
- фамилия;
- номер группы;
- успеваемость (4 оценки);
Запишите в таблицу данные о n студентах. Вывести информацию о студентах у
которых все оценки >7.
17. Список служащих фирмы содержит следующую информацию: Фамилия,
занимаемый пост, зарплата, размер премии (n % от зарплаты) и размер налога (если
сумма: зарплата + премия < 2000, 13% иначе 20%). Вывести список с суммами служащих
фирмы в алфавитном порядке по фамилии.

21
ЛАБОРАТОРНАЯ РАБОТА ¹ 15
Работа с множественными типами данных.
Цель задания:
Присвоение значений данным множественного типа и операции над ними.

Методические указания:
Программа должна работать для произвольного набора символов.

1. Дана строка символов и одно слово. Определите если в строку включена хотя
бы одна буква из слова.
2. Дано натуральное число N<=255. Вывести все числа меньше N, у которых
цифра высшего порядка 1 или 2.
3. Дано натуральное число W. Вывести все цифры не принадлежащие описанию
данного числа.
4. Дано множество X чисел из интервала 5..100. Необходимо разделить данное
множество на два других: Y- подмножество простых чисел и Z – подмножество составных
чисел.
5. С клавиатуры вводится строка символов. Создайте множество из элементов
строки, являющиеся буквами из промежутка ‘A’..’Z’ и знаков пунктуации.
6. С клавиатуры вводится имя. Определите, если введенное имя написано
правильно (состоит только из больших или маленьких букв)
7. С клавиатуры считывается n слов. Вывести общие символы этих слов
8. Создайте множество сформированное из чисел интервала 1..100. Из данного
множества создайте подмножество четных элементов.
9. С клавиатуры заполняется множество элементами из интервала 100..200.
Проверьте, если множество содержит значения кратные 6.
10. С клавиатуры вводится вектор из натуральных чисел, составленных максимум
из двух цифр. Определите сколько разных значений было введено.
11. Даны два множества M и N степень которых равна 10 и содержат элементы из
интервала 1..100. Из данных множеств создайте два подмножества M1- подмножество
элементов из M и N, кратные 3 и N1- подмножество элементов из M и N, кратные 2.
12. Дано натуральное число X. Определите количество различных цифр данного
числа.
13. Вводится строка символов, составленная из строчных латинских букв.
Определите сколько гласных и согласных букв.
14. Пусть V вектор из n элементов принадлежащие интервалу 1..255. Создайте
множество из элементов вектора с четных позиций.
15. Постройте множество степени n, элементами которого являются числа из
интервала 100..200. создайте множество Z содержащее элементы, представляющие целую
часть от деления на 5 элементов начального множества. Вывести оба множества.
16. С клавиатуры вводятся 2 числа из интервала 1..255. Вывести все цифры,
которые отличают первое число от второго.
17. Сформируйте три множества степени 10 с элементами из интервала 1..100.
Создайте новое множество Y= (X 1 X 2 )X 3 . Вывести созданное множество.

22
ЛАБОРАТОРНАЯ РАБОТА ¹ 16

Рекурсия
Цель задания: Использование рекурсивных процедур и функций

1. Напишите рекурсивную функцию, определяющую НОД 2-х целых чисел a и b.


2. Напишите рекурсивную функцию для конверсии целого числа в строку символов.
3. Напишите рекурсивную функцию, которая определяет является ли число -числом
палиндромом.
4. Напишите рекурсивную функцию sim(s,i,j) которая определяет является ли
симметричным подстрока строки s начинающаяся с позиции i и оканчивающаяся
позицией j.
5. Const
n = 40;
Type
Vector = array[1..n] of real;
Напишите рекурсивную функцию min(x) определяющую минимальный элемент вектора
x, используя вспомогательную рекурсивную функцию min1(x), которая определяет
минимальный из оставшихся элементов вектора x начинающихся с позиции k.
6. Напишите рекурсивную функцию digits, которая определяет количество цифр в строке
введенной с клавиатуры (текст заканчивается точкой).
7. Напишите подпрограмму, которая выводит на экран значение функции y(x) (выберите
самостоятельно) в n точках отрезка [a, b], где расстояние между этими точками
одинаково.
8. С клавиатуры дается текст. Создайте функцию проверяющую если текст соответствует
формуле следующего вида:
формула> ::= <цифра> | ( <формула > <знак> <формула> )
<знак> ::= + | - | *
<цифра> ::= 0|1|2|3|4|5|6|7|8|9
9. Напишите рекурсивную функцию, которая возвращает значение true, если строка
символов s соответствует следующему выражению:
<число> ::= <цифра> | <цифра> {<цифра>}
<знак> ::= + | -
<выражение> ::= <число> | <выражение> <знак> <выражение>
10. С клавиатуры вводится формула следующего вида (символ за символом):
<формула> ::= <цифра> | ( <формула > <знак> <формула> )
<знак> ::= + | - | *
<цифра> ::= 0|1|2|3|4|5|6|7|8|9
Вычислите ее значение.

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


натурального числа (использовать рекурсивную функцию).

12. Напишите рекурсивную подпрограмму, которая выводит на экран разложение числа n на


простые множители.

13. Const
n = 40;
Type
Vector = array[1..n] of real;

23
Напишите рекурсивную функцию, которая вычисляет сумму элементов, находящиеся на
нечетных позициях.

14. Напишите рекурсивную функцию, определяющую является ли данное число –


совершенным числом (сумма делителей числа кроме него самого равна этому числу).

15. Числа Фибоначчи определяются следующим образом:

Найти номер первого числа Фибоначчи, которое больше h.

24
ЛАБОРАТОРНАЯ РАБОТА ¹ 17
Простые Типизированные файлы.

1. Создать и вывести файл из целых чисел, которые составляют ряд Фибоначчи до заданного n.

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


y=x2+xcosx для x от –20 до 20.

3. Создать и вывести файл из четных натуральных чисел, которые не превышают заданного числа
с клавиатуры.

4. Создайте два файла из n целых чисел. Создайте третий файл, представляющий пересечение
данных двух файлов.

5. С клавиатуры вводятся целые числа до ввода 0. Удвоить все элементы файла из интервала 5..10.

6. Создать файл из n действительных чисел. Поменять местами минимальный и максимальный


элементы файла.

7. Даны 2 типизированных файла Name1 и Name2 из действительных чисел, отсортированных в


порядке возрастания. Объединить эти файлы в третий, сохранив порядок возрастания.

8. Создать файл из натуральных чисел. Исключить из файла все простые числа.

9. С клавиатуры вводятся действительные числа до ввода 0. Создайте файл из этих чисел. Замените
в файле все числа кроме первого и последнего на среднее арифметическое предыдущего и
следующего.

10. Создайте файл из n натуральных чисел. Замените все элементы файла с четных позиций на
сумму делителей соответствующего элемента.

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

12. Вводится ряд целых чисел до ввода нуля. Создайте файл из этих чисел. Выведите его на экран и
преобразуйте файл, т.о. чтобы все отрицательные числа были удалены (используйте
дополнительный файл). Выведите получившийся результат.

13. Вводится ряд действительных чисел до ввода нуля. Создайте файл из этих чисел. Выведите его
на экран и преобразуйте файл, т.о. чтобы в нем не было дробных чисел (используйте
дополнительный файл). Выведите получившийся результат.

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

15. Создайте файл из n натуральных чисел. Вычислите количество элементов у которых все цифры
различны.

16. С клавиатуры вводятся символы до ввода символа *. Отсортируйте символы из файла в порядке
возрастания кода ASCII.

17. Число компонент файла f, компонентами которого являются целые числа, кратно 10.
Переписать компоненты файла f в файл g, изменяя порядок чисел в каждой десятке так, чтобы в
начале шли числа, делящиеся на 3, затем числа, дающие при делении на 3 остаток 1, затем
числа, дающие при делении на 3 остаток 2. Порядок самих десяток должен быть сохранен.

25
18.Дан файл f, компоненты которого являются целыми числами. Никакая из компонент файла f не
равна нулю. Числа в файле идут в следующем порядке: десять положительных, десять
отрицательных, десять положительных, десять отрицательных и т.д. Переписать компоненты
файла f в файл g так, чтобы в файле g числа шли в следующем порядке:
a) пять положительных, пять отрицательных, пять положительных, пять отрицательных и т.д.
b) двадцать положительных, двадцать отрицательных, двадцать положительных, двадцать
отрицательных и т.д.
(Предлагается, что число компонент файла f делится на 40)

26
ЛАБОРАТОРНАЯ РАБОТА ¹ 18
Типизированные файлы.
Цель задания:
1. Организация внешних файлов.
2. Использование комбинированных типов данных.
1. В файле Telephon.dat записана информация о абонентах телефонной станции следующей
структуры: фамилия, адрес, номер телефона. Создайте запрос, который позволяет вывести номер
телефона заданного абонента, фамилия которого задается с клавиатуры.
2. Разработайте программу, которая позволяет записать в файл информацию о пациентах
больницы следующей структуры: фамилия, номер палаты, название заболевания. Вывести для
каждой палаты количество пациентов.
3. Администрация гостиницы ведет информацию о комнатах в типизированном файле со
следующей структурой: номер комнаты, состояние(1-занята, 0-свободна). В случае, если она занята
вводится информация о: фамилии, количество дней проживания, оплата. Вывести на экран
количество свободных комнат.
4. Информация о товарах на складе записывается в файл со следующей структурой: название
товара, стоимость одной единицы, количество единиц. Вывести существующие товары и их общую
сумму.
5. В фале „Examen” записывается информация о академическом положении студентов со
следующей структурой: фамилия студента и оценки по пяти экзаменам с указанием дисциплины.
Вывести на экран список студентов, которые остаются на второй год (имеют более 2 отрицательных
оценок).
6. В файле „Examen” записывается информация о академическом положении студентов со
следующей структурой: фамилия студента и оценки по пяти экзаменам с указанием дисциплины.
Вывести на экран список студентов, переходящие на следующий год.
7. О студентах группы известна следующая информация: фамилия, порядковый номер, дата
рождения, год обучения и 4 оценки. Вывести студентов получающие стипендию (средний балл
вводится с клавиатуры).
8.В файл записывается информация о туристических сетях со следующей структурой: место
отъезда, направление, номер маршрута. Вывести самый востребованный маршрут.
9.Для учета работников фирмы используется типизированный файл со структурой: код
работника, фамилия, занимаемая должность, зарплата. Вывести данные работников с минимальной
зарплатой.
10. В файл записывается информация о туристических маршрутах со структурой: место
отъезда, пункт назначения, номер маршрута. Вывести информацию в порядке возрастания по
номеру маршрута.
11. В файл записывается информация о путешествиях обслуженных компанией
АЭРОФЛОТ со следующей структурой: пункт назначения, номер маршрута, тип самолета.
Определите если компания позволяет перелет в пункт назначения введенных с клавиатуры.
12. Результаты полученные учениками лицея по бакалауреату хранится в типизированном
файле со структурой: фамилия, средний балл. Вывести в порядке возрастания среднего балла.
13. В типизированном файле записаны результаты некоторых социальных опросов со
следующей структурой: фамилия человека, возраст, рост, пол, семейное положение. Вывести
процент мужчин в возрасте от 20 до 30 лет.
14. О группе людей известна информация: фамилия, дата рождения. Информация
записывается в типизированный файл. Вывести для каждого человека его знак зодиака под которым
рожден.
15. В типизированный файл записывается информация со структурой: Worker. Фамилия,
Дата рождения, занимаемая должность. Определите если существует люди рожденные по указанной
датой рождения.
16. В типизированный файл информация со следующей структурой: направление, номер
поезда, время отправления. Вывести информацию о поездах которые отправляются в указанное
время.

27
ЛАБОРАТОРНАЯ РАБОТА ¹ 19
Текстовые файлы

1. Задан текстовый файл F, содержащий данные о школьниках (имя, балл). Создать три текстовых
файла G1, G2, G3, каждый из которых содержит треть из всех школьников записанных в F.
Записать поочередно записи из G1 и G2 в G. Вывести содержимое G.
2. Текстовый файл содержит минимум 10 строк вида: фамилия; имя; оценка1; оценка2. Каждая
строка содержит информацию относительно одного школьника. Создать файл с данными о
школьниках задолжников (средний балл ниже 5).
3. Написать программу в которой удаляются все комментарии из программы записанной на языке
Паскаль.
4. Написать программу, которая читает с клавиатуры по три вещественных числа, затем
записывает их в файл IN.TXT. Затем считав эти три числа из файла, являющиеся сторонами
треугольника, записывает в файл OUT.TXT текст – тип треугольника.
5. Напишите программу, которая объединяет два текстовых файла в один (в первый из файлов).
6. Написать программу которая сравнивает построчно содержимое двух файлов. Вывести
несовпадающие строки.
7. Задан текстовый файл с информацией о месте рождения некоторых людей (фамилия; место
рождения). Определить для каждого населенного пункта количество проживающих людей в
этом населенном пункте.
8. Задан текстовый файл. Создать файл с информацией из исходного файла выровненной по
левому краю (предполагается, что в строке максимум находятся 80 символов).
9. Задан текстовый файл. Создать файла с информацией из исходного файла выровненной по
середине (предполагается, что в строке максимум находятся 80 символов).
10. В заданном текстовом файле найдите все слова у которых первая и последняя буква совпадают и
запишите эти слова в другой текстовый файл. Содержимое полученного файла выведите анна
экран.
11. Дан текстовый файл. Преобразуйте его таким образом, чтобы в нем были удалены пустые
строки.
12. Дан текстовый файл, состоящий из слов (разделенные между собой одним пробелом).
Определите количество слов в текстовом файле.
13. Дан текстовый файл. Создать другой файл записав в него перевернутые строки из первого.
14. Дан текстовый файл. Создать другой файл игнорируя из первого все гласные латинского
алфавита.
15. Дано целое число N и текстовый файл. Создать строковый файл, содержащий все слова длины N
из исходного файла (знаки препинания, расположенные в начале и в конце слов, не учитывать).
Если исходный файл не содержит слов длины N, оставить результирующий файл пустым.
16. Дан текстовый файл. Создать символьный файл, содержащий все знаки препинания,
встретившиеся в текстовом файле (в том же порядке).
17. Дан текстовый файл. Вывести последнее слово текста наибольшей длины (с учетом знаков
препинания, расположенных в начале и в конце слов).
18. Дан текстовый файл, каждая строка которого изображает целое число, дополненное слева
и справа несколькими пробелами. Вывести сумму этих чисел и их количество.

28
ЛАБОРАТОРНАЯ РАБОТА N20
ОДНОСВЯЗНЫЕ СПИСКИ
Цель задания: Использование динамической памяти.

ВАРИАНТЫ ЗАДАНИЯ
1. Создайте и выведите список из действительных чисел введенных с клавиатуры (до ввода 0).
1) Вычислите среднее арифметическое положительных элементов списка.
2) Вывести числа в обратном порядке формированию списка.
2. Создайте список Абонент из записей содержащих: имя, возраст и телефон. Необходимо:
1) Вывести на экран информация о первых пяти абонентах;
2) Вывести на экран абонентов с возрастом старше 20 лет.
3. Создайте список Студент из записей содержащих: Имя студента, Курс, Группа, Средний бал.
Вывести список студентов по группам.

4. Создайте список Коорд_Плоскость содержащий координаты (x, y) некоторых точек плоскости.


Вывести на экран точки находящиеся внутри окружности с центром в точке C(a, b) и радиусом
R.

5. Создайте 2 списка из целых чисел, введенных с клавиатуры до ввода 0. Необходимо проверить,


если данные списки равны.

6. Создайте список Абонент в котором содержится информация о именах людей и их телефонах.


Удалите из созданного списка данные абонента, имя которого задается с клавиатуры и вывести
полученный список.

7. Создайте список Коорд_Плоскость содержащий координаты (x, y) некоторых точек плоскости.


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

8. Создайте список Ковер в котором содержится информация о длине и ширине некоторых ковров.
Создайте второй список, содержащий площади каждого ковра и вывести полученный список.

9. Создайте список Книги из записей содержащих: номер книги, название книги, фамилия автора,
год издания, количество экземпляров. Определите, если в списке есть книга, название которой
вводится с клавиатуры.

10. Создайте список Прямоугольник, содержащий длины сторон прямоугольников. Удалить из


списка прямоугольники с максимальным периметром и вывести полученный список.

11. Создайте список Коорд_Плоскость содержащий координаты (x, y) некоторых точек плоскости.
Вывести точки в порядке возрастания координат по оси y.

12. Создайте список Пассажир из записей содержащих: имя пассажира, направление и дата
отправления (день, месяц, год). Вычислить количество пассажиров по дате отправления.

13. Создайте список Студент из записей содержащих: Имя студента, Курс, Группа, Средний бал.
Вывести список студентов в алфавитном порядке по имени студента со средним баллом больше
8.

14. Создайте список Список_людей из записей содержащих: имя, возраст. Вывести на экран имя
человека с наименьшим возрастом.

15. Создайте список Студент из записей содержащих: Имя студента, Группа, 3 оценки. Создайте
список студентов в порядке убывания среднего балла.

29
ЛАБОРАТОРНАЯ РАБОТА N21
Динамические структуры
СПИСКИ

Многочлен P(x) = anxn + an-1xn-1 + ... + a1x + a0 с целыми коэффициентами может быть представлен в
виде списка, для которого если ai = 0, тогда соответствующий узел не будет включен в список.
Например:

p
N an n-1 an-1 ... 1 a1 0 a0 nil

Описать тип данных, соответствующий такому представлению многочленов, и определить


необходимые функции или процедуры для работы с этими списками-многочленами. Напишите
процедуру для ввода многочлена и сделайте задание по варианту:
1. Напишите логическую функцию ravno(p, q), которая проверяет, если два многочлена p и q равны.
2. Напишите функцию znacenie(p, x), которая находит значение многочлена p для целого значения x.
3. Напишите процедуру dif(p, q), которая строит многочлен p – производную многочлена q.
4. Напишите процедуру sloj(p, q, r), которая строит многочлен p – сумму многочленов q и r.
5. Создайте список в котором хранятся натуральные числа x1,x2,…,xn. Удалите из списка все
повторяющиеся элементы, а потом после каждого элемента вставьте его делители.
6. Создайте двусвязный кольцевой список, содержащий не менее 2-х элементов. Необходимо
удалить все элементы, у которых одинаковые «соседи». (первый и последний элементы считать
соседями)
7. Создайте двусвязный список из n целых чисел. Необходимо в конец созданного списка добавить
все его элементы, располагая их в обратном порядке. (например, по списку из элементов 1, 2, 3
требуется построить список из элементов 1,2,3,3,2,1)
8. Даны целые числа A1 ... An. Создать список чисел, которые входят в последовательность только
один раз.
9. В текстовом файле f записана формула следующего вида:
<формула > ::= <цифра> | M(<формула>,<формула>) |
m(<формула>,<формула>)
<цифра> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
где M - функция max, а m – функция min.
Вычислите (результат целое) значение этой формулы (например, M(5,m(6,8)) -> 6).
10. Большое натуральное число может быть представлено в виде списка, в котором каждая ячейка
содержит по одной цифре данного числа. Создайте алгоритм, который позволит сложить 2 больших
числа.
11. Вокруг судьи находятся N игроков. Начиная от игрока m каждый k-ый игрок выбывает.
Напишите программу, которая выведет на экран порядок выбывания игроков (используйте
двусвязный кольцевой список).

30
12. Большое натуральное число может быть представлено в виде списка, в котором каждая ячейка
содержит по одной цифре данного числа. Создайте алгоритм, который позволит сделать вычитание
2 больших числа.
13. Большое натуральное число может быть представлено в виде списка, в котором каждая ячейка
содержит по одной цифре данного числа. Создайте алгоритм, который позволит сделать вычитание
2 больших числа.

31
ЛАБОРАТОРНАЯ РАБОТА N22
Динамические структуры
Стек, Очередь
1. Один ученик одолжил другому ученику книгу, последний в свою очередь (без разрешения
первого третьему и т.д.). Вывести порядок в котором каждый ученик должен вернуть книгу, таким
образом чтобы она дошла до владельца, зная что каждый обязан вернуть книгу тому у которого
одолжил.

2. Даны конечные строки символов составленные из скобок: ( ), { }, [ ]. Строка является


правильной, если она составлена по следующим правилам:
а) пустая строка является правильной;
б) если А является правильной строкой, то (А), [A], {A} – правильные строки;
в) если А и В правильные строки, то АВ – правильная строка.
Например, строки (), [], {}, [()], (({})), ()[]){}({})) – правильные, а строки [), ((], {{, )) –
неправильные.
Напишите программу, которая проверяет является ли строка символов, считанная с клавиатуры –
правильной.

3. Используя очередь решить следующую задачу:


Type
FR = File of Real;
За один просмотр файла F типа FR и без использования дополнительных файлов напечатать
элементы файла F в следующем порядке: сначала все числа, меньшие а, затем все числа из отрезка
[а,b], и наконец – все остальные числа, сохраняя их исходный взаимный порядок в каждой их этих
трех групп (a, b – вводятся с клавиатуры, a<b)

4. Даны 2 непустые очереди. Адреса начала и конца первой равны P1 и P2, а второй – P3 и P4.
Элементы каждой из очередей упорядочены по возрастанию (в направлении от начала очереди к
концу). Объедините очереди в одну с сохранением упорядоченности элементов. Установите
указатель P5 и P6 на начало и конец полученной очереди.

5. Используя стек, проверьте является ли содержимое текстового файла T правильной записью


формулы следующего вида:
<формула>::= <терм> | <терм> + <формула>|<терм> – <формула>
<терм>::=<имя>|(формула)
<имя>::=x|y|z

6. Под «выражением» будем понимать конструкцию следующего вида:


<выражение>::= <терм>|<терм> <знак+–> < выражение>
<знак+ –>::=+|–
<терм>::= <множитель>|<множитель>*<терм>

32
<множитель>::= <число>|<переменная>|<выражение>
<число>::= <цифра>
<переменная>::= <буква >
Постфиксной формой записи выражения aΔb называется запись в которой знак операции размещен
за операндами: abΔ
Примеры:
a – b –> ab–
a*b+с –> ab*с+
Опишите программу, используя работу со стеком, которая вычисляет результат как целое число
значение выражения (без переменных), записанного в постфиксной форме в строке символов S,
введенной с клавиатуры.

7. Под «выражением» будем понимать конструкцию следующего вида:


<выражение>::= <терм>|<терм> <знак+–> < выражение>
<знак+ –>::=+|–
<терм>::= <множитель>|<множитель>*<терм>
<множитель>::= <число>|<переменная>|<выражение>
<число>::= <цифра>
<переменная>::= <буква >
Постфиксной формой записи выражения aΔb называется запись в которой знак операции размещен
за операндами: abΔ
Примеры:
a – b –> ab–
a*b+с –> ab*с+
Напишите программу, которая переводит выражение, записанное в обычной форме в строке
символов S, введенная с клавиатуры, в постфиксную форму и в таком виде записывает его в
результирующую строку POST.

8. Используя очередь решить следующую задачу:


Type
Имя = (Анна, …, Яков);
Дети = array [имя, имя] of Boolean;
Потомки = File of имя;
Считая заданными имя И и массив Д типа дети (Д[x,y]=true, если человек по имени y является
ребенком человека по имени x), записать в файл П типа потомки имена всех потомков человека с
именем И в следующем порядке: сначала – имена всех его детей, затем – всех его внуков, затем –
всех правнуков и т.д.

33
ЛАБОРАТОРНАЯ РАБОТА N23
Динамические структуры
ДЕРЕВЬЯ

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

2. Используя стек или очередь и деревья создайте дерево в узлах которого находятся целые числа и
напишите процедуру, которая выводит данные по уровням: сначала – из корня дерева, затем (слева
направо) – из вершин, дочерних по отношению к корню, затем (также слева направо) – из вершин,
дочерних по отношению к этим вершинам, и т.д. (ТЭД = integer)

3. Используя деревья в узлах которого находятся целые числа, напишите процедуру creare(T, n), где
n – целое положительное число, которая строит дерево T, показанное на рисунке:

4. Используя деревья в узлах которого находятся целые числа, напишите процедуру creare(T, n), где
n – целое положительное число, которая строит дерево T, показанное на рисунке:

5. Создав дерево в узлах которого находятся целые числа, напишите рекурсивную функцию,
которая определяет максимальную длину от корня к листьям.

6. Используя стек или очередь и деревья создайте дерево в узлах которого находятся целые числа и
напишите подпрограмму, которая подсчитывает число вершин на n-ом уровне непустого дерева T
(корень считать вершиной 0-го уровня).

7. Рекурсивно и нерекурсивно опишите логическую функцию equal(T1,T2), проверяющую на


равенство деревья T1 и T2.

8. Для того чтобы сократить время поиска, информация о файлах магнитного диска сохраняется в
памяти компьютера в виде двоичного дерева поиска. Каждому файлу соответствует узел, который
содержит следующие данные:
– имя файла;

34
– дата создания (день, месяц, год);
– время создания (часы, минуты, секунды);
– дина файла.
Напишите программу, которая строит и выдает на экран двоичные деревья поиска, используя
в качестве ключей:
а) имя файла;
б) дату и время создания.

9. Организация турнира «на выбывание» представлена с помощью двоичного дерева. Узлы данного
дерева содержат следующую информацию:
– фамилия (String )
– имя (String)
– дата рождения (день, месяц, год)
– гражданство (string)
Каждому игроку соответствует терминальный узел, а каждому матчу – нетерминальный узел. В
каждый нетерминальный узел записываются данные о победителе матча, в котором участвовали два
игрока из разветвляющихся узлов. Корень содержит данные о победителе матча.
Напишите программу, которая создает и выводит на экран дерево турнира «на выбывание».

10. С клавиатуры вводится арифметическое выражение в форме строки, в котором могут входить
операнды представленные буквой (от a до z), операторами могут быть +, –, *, /, а также могут быть и
скобки. Напишите программу которая проверяет, если выражение записано синтаксически
правильно.

11. По созданному дереву в терминальных узлах которого находятся операции: +, –, *, mod, div, а в
остальных узлах находятся целые числа, которое представляет собой запись арифметического
выражения, определите результат этого выражения.

35
ЛАБОРАТОРНАЯ РАБОТА ¹ 24

Собственные модули
1. Реализовать в виде модуля набор подпрограмм для обработки матриц.
2. Целые числа n, n ≤ 10254 могут быть представлены в компьютере в виде последовательности
символов, составленных из знаков: '+', '–', '0', '1', '2'...'9'. Напишите модуль, который содержит
подпрограммы необходимые для выполнения следующих операций: а) считывание чисел с
клавиатуры; б) вывод чисел на экран; в) операции +, –, *, mod şi div; г) вычисление факториала; д)
считывание и чтение из файлов последовательного доступа.
3. Напишите модуль для обработки двоичных деревьев поиска.
4. Напишите модуль для обработки очереди и стека.
5. Напишите программу, которая содержит различные функции и процедуры для обработки файлов
из целых чисел: создание, запись, считывание, упорядочивания, поиск, добавление или удаление из
файла.
6. Создайте модуль телефонной книжки, позволяющий управлять некоторыми абонентами, их
адресами и телефонными номерами. Операции для реализации модуля следующие: добавление
абонента; исключение абонента; поиск телефонного номера абонента; поиск абонента по
известному номеру телефона; изменение номера телефона абонента; упорядочивание по алфавиту;
выдачу данных о абонентах в файл и из файла.
7. Реализуйте приложение составленной из модулей которое бы управляло данными р некоторых
конкурсантов. Программа должна делать: создание базы данных (в виде файла), добавление и
удаление конкурсанта в/из базу, поиск конкурсанта, упорядочивание конкурсантов по имени и по
среднему баллу, вывод данных из файла.
8. Модуль для работы со списками
Набор операций со списками:
1. Добавление элемента в начало существующего списка.
2. Вставка элемента после одного из элементов списка.
3. Удаление элемента из начала списка.
4. Удаление элемента из произвольного места в списке.
5. Очистка списка.
6. Проверка списка на пустоту.
9. В программах Turbo Pascal строки символов длиной n, n ≤ 500 могут быть представлены с
помощью следующих описаний:
Type
Lungime = 0..500;
SirDeCaractere = record
N: Lunigme;
S: array[1..500] of char;
End;

36
Опишите модуль, который содержит процедуры и функции, необходимые для выполнения
следующих операций: а) считывание строк с клавиатуры; б) вывод строк на экран; в) объединения
строк; г) определения длины одной строки.
10. Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над
обыкновенными дробями вида P/Q (P — целое, Q — натуральное): 1) сложение; 2) вычитание; 3)
умножение; 4) деление; 5) сокращение дроби; 6) возведение дроби в степень N (N – натуральное); 7)
функции, реализующие операции отношения (равно, не равно, больше или равно, меньше или
равно, больше, меньше).
Type Frac = Record
P : Integer;
Q : 1.. High(LongInt)
End;

37
ЛАБОРАТОРНАЯ РАБОТА № 24

Методы программирования

1. Дана сумма S и n различных денежных банкнот имеющих значения a1, a2, …, an леев. Требуется
вывести на экран все возможности выплаты этой суммы (используйте рекурсивный метод
Backtracking).
2. На конкурсе представлены 5 мелодий A, B, C, D, E. Найти все возможные варианты их
представления, зная что мелодия B должна быть представлена перед мелодией A.
3. Дана прямоугольная доска длины l и высоты h, в которой присутствуют n отверстий имеющих
координаты целого типа. Требуется вырезать из этой доски кусок максимальной площади, на
которой нет отверстий. Возможны только лишь горизонтальные и вертикальные вырезки
(используйте метод Divide et Impera).
4. Крестьянин получил прямоугольный кусок земли на котором желает посадить сад. Для этого, он
поделит землю на m × n квадратов одного и того же размера, а в каждом квадрате посадит по
дереву из имеющих 4 видов. Вывести на экран все варианты посадки деревьев, учитывая что:
– не должны быть рядом (по вертикали, горизонтали, диагонали) два дерева одного и того же
вида;
– каждое дерево должно быть окружено хотя бы по одному дереву из остальных трех видов.
Имеются достаточно деревьев каждого вида.
5. Горная местность представлена в виде матрицы имеющей m × n зон, каждая из которых имеет
определенную высоту. Альпинист начал свое поднятие из определенной зоны и должен добраться
до самой высокой вершины. Из определенной зоны, альпинист может передвигаться по диагонали
или ортогонально, в соседнюю зону имеющее равную или большую высоту. Представить все
возможные перемещения альпиниста до вершины.
6. Конь и король находятся на шахматной доске. Некоторые клетки "выгорели", их позиции
известны. Конь не может пройти по выжженным клеткам, а любое движение коня приводит к
выгоранию клетки куда он идет. Определить, существует ли такая последовательность движений
коня, так чтобы он дошел до короля и вернулся обратно. Начальная позиция коня и короля
известны.
7. Даны n кубов пронумерованные 1, 2, ..., n со сторонами Li и цветам Ci, i=1, 2, ..., n (каждый цвет
представлен какой-то буквой). Вывести все башни построенные из k кубов из тех n возможных,
таким образом чтобы :
– стороны кубов в башне находились в порядке возрастания;
– цвета соседних кубов должны быть разными.
8. Напишите программу которая, используя метод Backtracking, выводит на экран все возможности
расположить элементы данной последовательности целых чисел, таким образом чтобы в данной
последовательности не существовало рядом стоящих двух отрицательных элементов.
9. На спортивном конкурсе записались n участников, получивших конкурсные номера 1, 2, …, n.
Для каждого спортсмена известна его страна (строка). В первый день соревнований будут
38
участвовать m спортсменов. Выведите на экран возможные порядки участия этих m спортсменов,
зная что:
– два спортсмена из одной и той же страны не могут участвовать один за другим;
– необходимо учитывать возрастающий порядок номеров спортсменов при участии.
10. Известны n городов пронумерованных через 1, 2, ... n. Один комивояжор должен представить
свои продукты во всех n городах, начиная свой путь с какого-то города, проходя только лишь раз
через город и возвращаясь обратно к начальному. Зная, что между некоторыми городами
существуют дороги а между некоторыми нет, вывести все возможные передвижения комивояжора.
11. Напишите программу которая выводит все возможные разложения натурального числа N в виде
суммы некоторых натуральных чисел. Разложения, отличающиеся порядком считать за одинаковые.
12. Дан список продуктов которые могут быть заказаны в ресторане, имея кулинарные препараты
сгруппированные в трех группах (аперитив, сама еда, десерт) и безалкогольные напитки
ассортименте с одним из типов еды. Для каждой порции еды и стакана напитка известна цена и
количество калорий. Потребитель двигаемый принципом правильного питания желает выбрать из
меню еду не превышающую сумму в S лей и оптимальным количеством калорий OPTCAL. В
рамках оставшейся суммы будет взято если возможно, самое многое по одному напитку к каждому
сортименту еды и с каждого сортимента самое меньшее по стакану таким образом чтобы разница
между полученными калориями (еда+напитки) и OPTCAL была минимальной. Требуется
реализовать программу которая по данным задачи, взятых из входного файла, определяет если
существует такое меню.
13. В игре на отгадывание чисел "Быки и коровы" компьютер играет роль загадывающего.
Составьте процедуру, которая по двум четырехзначным натуральным числам ("задуманному"
компьютером и предлагаемому человеком ) определяет, сколько цифр отгадано правильно и сколько
цифр стоит на задуманном месте. Все цифры различны и не равны нулю.
14. Данные N косточек домино по правилам игры выкладываются в прямую цепочку, начиная с
косточки, выбранной произвольно, в оба конца до тех пор, пока это возможно. Построить алгоритм,
позволяющий определить такой вариант выкладывания заданных косточек, при котором к моменту,
когда цепочка не может быть продолжена, "на руках" останется максимальное число очков.

39
ЛАБОРАТОРНАЯ РАБОТА N22

Использование графического видеорежима

Цель задания:
1. Использование возможностей графического видеорежима.
Постановка задачи:
Разработать программу рисования графика функции согласно варианту на указанном
интервале.

Методические указания:
Для тригонометрических функций ввести пределы интервала в градусах.
Вывести значение на оси координат.
Обобщить по возможности программу.

ВАРИАНТЫ ЗАДАНИЯ
1. Y = arcsin x.
2. Lemniscata lui x = a√2(t+t3)(1+t4), y = a√2(t–t3)(1+t4);
Bernouli :
3. Y = arctg x.
4. Astroida: х = а⋅ cos3t, y = a⋅ sin3t;
5. Melcul lui R = a⋅ cosα + b; x = R cosα; y = R sin α
Паскал:
6. Lemniscata lui R2 = 2a2cosα; x = R cosα; y = R sin α
Bernouli:
7. Astroida: x = t3 + 3t + 1, y = t3 – 3t + 1;
8. Foaia lui Decart: R = 3a⋅ cosα⋅ sinα/(cos3α+sin3α) x = R cosα; y = R sin α
9. Cartoida: x = 2a⋅ cos t – a⋅ cos 2t, y = 2a⋅ sin t – a⋅ sin 2t;
10. Strofoida: x = a(t2 – 1)/(t2 + 1), y = at(t2 – 1)/(t2 + 1);
11. Foaia lui Decart: x = 3t/(1+ t3); y = 3t2/(1 + t3);
12. Elipsa: X = a⋅ cosα; Y = a⋅ sinα, unde α – ia valori de la 0 la 2π.
13. Strofoida: R = –a⋅ cos2α/cosα; x = R cosα; y = R sin α
14. Cisoida: R = a⋅ sin2α/cosα; x = R cosα; y = R sin α
15. Spirala lui R = k⋅ α. x = R cosα; y = R sin α
Arhimede:
16. Spirala R = a⋅ еk⋅ α. x = R cosα; y = R sin α
logaritmică:
17. Y = sin x.
18. Y = x3.
19. Y = .
20. Y = arccos x.
21. Y = cos x.
22. Y = x2.
23. Y = tg x.
24. Cicloida:
25. Y = arcctg x.

40