- •1 Семестр
- •14 Занятий
- •1. Линейные и разветвляющиеся алгоритмы
- •Вычисления по формулам. Стандартные математические функции
- •Область на плоскости
- •Условный оператор
- •1.4. Логическое выражение в условном операторе
- •Ветвления
- •1.6. Побитовые операции
- •2. Циклы
- •Целочисленная арифметика. Приведение типов
- •2.2. Итерационные циклы
- •2.3. Нахождение простых чисел
- •2.4. Вычисления с точностью
- •2.5. Последовательности значений
- •2.6. Вычисления без хранения последовательности значений
- •2.7. Схема Горнера
- •Массивы. Указатели
- •Обработка одномерных массивов
- •Построение новой матрицы по части заданной матрицы
- •Обход матрицы
- •Алгоритм Эратосфена для нахождения простых чисел
- •Упорядоченность значений в матрицах
- •3.6. Преобразование матриц
- •Использование массивов для представления «длинных» чисел
- •Экономичное хранение матриц. Матричная алгебра
- •Строки.
- •Использование строкового типа
- •Перевод из одной cистемы счисления в другую
- •Выделение слов в строке
- •Массив слов
- •2 Семестр
- •29 Занятий
- •Функции
- •5.1. Передача массивов в функцию
- •Создание собственных процедур для обработки с-строк
- •5.3. Возврат ссылок
- •5.4. Рекурсия
- •5.5. Вычисление корня уравнения. Передача имени функции в качестве параметра. Аргументы по умолчанию
- •5.6. Вычисление интеграла. Передача имени функции в качестве параметра
- •5.7. Сортировка массивов
- •5.8. Сортировка слиянием
- •5.9. Перебор с возвратом
- •6. Файлы
- •6.1. Файлы чисел
- •6.2. Файлы записей
- •6.3. Использование структур для битового представления чисел
- •7. Динамические структуры данных
- •7.1. Динамическое выделение памяти для массивов
- •7.2. Линейный список
- •7.3. Линейные списки
- •7.4. Двухсвязные списки
- •7.5. Деревья
- •7.6. Графы
- •7.7. Более сложные связанные динамические структуры данных
- •8.1. Класс «Многоразрядное число»
- •8.2. Перегрузка операций
- •8.3 Класс «Матрица»
- •8.4 Класс «Линейный список»
- •8.5. Класс «Двусвязный список»
- •8.6. Класс «Бинарное дерево»
- •8.7. Класс «Граф»
- •9.2. Полиморфизм. Виртуальные методы
- •9.3. Полиморфизм. Виртуальные методы
7.7. Более сложные связанные динамические структуры данных
Выполнить задания с использованием подходящих связанных динамических структур данных.
Написать программу, которая по заданному алгебраическому выражению (операнды – целые числа; операции – + * / % ++ --) вычисляет результат. Воспользоваться логикой построения обратной польской записи.
Написать программу, которая по заданному алгебраическому выражению (операнды – вещественные числа; операции – + * / ) вычисляет результат. Воспользоваться логикой построения обратной польской записи.
Написать программу, которая по заданному логическому выражению (операнды – булевские константы; логические операции – && || !) вычисляет результат. Воспользоваться логикой построения обратной польской записи.
Написать программу, которая по заданному логическому выражению (операнды – целые числа и булевские константы; операции отношения > < == != >= <=, логические операции – && || !) вычисляет результат. Воспользоваться логикой построения обратной польской записи.
Написать программу, которая по заданному выражению : (операнды – целые числа; поразрядные операции – & | ^ ~ >> <<) вычисляет результат. Воспользоваться логикой построения обратной польской записи.
Дана программа на С++.
Записать в выходной файл построчно все ключевые слова, встречающиеся в этой программе, указав количество появлений для каждого ключевого слова и номера строк программы, в которых они встречаются.
Записать в выходной файл в алфавитном порядке построчно все идентификаторы, встречающиеся в этой программе, указав количество появлений для каждого идентификатора и номера строк программы, в которых они встречаются.
Записать в выходной файл построчно все константы, встречающиеся в этой программе, указав количество появлений для каждой константы и номера строк программы, в которых они встречаются.
Записать в выходной файл построчно все циклические конструкции, встречающиеся в этой программе с указанием номеров строк начала и конца каждого цикла и его типа.
Записать в выходной файл построчно все операторы ветвления, встречающиеся в этой программе с указанием номеров строк начала и конца каждого оператора ветвления.
Классы
8.1. Класс «Многоразрядное число»
Объявить класс для решения задачи и определить его методы.
Реализовать:
три вида конструктора (без аргументов, инициализации, копирования),
деструктор,
ввод данных с клавиатуры,
вывод данных на экран,
указанные в задании операции реализовать посредством перегрузки операций (операции реализовать и как методы класса, и как внешние дружественные функции).
Объявление класса разместить в заголовочном файле, определения методов – во втором файле, определение главной функций программы – в третьем файле. Выполнить задание, используя объекты этого класса.
Дополнительно к требуемым в заданиях операциям перегрузить операцию индексирования []. Максимально возможный размер массива задать константой. Если количество элементов массива изменяется во время работы, определить в классе поле count. Обеспечить работу с безопасным массивом, т.е. контролировать выход индекса элемента массива за допустимый описанием объекта диапазон.
Объявить класс «32-разрядное целое положительное десятичное число». Реализовать операции: сложения, умножения этих чисел.
Объявить класс «32-разрядное целое положительное десятичное число. Реализовать операции: сравнения, сдвигов на n разрядов (десятичных).
Объявить класс «56-разрядное целое положительное десятичное число. Реализовать операции: сложения, умножения этих чисел.
Объявить класс «56-разрядное целое положительное десятичное число». Реализовать операции: сравнения, сдвигов на n разрядов (десятичных).
Объявить класс «32-разрядное целое двоичное число со знаком». Реализовать операции: сложения, умножения. Создать метод для перевода десятичного числа в «32-разрядное целое двоичное число со знаком».
Объявить класс «32-разрядное целое положительное двоичное число». Реализовать операции: сравнения, сдвигов на n разрядов. Создать метод для перевода десятичного числа в «32-разрядное целое положительное двоичное число».
Объявить класс «64-разрядное целое двоичное число со знаком». Реализовать операции: сложения, умножения. Создать метод для перевода десятичного числа в «64-разрядное целое двоичное число со знаком».
Объявить класс «64-разрядное целое положительное двоичное число». Реализовать операции: сравнения, сдвигов на n разрядов. Создать метод для перевода десятичного числа в «64-разрядное целое положительное двоичное число».
Объявить класс «16-разрядное целое шестнадцатиричное положительное число». Реализовать операции: сложения, умножения. Создать метод для перевода десятичного числа в «16-разрядное целое шестнадцатиричное положительное число».
Объявить класс «32-разрядное целое шестнадцатиричное положительное число». Объявить класс «128-разрядное целое положительное двоичное число». Реализовать операцию сложения для тех и других чисел. Создать методы для перевода «128-разрядное целое положительное двоичное число» в «32-разрядное целое шестнадцатиричное положительное число» и наоборот.
Объявить класс «16-разрядное целое положительное число в p-ричной с/с (2≤p≤16)». Реализовать операции: сложения, умножения. Создать метод для перевода десятичного числа в р-ричное.
Объявить класс «16-разрядное целое положительное число в p-ричной с/с (2≤p≤16)». Реализовать операции: сравнения, сдвигов на n разрядов. Создать методы для перевода десятичного числа в р-ричное.
