Этапы, пояснительная записка и защита |
next C++ |
Ссылки |
Улучшения языка C |
Классы |
Перегрузка функций и операций |
Шаблоны |
Наследование |
Исключительные ситуации |
STL |
Лабораторные работы |
Вопросы к экзамену |
Темы для специальностей, не связанных с программированием.
Определить класс Матрица и операции для работы с ней (+, -, *, ввод и вывод, транспонирование). Для доступа к элементам матрицы перегрузить операцию "()". При определении можно использовать vector.
Matrix A(3,4); // Создать нулевую матрицу 3x4
Matrix E(3,3); // Создать нулевую матрицу 3x3
for(int i=0;i<3;++i)
E(i,i)=1;
// E - теперь единичная матрица
E=E+E; // сложение матриц
cin>>A; // ввод матрицы 3x4
Matrix B=A.transp()*E;
cout<<B; // вывод матрицы
cout<<B(1,2)<<”\n”; // вывод элемента с индексом (1,2)
Определить класс Список и операции для работы с ним (сцепление списков +, ввод и вывод в форме [1,2,3], подсписок c i-го элемента длиной k, добавление в начало и в конец списка). Для доступа к элементам списка перегрузить операцию "[]". При определении можно использовать vector.
List A,B; // Создать пустые списки
for(int i=1;i<=3;++i)
A.append(i);
cout<<A<<”\n”; // выводится [1,2,3]
A[1]=5;
cin>>B; // вводим [6,10]
cout<<(A+B)<<”\n”; // выводится [1,5,3,6,10]
Определить класс Полином от одной переменной x и операции для работы с ним (+, -, *, ввод и вывод, красивый вывод). Для доступа к коэффициентам перегрузить операцию "[]" (индекс указывает на коэффициент при соответствующей степени). При определении можно использовать vector. В элементе с индексом 0 хранится коэффициент для свободного члена полинома. Ввод и вывод коэффициентов выполняется начиная со старшей степени.
Polynom A(3); // Создать полином 3 степени с нулевыми коэффициентами
A[3]=1; // задаем коэффициент для степени 3
A[0]=-1;
cout<<A<<”\n”; // Выводится 1 0 0 -1
A.print(); // выводится x^3-1
Polynom B(2); // Создать полином 2 степени с нулевыми коэффициентами
cin>>B; // Вводим 3 0 0 что соответствует 3x^2
cout<<A+B<<”\n”; // Выводится 1 3 0 -1
Выполнить визуализацию работы механических часов, используя текущее время компьютера. В качестве объектов программы должны быть три стрелки (часовая, минутная, секундная) и числа от 1 до 12 на циферблате. Создание этих объектов и работа с ними должна выполняться в main. При создании можно указать цвет, длину и толщину стрелок, для чисел положение на циферблате и выводимый текст ("IX" или "9"). Там же выполняется рисование основной части циферблата.
Выполнить визуализацию движения планет вокруг Солнца и движения спутников.
Характеристики объектов: радиус P и цвет C объекта, вокруг какого объекта B
вращается, радиус R и угловая скорость U вращения, начальный угол A, список
спутников. Операции: вычислить координаты объекта в момент времени T,
нарисовать объект и его спутники, добавить спутник.
Пусть Bx,By координаты объекта B в момент T, тогда для вычисления координат
объекта используются формулы:
X=Bx+R⋅cos(A+U⋅T)
Y=By+R⋅sin(A+U⋅T)
Выполнить моделирование движения автотранспорта по однополосной дороге (без обгона). Машины представляются объектами, имеющими следующие характеристики:
Движение машин подчиняется правилу: если текущая скорость не позволяет остановиться вовремя при внезапной остановке впереди идущей машины, то снизить скорость на 5 км/ч=1.4 м/c. Если можно скорость увеличить, то скорость увеличивается на 5 км/ч, но не более желаемой.
Если V25>D, то скорость уменьшается V=V-1.4
если (V+5)25<D, то скорость увеличивается V=min,
где D – расстояние до предыдущей машины в метрах, V – скорость в метрах в секунду.
Промоделировать движение транспорта на участке дороги несколько километров в ситуации без происшествий и с остановкой одной машины на несколько секунд.
Определить набор классов для представления иерархических деревьев (например, папки и файлы или разделы и ключи в реестре). Набор классов должен включать базовый класс Элемент и производные классы Раздел, Лист.
Операции и свойства:
Элемент: название, печать с отступом (виртуальный метод), родительский элемент
Раздел: добавить элемент, количество элементов, i-й элемент
Лист: значение (строка)
Пример печати:
Software
Windows
version=10.0
Console
Font=Consolas
Charset=866
Google
Chrome
update_url=http://clients.google.com/update
Определить набор классов для рисования графических объектов Прямоугольник, Круг, Линия. Эти классы должны быть производными от базового класса "Графический объект" (GrObject). Операции и свойства: цвет, координаты, размеры, видимость, рисовать (виртуальный метод). При изменении положения, размеров и видимости в отличие от лабораторной работы должны перерисовываться все видимые объекты с вызывая функцию redraw (см. ниже). Для хранения списка объектов использовать глобальный vector указателей на GrObject:
vector<GrObject*> objects;
void redraw() {
... // очистить экран
for(auto o: objects)
if(o->isvisible()) o->draw();
swapbuffers();
}
Пример программы:
initwindow(800,600,"",0,0,true);
GrRect r(YELLOW,10,20,300,400);
GrCircle c(RED,200,240,50);
r.show();
c.show();
getch();
r.setcolor(WHITE);
c.move(100,150);
c.setsizes(75);
getch();
Система обработки заказов работает следующим образом: полученный заказ выдается наименее загруженному работнику (с наименьшим суммарным временем выполнения заказов). Если таких работников несколько, то выбирается работник с наименьшим номером среди них. Дана последовательность заказов в порядке поступления. Для каждого заказа указано время, необходимое для его выполнения. Для каждого работника вывести количество распределенных ему заказов, суммарное время и номера заказов. При решении использовать set (для пары загрузка+номер работника) и vector.
Пример ввода - 6 заказов, 3 работника
6 3 10 1 2 3 20 30
Пример вывода
1 10 1 3 34 2 4 6 2 22 3 5
Определить, является ли правильной последовательность из N круглых, квадратных и фигурных скобок, т.е. соответствует ли каждой открывающей скобке закрывающая и правильно ли они вложены. При решении использовать string и stack.
Для текста на английском языке определить количество различных слов и самое часто используемое слово. Слова word и words считаются различными. При решении использовать map и string.
Задан словарь. Найти все наборы слов в словаре, являющихся анаграммами. При решении использовать map, vector и string, алгоритм sort.