From 464ddc310fbea34eff17474d15bbc1cfaf3a54dc Mon Sep 17 00:00:00 2001 From: SneguraDS Date: Mon, 20 May 2024 00:07:12 +0300 Subject: [PATCH] =?UTF-8?q?code:=20=D0=BA=D0=BE=D0=BD=D0=B5=D1=87=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 133 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 85 insertions(+), 48 deletions(-) diff --git a/main.cpp b/main.cpp index 010301b..45ecaeb 100644 --- a/main.cpp +++ b/main.cpp @@ -1,3 +1,5 @@ +#include +#include #include #include #include @@ -5,70 +7,105 @@ #include "text.h" #include "svg.h" using namespace std; -struct Input { +struct Input +{ vector numbers; size_t bin_count{}; size_t number_count{}; size_t max_count{}; }; Input -input_data(istream& cin, bool prompt) { - if (prompt==true){ - Input in; - cerr << "Enter number count: "; - cin >> in.number_count; - vector numbers(in.number_count); - in.numbers.resize(in.number_count); - for (size_t i = 0; i < in.number_count; i++) { - cin >> in.numbers[i]; - } - size_t bin_count; - cerr << "Enter bin count: "; - cin >> in.bin_count; +input_data(istream& cin, bool prompt) +{ + if (prompt==true) + { + Input in; + cerr << "Enter number count: "; + cin >> in.number_count; + vector numbers(in.number_count); + in.numbers.resize(in.number_count); + for (size_t i = 0; i < in.number_count; i++) + { + cin >> in.numbers[i]; + } + size_t bin_count; + cerr << "Enter bin count: "; + cin >> in.bin_count; - size_t max_count; - in.max_count = 0; - return in; + size_t max_count; + in.max_count = 0; + return in; } - if (prompt==false){ - Input in; - cin >> in.number_count; - vector numbers(in.number_count); - in.numbers.resize(in.number_count); - for (size_t i = 0; i < in.number_count; i++) { - cin >> in.numbers[i]; - } - size_t bin_count; - cin >> in.bin_count; + if (prompt==false) + { + Input in; + cin >> in.number_count; + vector numbers(in.number_count); + in.numbers.resize(in.number_count); + for (size_t i = 0; i < in.number_count; i++) + { + cin >> in.numbers[i]; + } + size_t bin_count; + cin >> in.bin_count; - size_t max_count; - in.max_count = 0; - return in; + size_t max_count; + in.max_count = 0; + return in; } } -int main(int argc, char* argv[]) +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); + return data_size; +} +Input +download(const string& address) { - - if (argc>1){ - CURL* curl = curl_easy_init(); - if(curl) { - CURLcode res; - const char* res2; - curl_easy_setopt(curl, CURLOPT_URL, argv[1]); - res = curl_easy_perform(curl); - if (res!=0){ - res2=curl_easy_strerror(res); - cout< 1) + { + in = download(argv[1]); + } + else + { + in = input_data(cin, true); + } - curl_global_init(CURL_GLOBAL_ALL); - auto in = input_data(cin, true); auto bins = make_histogram(in.numbers, in.bin_count, in.number_count, in.max_count); show_histogram_svg(bins, in.max_count, in.bin_count); return 0;