From 0b7d923bba4bfb0fd90ef2159589c3afddcded88 Mon Sep 17 00:00:00 2001 From: GladkyMS Date: Mon, 30 Sep 2024 10:25:11 +0300 Subject: [PATCH] code:personal variant L4 --- vector.cpp | 239 ++++++++++++++++++++++++++--------------------------- 1 file changed, 119 insertions(+), 120 deletions(-) diff --git a/vector.cpp b/vector.cpp index 7fbc45d..30fc23c 100644 --- a/vector.cpp +++ b/vector.cpp @@ -16,132 +16,131 @@ struct Input { }; -//Input input_data() 3я лабораторная -//{ -// size_t number_count; -// cin >> number_count; -// Input in; -// in.numbers.resize(number_count); -// for (size_t i = 0; i < number_count; i++) -// { -// cin >> in.numbers[i]; -// -// } -// -// cin >> in.bin_count; -// -// return in; -//} -Input input_data(istream& in,bool prompt) { - - if (prompt == true) cerr << "Enter number_count: "; +Input input_data() +{ + size_t number_count; + cin >> number_count; + Input in; + in.numbers.resize(number_count); + for (size_t i = 0; i < number_count; i++) + { + cin >> in.numbers[i]; - size_t number_count; - in >> number_count; + } - Input data; - data.numbers.resize(number_count); + cin >> in.bin_count; - if (prompt == true) cerr << "Enter numbers: "; - - for (size_t i = 0; i < number_count; i++) { - in >> data.numbers[i]; - } - - if (prompt == true) cerr << "Enter bin count: "; - - in >> data.bin_count; - return data; + 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; - stringstream* buffer = reinterpret_cast(ctx); - buffer->write(reinterpret_cast(items), data_size); - return 0; -} -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) { - fprintf(stderr, "curl_easy_perform() failed: %s\n", - curl_easy_strerror(res)); - exit(1); - } - curl_easy_cleanup(curl); - } - return input_data(buffer, false); -} - -//int main() -//{ -// auto in = input_data(cin); -// vector bins = make_histogram(in.numbers, in.bin_count); -// show_histogram_svg(bins, in.bin_count); +//Input input_data(istream& in,bool prompt) { +// +// if (prompt == true) cerr << "Enter number_count: "; +// +// size_t number_count; +// in >> number_count; +// +// Input data; +// data.numbers.resize(number_count); +// +// if (prompt == true) cerr << "Enter numbers: "; +// +// for (size_t i = 0; i < number_count; i++) { +// in >> data.numbers[i]; +// } +// +// if (prompt == true) cerr << "Enter bin count: "; +// +// in >> data.bin_count; +// return data; +//} +//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) { +// 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) { +// fprintf(stderr, "curl_easy_perform() failed: %s\n", +// curl_easy_strerror(res)); +// exit(1); +// } +// curl_easy_cleanup(curl); +// } +// +// return input_data(buffer, false); //} -void usage() { - cout << "Usage: lab34.exe [-format {text|svg}] URL\n"; - exit(1); +int main() +{ + auto in = input_data(); + vector bins = make_histogram(in.numbers, in.bin_count); + show_histogram_svg(bins, in.bin_count); } -int main(int argc, char* argv[]) { - curl_global_init(CURL_GLOBAL_ALL); - - if (argc > 1) { - string format_option; - for (int i = 1; i < argc; ++i) { - if (argv[i][0] == '-') { - if (strcmp(argv[i], "--") == 0) { - break; - } - if (strlen(argv[i]) >= 9 && strcmp(argv[i] + 1, "format") == 0) { - format_option = argv[++i]; - break; - } - } - } - - if (!format_option.empty()) { - if (format_option != "text" && format_option != "svg") { - usage(); - } - } - - Input input; - if (argc > 2) { - input = download(argv[2]); - } - else { - input = input_data(cin, true); - } - - vector bins = make_histogram(input.numbers, input.bin_count); - - if (!format_option.empty()) { - if (format_option == "text") { - show_histogram_text(bins, input.bin_count); - } - else { - show_histogram_svg(bins, input.bin_count); - } - } - else { - show_histogram_svg(bins, input.bin_count); - } - } - else { - cerr << "No arguments provided." << endl; - usage(); - } - - return 0; -} +//void usage() { +// cout << "Usage: lab34.exe [-format {text|svg}] URL\n"; +// exit(1); +//} +// +//int main(int argc, char* argv[]) { +// curl_global_init(CURL_GLOBAL_ALL); +// +// if (argc > 1) { +// string format_option; +// for (int i = 1; i < argc; i++) { +// if (argv[i][0] == '-') { +// +// if ( strcmp(argv[i], "-format") == 0) { +// format_option = argv[i++]; +// break; +// } +// } +// } +// +// if (!format_option.empty()) { +// if (format_option != "text" && format_option != "svg") { +// usage(); +// } +// } +// +// Input input; +// if (argc > 2) { +// input = download(argv[2]); +// } +// else { +// input = input_data(cin, true); +// } +// +// vector bins = make_histogram(input.numbers, input.bin_count); +// +// if (!format_option.empty()) { +// if (format_option == "text") { +// show_histogram_text(bins, input.bin_count); +// } +// else { +// show_histogram_svg(bins, input.bin_count); +// } +// } +// else { +// show_histogram_svg(bins, input.bin_count); +// } +// } +// else { +// cerr << "No arguments provided." << endl; +// usage(); +// } +// +// return 0; +//}