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"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+