From 9b43733affa24437ea740c2bf8a7ae1c6e5ffa32 Mon Sep 17 00:00:00 2001 From: "Lab4 (ChaginSA)" Date: Sun, 4 Jun 2023 19:32:24 +0300 Subject: [PATCH] =?UTF-8?q?code:=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20?= =?UTF-8?q?=D1=81=20=D0=B1=D1=83=D1=84=D0=B5=D1=80=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 59 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/main.cpp b/main.cpp index c54c857..e643dcf 100644 --- a/main.cpp +++ b/main.cpp @@ -1,10 +1,11 @@ #include #include - #include "histogram.h" #include "text.h" #include "svg.h" #include +#include +#include using namespace std; @@ -47,32 +48,50 @@ inp >> in.bin_count; return in; } +size_t write_data (void* items, size_t item_size, size_t item_count, void* ctx) { + size_t data_size = item_size * item_count; -int main(int argc, char* argv[]) -{ + stringstream* buffer = reinterpret_cast(ctx); + buffer->write(reinterpret_cast(items), data_size); - if (argc > 1){ - CURL* curl = curl_easy_init(); - if (curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, argv[1]); - res = curl_easy_perform(curl); - if (res != 0) { - cout << curl_easy_strerror(res); - exit(1); - } - curl_easy_cleanup(curl); + return data_size; +} + +Input +download(const string& address) { + stringstream buffer; + + CURL* curl = curl_easy_init(); + if (curl){ + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, address.c_str()); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer); + res = curl_easy_perform(curl); + if (res != 0) { + cout << curl_easy_strerror(res); + exit(1); } - return 0; + + + curl_easy_cleanup(curl); } - curl_global_init(CURL_GLOBAL_ALL); + return input_data(buffer, false); +} + + +int main(int argc, char* argv[]) +{ + Input in; + if (argc > 1) { + in = download(argv[1]); + } + else { + in = input_data(cin, true); + } -unsigned int n; -bool prompt=true; -auto in = input_data(cin, prompt); -double min,max; auto bins = make_histogram(in.numbers, in.bin_count); show_histogram_svg ( bins );