- •Факультет
- •1. Линейные алгоритмы
- •2. Логическое выражение
- •3. Условный оператор
- •4. Циклы
- •5. Последовательности чисел
- •6. Строки
- •7. Одномерные массивы
- •8. Процедуры и функции Задания
- •9. Матрицы
- •10. Множества
- •11. Перечислимый тип
- •13. Файлы
- •13.1. Текстовые файлы
- •13.2. Типизированные и нетипизированные файлы
- •13.3. Студент
- •14. Рекурсия
- •15. Списки, стеки, очереди
- •16. Сортировки
- •17. Разбор выражений
- •18. Деревья
- •19. Графы
- •Оглавление
13.3. Студент
В задачах 1..15 использовать типизированный файл c информацией о студентах факультета Stud.dat со структурой:
const NumSemestr=10;
type
TStud=record
FIO : string[80]; // фамилия имя отчество
Year : TDateTime; // дата рождения
// средние оценки за семестр
MedB : array [1..NumSemestr] of real;
Kurs : byte; // курс
Group: byte; // группа
End;
Убедиться в отсутствии задолженностей для выбранного студента-выпускника (наличие положительных оценок за все десять семестров).
Вывести список студентов, для которых дни рождения попадают на дни текущей недели.
Вывести список студентов, у которых средний балл постоянно увеличивается от семестра к семестру.
Вывести список студентов, у которых средний балл постоянно уменьшается за всё время обучения.
Вывести информацию о самых молодых студентах с указанием возраста — N человек, начиная с самого молодого, N определяется вводом.
Вывести информацию о средних баллах по курсам.
Вывести информацию об однофамильцах.
Организовать поиск студентов по ФИО, курсу, группе, году рождения.
Определить группы студентов, у которых средний балл ниже факультетского среднего.
Вывести информацию о студентах, которые стали учиться хуже, чем на 1-ом курсе.
Упорядочить список студентов заданной группы по среднему баллу, вывести его.
Вывести список студентов, у которых средний балл больше 40.
Вывести студента с наибольшим средним баллом на каждом курсе.
Вывести студента с наименьшим средним баллом на каждом курсе.
Составить список 5 студентов с максимальным средним баллом.
14. Рекурсия
Описать рекурсивную функцию для подсчёта количества запятых в данном текстовом файле.
Описать рекурсивную функцию
function step(z : real; m:byte):real;
для вычисления zm (z — вещественное, m — натуральное) и с её помощью подсчитать значение выражения a7 + b8 .
Описать рекурсивную функцию
function fib(n : integer) : integer;
для вычисления n-ого (n 40) числа Фибоначчи.
Указание.
Последовательность чисел Фибоначчи fk образуется так:
f0=1, f1=1, fk = fk-2 + fk-1.
Описать рекурсивную функцию
function arifm(a, d, k : integer) : integer;
для вычисления k-ого элемента арифметической прогрессии (a — первый элемент прогрессии, d — разность прогрессии).
Создать очередь из чисел, записанных в текстовом файле, с помощью рекурсивной процедуры procedure add(var r : link).
Описать рекурсивную функцию
function memb(r:link; b:integer): boolean;
проверяющую, входит ли элемент с информационным полем b в список r.
Описать рекурсивную процедуру
procedure dele(var r:link; w:integer);
удаляющую из списка r первое вхождение элемента с информационным полем w.
Используя функцию memb, проверить, входит ли число, введённое в поле Edit1, в созданный список. Если да, то удалить из списка первое вхождение этого числа с помощью процедуры dele и вывести преобразованный список в текстовый файл с помощью процедуры out. В противном случае вывести сообщение: «Такого элемента нет».
Создать очередь с помощью рекурсивной процедуры
procedure add(var r: link).
Описать рекурсивную функцию
function neg(r: link): boolean;
проверяющую, имеется ли в списке элемент с отрицательным информационным полем.
Описать рекурсивную функцию
function nmemb(r: link; b:integer):integer;
подсчитывающую количество вхождений элемента с информационным полем b в список r.
Описать рекурсивную функцию
function max(r: link): integer;
для нахождения максимума в списке r.
Написать рекурсивную функцию для нахождения биномиальных коэффициентов

Для заданного М вычислить все

Задано конечное множество имен жителей некоторого города, причем для каждого из жителей перечислены имена его детей. Жители А и Б называются родственниками, если:
либо А — ребенок Б,
либо Б — ребенок А,
либо существует некий В такой, что А является родственником В, а В является родственником Б. Перечислить все пары жителей города, которые являются родственниками.
Подсчитать количество различных представлений заданного натурального N в виде суммы не менее двух попарно различных положительных слагаемых. Представления, отличающиеся порядком слагаемых, различными не считаются.
Вычислить определитель заданной матрицы, пользуясь формулой разложения по первой строке:
![]()
где матрица B получается вычеркиванием из А первой строки и k-го столбца.
Построить синтаксический анализатор для понятия простое_выражение, простое выражение ::= простой_ идентификатор | (простое_выражение знак_операции простое_выражение);
простой идентификатор: := буква;
знак_операци::= + | – | *;
Написать процедуру, которая по заданному простому логическому выражению вычисляет его значение.
логическое выражение.:= TRUE | FALSE | NOT логическое_выражение |
(логическое_выражение знак_операции логическое_выражение);
знак_операщш::= AND | OR;
Расставить на шахматной доске 8 ферзей таким образом, чтобы ни один не угрожал другому.
Получить расстановки 8 ладей на шахматной доске, при которых ни одна ладья не угрожает другой.
Получить все перестановки элементов 1,..., 6.
Получить все размещения из 10 элементов 1, 2,..., 10 по 3 в каждом. Размещением называется выборка из п указанных элементов т неповторяющихся элементов.
На шахматной доске определигь поля, в которые может попасть конь за п ходов из указанной позиции.
Имеются n городов. Некоторые из них соединены дорогами известной длины.
Найти кратчайшие маршруты из заданного города в остальные.
Найти кратчайший маршрут, начинающийся в заданном городе и проходящий через все остальные.
Найти расстановку 5 ферзей, при которой каждое поле шахматной доски будет находиться под ударом хотя бы одного из них.
«Задача о рюкзаке». Имеется М различных предметов, известны вес каждого предмета и его стоимость. Определить, какие предметы надо положить в рюкзак, чтобы общий вес не превышал заданной границы, а общая стоимость была максимальной.
Даны целое п от 2 до 20 и вещественное Е>0. Найти с точностью Е все корни n-го многочлена Чебышева Тп(х), определяемого формулами Т0 (х) = 1; Т1 (х) = х; Тk (х) = 2хTk-1 (х) - Тк-2 (х), (к = 2,3,...).
Найти расстановку 5 ферзей, при которой каждое поле шахматной доски будет находиться под ударом хотя бы одного из них.
Покрыть все клетки шахматной доски ходом коня, начальное положение коня на поле с координатами x0, y0
Задана система двусторонних дорог. Найти замкнутый путь, проходящий через каждую вершину и длиной не более 100 км.
Прямоугольная матрица содержит ячейки двух типов — "белые" и "черные". Написать процедуру, находящую хотя бы один путь от первой строки матрицы до последней по "белым" ячейкам. Переход возможен только в соседнюю ячейку: левую, правую, верхнюю, нижнюю, то есть при изменении только одного индекса.
