23. Заголовочные файлы24. Работа с json

23. Заголовочные файлы

Ссылка для тренировки

C++

Создайте 3 заголовочных файла, имена придумайте самостоятельно. В каждом файле предусмотрите защиту от повторного включения: в одном используйте директиву pragma, в двух других реализуйте защиту через директиву ifndef.

В первом файле реализуйте функцию принимающую одно целое число и возвращающую факториал этого число .

Во втором файле реализуйте функцию принимающую два аргумента: - вещественное число и - количество членов в разложении функции синус в ряд Тейлора:

В третьем файле реализуйте функцию принимающую два целых числа и ()и возвращающую количество сочетаний из по :

Второй и третий файлы должны включать (include) первый. Расчёт синуса и сочетаний обязательно реализовать с использованием функции расчёта факториала из первого файла.

Все три файла подключите к .cpp файлу вашего проекта. Воспользуйтесь написанными функциями и выведите:

Формат ввода
Нет ввода

Формат вывода
В первой строке выходных данных выведите строку "n", затем табуляция и "n!". В последующих 10 строках выведите значение и через табуляцию . Закончите вывод таблицы пустой строкой.

Затем выведите строку "x", табуляция и "sin(x)". В последующих 46 строках выведите значение и через табуляцию с точностью 4 значащих цифры. Для указания точности воспользуйтесь манипулятором setprecision. Закончите вывод таблицы пустой строкой.

Выведите строку "k", табуляция и "C(k, 10)". В последующих 10 строках выведите значение и через табуляцию .

Пример

ВводВывод
n       n!
1       1
2       2
3       6
4       24
5       120
6       720
7       5040
8       40320
9       362880
10      3628800
x sin(x) 0 0 0.01745 0.01745 0.03491 0.0349 0.05236 0.05234 0.06981 0.06976 0.08727 0.08716 0.1047 0.1045 0.1222 0.1219 0.1396 0.1392 0.1571 0.1564 0.1745 0.1736 0.192 0.1908 0.2094 0.2079 0.2269 0.225 0.2443 0.2419 0.2618 0.2588 0.2793 0.2756 0.2967 0.2924 0.3142 0.309 0.3316 0.3256 0.3491 0.342 0.3665 0.3584 0.384 0.3746 0.4014 0.3907 0.4189 0.4067 0.4363 0.4226 0.4538 0.4384 0.4712 0.454 0.4887 0.4695 0.5061 0.4848 0.5236 0.5 0.5411 0.515 0.5585 0.5299 0.576 0.5446 0.5934 0.5592 0.6109 0.5736 0.6283 0.5878 0.6458 0.6018 0.6632 0.6157 0.6807 0.6293 0.6981 0.6428 0.7156 0.6561 0.733 0.6691 0.7505 0.682 0.7679 0.6947 0.7854 0.7071
k C(k, 10) 1 10 2 45 3 120 4 210 5 252 6 210 7 120 8 45 9 10 10 1

 

24. Работа с json

Ссылка для тренировки

Дан файл in.json в формате json содержащий массив объектов следующего вида:

Где поле userId - это целое число, идентификатор пользователя ; id - целое число, идентификатор (номер) записи в массиве ; title - название задачи, строка состоящая символов латинского алфавита; completed - логическое значение, указывает выполнена ли задача (true - выполнена, false - не выполнена).

Для каждого пользователя посчитайте количество выполненных задач и результат сохраните в файл out.json в формате json. Данные должны быть представлены в виде массива объектов вида:

Где поле userId - это целое число, идентификатор пользователя ; task_completed - целое число, количество выполненных пользователем задач .

Для ознакомления с форматом json:

С++:

Для задания используйте библиотеку JSON for Modern C++: https://github.com/nlohmann/json. Для этого скачайте и подключите к проекту заголовочный файл json.hpp расположенный в репозитории в каталоге single_include.

Чтение/запись из/в файла показаны в разделе To/from streams (e.g. files, string streams) во втором блоке кода. Но дополнительно нужно подключить библиотеку для работы с файлами #include <fstream>.

Несколько примеров от автора библиотеки: итерирование по массиву и объекту, создание и заполнение массива. При работе с массивами можно использовать push_back, size и остальные методы стандартных контейнеров std.

Python:

Для задания используйте стандартный модуль json. Описание модуля на английском языке приведено в документации.

Про базовые способы работы с модулем json на руссом языке можно почитать тут: https://python-scripts.com/json.

Видео пример работы с модулем json: https://youtu.be/rIhygmw9HZM и https://youtu.be/Wt4WAcqEje8

Формат ввода
Ввод данных в программу осуществляется при помощи файла с названием in.json. Гарантируется, что этот файл существует, располагается в том же каталоге, что и программа и содержит валидный json.

Формат вывода
Ввод данных из программы осуществляется в файл с названием out.json. Файл должен создаваться в том же каталоге, что и программа и должен содержать валидный json. Визуальное форматирование, порядок объектов в массиве и порядок полей в объекте могут быть произвольными.

Пример

Входной файлВыходной файл
in.jsonout.json