Обработка математики: 80%
 

printКурсовая работа

printУпрощенные темы

Темы для специальностей, не связанных с программированием.

1. Разработка класса "Матрица"

Определить класс Матрица и операции для работы с ней (+, -, *, ввод и вывод, транспонирование). Для доступа к элементам матрицы перегрузить операцию "()". При определении можно использовать 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)
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]
3. Разработка класса "Полином"

Определить класс Полином от одной переменной 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
4. Моделирование механических часов

Выполнить визуализацию работы механических часов, используя текущее время компьютера. В качестве объектов программы должны быть три стрелки (часовая, минутная, секундная) и числа от 1 до 12 на циферблате. Создание этих объектов и работа с ними должна выполняться в main. При создании можно указать цвет, длину и толщину стрелок, для чисел положение на циферблате и выводимый текст ("IX" или "9"). Там же выполняется рисование основной части циферблата.

5. Моделирование планетарной системы

Выполнить визуализацию движения планет вокруг Солнца и движения спутников. Характеристики объектов: радиус P и цвет C объекта, вокруг какого объекта B вращается, радиус R и угловая скорость U вращения, начальный угол A, список спутников. Операции: вычислить координаты объекта в момент времени T, нарисовать объект и его спутники, добавить спутник. Пусть Bx,By координаты объекта B в момент T, тогда для вычисления координат объекта используются формулы:
X=Bx+Rcos(A+UT)
Y=By+Rsin(A+UT)

6. Моделирование движения автотранспорта

Выполнить моделирование движения автотранспорта по однополосной дороге (без обгона). Машины представляются объектами, имеющими следующие характеристики:

  • желаемая скорость W (60-80 км/ч=16-22 м/c)
  • текущая координата X
  • текущая скорость V (от 0 км/ч, может изменяться на 5 км/ч за единицу моделирования = 15 секунды)

Движение машин подчиняется правилу: если текущая скорость не позволяет остановиться вовремя при внезапной остановке впереди идущей машины, то снизить скорость на 5 км/ч=1.4 м/c. Если можно скорость увеличить, то скорость увеличивается на 5 км/ч, но не более желаемой.

Если V25>D, то скорость уменьшается V=V-1.4
если (V+5)25<D, то скорость увеличивается V=min,
где D – расстояние до предыдущей машины в метрах, V – скорость в метрах в секунду.

Промоделировать движение транспорта на участке дороги несколько километров в ситуации без происшествий и с остановкой одной машины на несколько секунд.

7. Разработка набора классов "Дерево"

Определить набор классов для представления иерархических деревьев (например, папки и файлы или разделы и ключи в реестре). Набор классов должен включать базовый класс Элемент и производные классы Раздел, Лист.

Операции и свойства:

Элемент: название, печать с отступом (виртуальный метод), родительский элемент

Раздел: добавить элемент, количество элементов, i-й элемент

Лист: значение (строка)

Пример печати:

Software
 Windows
   version=10.0
   Console
     Font=Consolas
     Charset=866
 Google
   Chrome
     update_url=http://clients.google.com/update
8. Векторная графическая библиотека

Определить набор классов для рисования графических объектов Прямоугольник, Круг, Линия. Эти классы должны быть производными от базового класса "Графический объект" (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();
9. Использование классов STL-1

Система обработки заказов работает следующим образом: полученный заказ выдается наименее загруженному работнику (с наименьшим суммарным временем выполнения заказов). Если таких работников несколько, то выбирается работник с наименьшим номером среди них. Дана последовательность заказов в порядке поступления. Для каждого заказа указано время, необходимое для его выполнения. Для каждого работника вывести количество распределенных ему заказов, суммарное время и номера заказов. При решении использовать set (для пары загрузка+номер работника) и vector.

Пример ввода - 6 заказов, 3 работника

6 3
10 1 2 3 20 30

Пример вывода

1 10 1
3 34 2 4 6
2 22 3 5
10. Использование классов STL-2

Определить, является ли правильной последовательность из N круглых, квадратных и фигурных скобок, т.е. соответствует ли каждой открывающей скобке закрывающая и правильно ли они вложены. При решении использовать string и stack.

11. Использование классов STL-3

Для текста на английском языке определить количество различных слов и самое часто используемое слово. Слова word и words считаются различными. При решении использовать map и string.

12. Использование классов STL-4

Задан словарь. Найти все наборы слов в словаре, являющихся анаграммами. При решении использовать map, vector и string, алгоритм sort.

loading