From 0a61a8520f4e7c11752b1e443c196d1e8ecac0e3 Mon Sep 17 00:00:00 2001 From: BushmanovAS Date: Mon, 27 May 2024 16:39:51 +0300 Subject: [PATCH] code: variant 9 --- main.cpp | 78 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/main.cpp b/main.cpp index 67bfa4a..702066a 100644 --- a/main.cpp +++ b/main.cpp @@ -1,10 +1,9 @@ #include #include -#include #include #include +#include #include "histogram.h" -#include "text.h" #include "svg.h" using namespace std; @@ -15,60 +14,67 @@ struct Input size_t bin_count{}; }; -Input input_data(istream& in, bool prompt = true) +Input +input_data(istream& stream, bool prompt) { size_t number_count; - if (prompt) + if (prompt) { cerr << "Enter number count: "; - in >> number_count; - Input input; - input.numbers.resize(number_count); + } + stream >> number_count; + Input in; + in.numbers.resize(number_count); for (size_t i = 0; i < number_count; i++) { - in >> input.numbers[i]; + stream >> in.numbers[i]; } - if (prompt) + if (prompt) { cerr << "Enter bin count: "; - in >> input.bin_count; - return input; + } + stream >> in.bin_count; + return in; } - size_t -write_data(void* items, size_t item_size, size_t item_count, void* ctx) { + +size_t write_data(void* items, size_t item_size, size_t item_count, void* ctx) +{ size_t data_size = item_size * item_count; stringstream* buffer = reinterpret_cast(ctx); - (*buffer).write(reinterpret_cast(items), data_size); + buffer->write(reinterpret_cast(items), data_size); return data_size; } -Input -download(const string& address) { + +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!=CURLE_OK){ - cerr << curl_easy_strerror(res); - exit(1); + 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 != CURLE_OK) { + fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); + exit(1); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); - } return input_data(buffer, false); } -int main(int argc, char* argv[]) -{ - bool show_prompts; - cout << "Show prompts? (1 for yes, 0 for no): "; - cin >> show_prompts; +int main(int argc, char* argv[]) { Input input; if (argc > 1) { - input = download(argv[1]); - } else { + input = download(argv[1]); + } + else { input = input_data(cin, true); } - const auto bins = make_histogram(input.numbers, input.bin_count); + if (curl_version_info(CURLVERSION_NOW) != nullptr) { + auto curl_ver = curl_version_info(CURLVERSION_NOW)->version; + cerr << "cURL version " << curl_ver << "\n"; + auto ssl_ver = curl_version_info(CURLVERSION_NOW)->ssl_version; + cerr << "SSL version " << ssl_ver << "\n"; + } else{ cerr<<"curl_version_info() failed \n"; } + vector bins = make_histogram(input.numbers, input.bin_count); show_histogram_svg(bins); }