From 04e113f958c3819c9a252d744dcae9e18f493573 Mon Sep 17 00:00:00 2001 From: ChirkaAR Date: Fri, 6 Jun 2025 12:33:22 +0300 Subject: [PATCH] Before --- .gitignore | 3 + lab01.cbp | 10 +++ lab01.depend | 175 ++++++++++++++++++++++++++++++++++++++++++++++++ lab01.layout | 50 ++++++++++++++ main.cpp | 119 ++++++++++++++++---------------- marks.svg | 0 unittest.depend | 62 +++++++++++++++++ unittest.layout | 20 ++++++ 8 files changed, 380 insertions(+), 59 deletions(-) create mode 100644 .gitignore create mode 100644 lab01.depend create mode 100644 lab01.layout create mode 100644 marks.svg create mode 100644 unittest.depend create mode 100644 unittest.layout diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0a4fc6b --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/bin +/obj +/curl diff --git a/lab01.cbp b/lab01.cbp index dbd06a2..7380d75 100644 --- a/lab01.cbp +++ b/lab01.cbp @@ -30,8 +30,18 @@ + + + + + + + + + + diff --git a/lab01.depend b/lab01.depend new file mode 100644 index 0000000..4111812 --- /dev/null +++ b/lab01.depend @@ -0,0 +1,175 @@ +# depslib dependency file v1.0 +1748128397 source:c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\main.cpp + + + "histogram.h" + "text.h" + "svg.h" + + + + +1745848382 source:c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\histogram.cpp + "histogram.h" + + + +1745845585 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\histogram.h + + +1745703516 source:c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\text.cpp + "text.h" + + + +1745703516 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\text.h + + +1745706239 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\svg.h + + + +1748031452 source:c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\svg.cpp + "svg.h" + + +1748032988 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\curl\include\curl\curl.h + "curlver.h" + "system.h" + + + + + + + + + + + "easy.h" + "multi.h" + "urlapi.h" + "options.h" + "header.h" + "websockets.h" + "mprintf.h" + "typecheck-gcc.h" + +1748032988 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\curl\include\curl\curlver.h + +1748032988 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\curl\include\curl\system.h + + + + + + + +1748032988 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\curl\include\curl\easy.h + +1748032988 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\curl\include\curl\multi.h + "curl.h" + +1748032988 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\curl\include\curl\urlapi.h + "curl.h" + +1748032988 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\curl\include\curl\options.h + +1748032988 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\curl\include\curl\header.h + +1748032988 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\curl\include\curl\websockets.h + +1748032988 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\curl\include\curl\mprintf.h + + + "curl.h" + +1748032988 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\curl\include\curl\typecheck-gcc.h + +1749201288 source:c:\users\liza\desktop\lab01\histogram.cpp + "histogram.h" + + + +1745845585 c:\users\liza\desktop\lab01\histogram.h + + +1749201122 source:c:\users\liza\desktop\lab01\svg.cpp + "svg.h" + + +1745706239 c:\users\liza\desktop\lab01\svg.h + + + +1745703516 source:c:\users\liza\desktop\lab01\text.cpp + "text.h" + + + +1745703516 c:\users\liza\desktop\lab01\text.h + + +1749198358 source:c:\users\liza\desktop\lab01\main.cpp + + + + + "histogram.h" + "svg.h" + "text.h" + + +1748032988 c:\users\liza\desktop\lab01\curl\include\curl\curl.h + "curlver.h" + "system.h" + + + + + + + + + + + "easy.h" + "multi.h" + "urlapi.h" + "options.h" + "header.h" + "websockets.h" + "mprintf.h" + "typecheck-gcc.h" + +1748032988 c:\users\liza\desktop\lab01\curl\include\curl\curlver.h + +1748032988 c:\users\liza\desktop\lab01\curl\include\curl\system.h + + + + + + + +1748032988 c:\users\liza\desktop\lab01\curl\include\curl\easy.h + +1748032988 c:\users\liza\desktop\lab01\curl\include\curl\multi.h + "curl.h" + +1748032988 c:\users\liza\desktop\lab01\curl\include\curl\urlapi.h + "curl.h" + +1748032988 c:\users\liza\desktop\lab01\curl\include\curl\options.h + +1748032988 c:\users\liza\desktop\lab01\curl\include\curl\header.h + +1748032988 c:\users\liza\desktop\lab01\curl\include\curl\websockets.h + +1748032988 c:\users\liza\desktop\lab01\curl\include\curl\mprintf.h + + + "curl.h" + +1748032988 c:\users\liza\desktop\lab01\curl\include\curl\typecheck-gcc.h + diff --git a/lab01.layout b/lab01.layout new file mode 100644 index 0000000..80d8c8f --- /dev/null +++ b/lab01.layout @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/main.cpp b/main.cpp index 0f543b2..541a926 100644 --- a/main.cpp +++ b/main.cpp @@ -1,11 +1,11 @@ #include #include +#include +#include #include "histogram.h" -#include "text.h" #include "svg.h" +#include "text.h" #include -#include -#include using namespace std; @@ -15,82 +15,83 @@ struct Input size_t bin_count{}; }; -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 -input_data(istream& in, bool prompt) -{ - Input cin; - string numbCntPrmt, numbsPrmt, binCntPrmt; - if (prompt == true) { - numbCntPrmt = "Enter number count: "; - numbsPrmt = "Enter numbers: "; - binCntPrmt = "Enter bin count: "; - } +Input input_data(istream& in, bool prompt = true) { // Добавлен параметр prompt со значением по умолчанию + Input data; size_t number_count; - cerr << numbCntPrmt; + + if (prompt) { + cerr << "Enter number count: "; + } in >> number_count; - cin.numbers.resize(number_count); - vector numbers(number_count); + data.numbers.resize(number_count); + if (prompt) { + cerr << "Enter numbers: "; + } + for (size_t i = 0; i < number_count; i++) { + in >> data.numbers[i]; + } - cerr << numbsPrmt; - for (size_t i = 0; i < number_count; i++) - { - in >> cin.numbers[i]; + if (prompt) { + cerr << "Enter number of bins: "; } + in >> data.bin_count; - cerr << binCntPrmt; - in >> cin.bin_count; - return cin; + return data; } -Input -download(const string& address) { - stringstream buffer; +// Callback для записи данных в stringstream +static size_t Write_data(void* items, size_t item_size, size_t item_count, void* ctx) { + size_t data_size = item_size * item_count; + auto* 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) { - curl_off_t ul; - res = curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD_T, &ul); - if(!res) { - cerr<<"Uploaded bytes" << ul << endl; - } - } - - if (res != 0){ - cerr << curl_easy_strerror(res); - exit(1); - } - curl_easy_cleanup(curl); + + if (!curl) { + cerr << "Ошибка: не удалось инициализировать cURL" << endl; + exit(1); } + + // Настройка cURL + curl_easy_setopt(curl, CURLOPT_URL, address.c_str()); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, Write_data); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); // Отключаем проверку SSL для тестов + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + + // Выполнение запроса + CURLcode res = curl_easy_perform(curl); + if (res != CURLE_OK) { + cerr << "Ошибка загрузки: " << curl_easy_strerror(res) << endl; + exit(1); + } + + curl_easy_cleanup(curl); return input_data(buffer, false); } -int main(int argc, char* argv[]) -{ +int main(int argc, char* argv[]) { + curl_global_init(CURL_GLOBAL_ALL); + Input input; if (argc > 1) { input = download(argv[1]); - } else { + } + else { input = input_data(cin, true); } - size_t max_count; - auto in = input_data(cin, true); - auto bins = make_histogram(in.numbers, in.bin_count); + auto bins = make_histogram(input.numbers, input.bin_count); show_histogram_svg(bins); + curl_global_cleanup(); + return 0; + } diff --git a/marks.svg b/marks.svg new file mode 100644 index 0000000..e69de29 diff --git a/unittest.depend b/unittest.depend new file mode 100644 index 0000000..1adb87d --- /dev/null +++ b/unittest.depend @@ -0,0 +1,62 @@ +# depslib dependency file v1.0 +1745848382 source:c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\histogram.cpp + "histogram.h" + + + +1745845585 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\histogram.h + + +1745849386 source:c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\unittest.cpp + "doctest.h" + "histogram_internal.h" + + +1745704427 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\doctest.h + + + + + + + "doctest_fwd.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1745848412 c:\users\lenovo\documents\labsproga2sem\firstlaba\lab01\histogram_internal.h + + diff --git a/unittest.layout b/unittest.layout new file mode 100644 index 0000000..deff8d8 --- /dev/null +++ b/unittest.layout @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +