На основании данных с сайта ЦБ РФ написать программу, которая раз в 10 секунд опрашивает данные о курсе валют и выводит текущие значения. По окончанию работы выводит среднее и медианное значение. В рамках работы Вам понадобятся:
- Данные от ЦБ. Публичное API (https://www.cbr-xml-daily.ru/#howto)
- Способ им воспользоваться из С++. Можно выбрать любую библиотеку, например libcurl
- Библиотека для работы с JSON. Можно выбрать любую, например эту
Для хранения и подсчета статистики, спроектировать и реализовать структуры данных,обеспечивающие оптимальную алгоритмическую сложность расчетов и не избыточность по памяти.
Программа поддерживает следующие функционал:
- Вывод определённых валют и обработка случаев, когда такого кода валюты нет (если длина не равна 3, то код и вовсе не рассматривается)
./main GBP EUR USD LOL WONTEVENCHECK
- Изменение интервала запросов (по умолчанию 10 секунд)
./main --interval 10
или./main -i 10
- В процессе работы программа выводит всё в таблицу, которую она изменяет, вместо того чтобы каждый раз выводить на новой строке новые данные (с помощью спецсимволов ANSI)
Хранение курсов происходит в std::set
, что позволяет экономить память, если как минимум половина значений будут дублироваться. Каждый элемент std::set
занимает 8 байт: 4 байта на значение и 4 на счёт его появлений, оба uint32_t
.
Для демонстрации функционала при редко обновляющемся API, на 1 строчке есть #define DEBUG
. Если он установлен в 1
, то к каждому курсу будет добавляться или вычитаться до 10 рублей
clear
g++ -o main -std=c++17 -lcurl -I /usr/local/include/nlohmann/json.hpp main.cpp
./main -i 1 USD EUR GBP WTF
rm ./main
Адрес библиотеки nlohmann json может отличаться