Мои лабораторные работы для BSUIR/БГУИР (белорусский государственный университет информатики и радиоэлектроники).
Предмет - OAiP/ОАиП (основы алгоритмизации и программирования).
Курсовая работа: GUI калькулятор на Delphi.
Есть три типа монахов: высшие, средние и низшие. Каждый монах ест такое количество пирогов, которое соответствует его чину. Пользователь вводит общее количество пирогов, количество всех монахов и общее количество всех съеденных пирогов всеми монахами каждого чина соответственно. Вывести все возможные комбинации монахов каждой группы так, чтобы все условия выполнялись:
- Количество всех монахов и количество монахов каждого типа есть числа целые и неотрицательные.
- Количества съеденных монахами каждого типа пирогов могут быть как целыми, так и вещественными числами, но они должны быть больше нуля.
- Монахи не могут голодать.
- Монахи ранга ниже не могут есть больше пирогов, чем монахи ранга выше.
- Программа учитывает возможный некорректный ввод пользователя.
Есть два вида бактерий: зелёные и красные. Красная бактерия за 1 такт времени становится зелёной. Зелёная бактерия делится на 2 (красную и зелёную) за 1 такт времени. Сколько бактерий, в т.ч. зелёных, красных и суммарно будет через K тактов времени, если сначала было N красных бактерий? Вывести на экран значение зеленых, красных бактерий, их сумму на k такте.
Есть два вида бактерий: зёленые и красные. Красная бактерия за 1 такт времени становится зелёной. Зелёная бактерия делится на 2 (красную и зелёную) за 1 такт времени. Сколько бактерий, в т.ч. зелёных, красных и суммарно будет через K тактов времени, если сначала было Green зелёных и Red красных бактерий? Вывести на экран количество зелёных и красных бактерий и их сумму на конечном такте. Правила постановки:
- Пользователь вводит количество зелёных бактерий, затем количество красных бактерий, затем количество тактов.
- Программа учитывает некорректный ввод пользователя.
- Количество зелёных и красных бактерий в начальный момент времени должно быть целым неотрицательным числом.
- Количество тактов в начальный момент времени должно быть натуральным числом.
- Программа предусматривает потенциальное переполнение переменной типа Integer при вычислениях.
- Программа выводит количество зелёных бактерий, красных бактерий и их сумму на конечном такте.
- Программа разделена на 3 части, каждая часть решает задачу своим способом (1 способ – через зависимость от красных и зелёных на предыдущем такте, 2 способ – через зависимость от зелёных бактерий на предыдущем и позапрошлом такте, 3 способ – через зависимость от красных бактерий на предыдущем и позапрошлом такте).
Одна дискета стоит 11,5 рублей; одна коробка из 12 дискет стоит 114,5 рублей; ящик из 12 коробок стоит 1255 рублей. Вывести наиболее выгодный способ покупки N дискет, а также сэкономленную сумму и бонусные диски, если таковые имеются.
Даны 2 целых числа, количество цифр которых не должно превышать 50. Выполнить операцию сложения. Вывести на печать сумму двух чисел.
Правила постановки:
- Пользователь вводит первое и второе число;
- Числа не должны быть дробными или отрицательными;
Обсчитать какое-то сложное уравнение циклами. Описать словами формулу трудно.
Разработать алгоритм и программу нахождения наибольшего общего делителя (двух и более чисел).
Вывести на печать результаты расчётов в виде: НОД = значение
Дана последовательность целых чисел. Определить: сколько чисел входит в эту последовательность по одному разу (и какие); Вывести на печать результаты расчётов.
Дана последовательность целых чисел. Определить: максимальное из чисел, входящих в последовательность более одного раза; Вывести на печать результаты расчётов.
Дана матрица размерности N Получить одномерный массив размерности N*N, выбирая элементы матрицы по цепи, начиная с верхнего правого угла, двигаясь по диагоналям, параллельным главной диагонали матрицы.
Обсчитать какое-то сложное уравнение циклами. Описать словами формулу трудно.
Даны: число, месяц, год. На какой день недели приходится эта дата? («Вечный календарь»); При выполнении работы считать, что Григорианский календарь был введён с 1 января 1 года.
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами – запятая или не менее одного пробела, за последним словом – точка. Вывести те слова последовательности, которые отличны от последнего слова и удовлетворяют следующему свойству: слово начинается с гласной буквы и заканчивается согласной буквой.
Дана матрица X[9,10]. Упорядочить элементы столбцов матрицы по возрастанию, а сами столбцы - по возрастанию произведения чётных элементов. Вывести в виде:
- Изначальная матрица.
- Произведения чётных элементов.
- Отсортированная матрица.
Используя функции и процедуры, провести операции над матрицами.
Провести сравнительный анализ по числу сравнений следующих видов сортировки:
- Пузырёк с флажком;
- Пирамидальная сортировка.
Размерности массивов соответственно: 100, 250, 500, 1000, 2000, 3000.
Типы массивов:
- Случайный;
- Отсортированный;
- Перевернутый.
Реализовать QuickSort.
Сравнить HeapSort и BubbleSort по разным критериям.
Продемонстрировать работу с импортируемыми модулями.
Выписать все звонкие согласные из слов и отсортировать их в порядке появления в алфавите.
Даны текстовый файл F, текстовый файл F1 и натуральное число К. Файл F содержит 30 слов, каждое из которых будем называть ключевым. Сформировать файл G, который содержит строки файла F1, циклически сдвинутые так, чтобы каждое ключевое слово, входящее в строку, начиналось с К-ой позиции. Строки, не содержащие ключевых слов, в файл G не включаются. Строки, которые содержат N ключевых слов, записываются в файле G N раз.
Даны текстовый файл F, текстовый файл F1 и натуральное число К. Файл F содержит до 100 слов, каждое из которых будем называть ключевым. Сформировать файл Res, который содержит строки файла F1, циклически сдвинутые так, чтобы каждое ключевое слово, входящее в строку, начиналось с К-ой позиции. Строки, не содержащие ключевых слов, в файл G не включаются. Строки, которые содержат N ключевых слов, записываются в файле G N раз. Если K больше, чем длина строки, то об этом сообщается пользователю. Имеется поддержка файлов с символами из отличных от латинского алфавитов.
Продемонстрировать работу с графическим интерфейсом. Суть работы: редактируемое поле и кнопки, которые это поле заполняют рандомно.
Продемонстрировать работу с переменными типа "функции".
Примитивный парсер для логических выражений.
Работа со связным списком: его реализация, заполнение числами и хождение по нему.