Задачи для зачета

Во всех задачах должна поддерживаться одновременная работа нескольких клиентов. Клиент передает и получает данные в неформатированном виде (не строкой). Протокол передачи данных вы разрабатываете самостоятельно, но он дожен быть описан. Условия уточняйте по почте/zoom.

Чернов Александр 2
Коновалов Даниил 5

1. Чат-сервер по протоколу TCP

Сервер на C++, клиент на С++, клиент на python.

Должна поддерживаться возможность одновременного подключения нескольких клиентов. Клиент отправляет сообщение (строка произвольной длины) на сервер. Сервер рассылает это сообщение всем остальным подключенным клиентам, которые его немедленно отображают.

2. Сервер умножения на матрицу

Сервер на C++, клиент на python.

Клиент подключается к серверу и может выполнить одну из следующих операций:

Действие команды list зависит от момента времени, в который она выполнена. Если до send, то выводится полный список. Если после, то только те матрицы, число столбцов которых совпадает с размером вектора.

3. Сервер морского боя

Сервер на C++, клиент на python.

Два клиент подключается к серверу и передает положение своих кораблей. Кто первый подключился, тот и ходит первым. Ход—  пара чисел. Должна быть команда show my и show other, которые показывают игроку историю его выстрелов и выстрелов в него, соответственно.

4. Сервер совместного редактирования текста

Сервер на C++, клиент на python.

Клиент подключается к серверу и может выполнить одну из следующих операций:

Команда поиска получает на вход слово W и ширину контекста N, и выводит таблицу: номер абзаца, число вхождений, номер вхождения, контекст (фрагмент текста длины N, в котором искомое слово W занимает центральное положение).

5. Сервер поиска ближайших векторов

Сервер на C++, клиент на python.

Сервер запускается с параметром "размерность" и хранит множество векторов, которое изменяется командами от клиентов.

Клиент подключается к серверу и может выполнить одну из следующих операций:

6. Сервер разложения числа на слагаемые

Сервер на C++, клиент на python.

На вход передается число, на выходе получаются все возможные варианты представления этого числа в виде суммы простых.

7. Сервер умножения матриц

Сервер на C++, клиент на python.

Клиент передает матрицу A размера N на M. Если не сервере нет матрицы, которая может быть умножена на A слева, то A добавляется в набор матриц. Если же такие матрицы существует, то клиенту возвращается результаты умножения (набор матриц). Матрицы, добавленные разными клиентами, хранятся в едином наборе.

8. Сервер редактирования матрицы

Сервер на C++, клиент на python.

Сервер запускается с параметром M, который соответствует количеству столбцов матрицы типа double. Клиенты могут выполнять одну из следующих команд.

Условие выбора задается номером столбца и пороговым значением: в выборку попадают все строки, у которых значение элемента в указанном столбце превосходит пороговое значение.