Сравнить коммиты
	
		
			4 Коммитов 
		
	
	
		
			a2ccc8d890
			...
			55311054d0
		
	
	| Автор | SHA1 | Дата | 
|---|---|---|
|  Sasha (KobzevAV) | 55311054d0 | 2 лет назад | 
|  Sasha (KobzevAV) | a308f587ff | 2 лет назад | 
|  Sasha (KobzevAV) | 7ed295f04f | 2 лет назад | 
|  Sasha (KobzevAV) | 5ac6feb8a0 | 2 лет назад | 
| @ -1,44 +1,100 @@ | |||||||
| #include <iostream> | #include <iostream> | ||||||
|  | #include <string> | ||||||
|  | #include <sstream> | ||||||
| #include <vector> | #include <vector> | ||||||
| #include <curl/curl.h> | #include <curl/curl.h> | ||||||
|  | #include <stdio.h> | ||||||
| #include "histogram.h" | #include "histogram.h" | ||||||
| #include "text.h" | #include "text.h" | ||||||
| #include "svg.h" | #include "svg.h" | ||||||
| using namespace std; | using namespace std; | ||||||
|  | 
 | ||||||
| struct Input { | struct Input { | ||||||
|     vector<double> numbers; |     vector<double> numbers; | ||||||
|     size_t bin_count{}; |     size_t bin_count{}; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| Input | Input | ||||||
| input_data(istream& in, bool prompt){ | input_data(istream& inp, bool prompt){ | ||||||
|     size_t number_count; |     size_t number_count; | ||||||
|     in >> number_count; |  | ||||||
| 
 |  | ||||||
|     Input inp; |  | ||||||
|     inp.numbers.resize(number_count); |  | ||||||
| 
 |  | ||||||
|     if (prompt){ |     if (prompt){ | ||||||
|         std::cerr << "enter bin_count"; |         cerr << "enter number_count"; | ||||||
|     } |     } | ||||||
|  |     inp >> number_count; | ||||||
| 
 | 
 | ||||||
|  |     Input in; | ||||||
|  |     in.numbers.resize(number_count); | ||||||
|  |     if (prompt){ | ||||||
|  |         std::cerr << "enter numbers"; | ||||||
|  |     } | ||||||
|     for (size_t i = 0; i < number_count; i++){ |     for (size_t i = 0; i < number_count; i++){ | ||||||
|         in >> inp.numbers[i]; |         inp >> in.numbers[i]; | ||||||
|     } |     } | ||||||
|  |     if (prompt){ | ||||||
|  |         std::cerr << "enter bin_count"; | ||||||
|  |     } | ||||||
|  |     inp >> in.bin_count; | ||||||
|  |     return in; | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
|     in >> inp.bin_count; | size_t | ||||||
|  | write_data(void* items, size_t item_size, size_t item_count, void* ctx) { | ||||||
|  |     stringstream* buffer = reinterpret_cast<stringstream*>(ctx); | ||||||
|  |     size_t data_size = item_size * item_count; | ||||||
|  |     (*buffer).write(reinterpret_cast<const char*>(items), data_size); | ||||||
|  |     return data_size; | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
|     return inp; | string | ||||||
|  | filling(const string& key, const string& color){ | ||||||
|  |     if(strcmp(key.c_str(), "-fill") == 0){ | ||||||
|  |         if (strcmp(color.c_str(), " ") == 0){ | ||||||
|  |             cerr << "Error: no color specified"; | ||||||
|  |             exit(1); | ||||||
|  |         } | ||||||
|  |         return color.c_str(); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Input | ||||||
|  | download(const string& adress){ | ||||||
|  |     stringstream buffer; | ||||||
|  |     CURL* curl = curl_easy_init(); | ||||||
|  |     if(curl) { | ||||||
|  |         CURLcode res; | ||||||
|  |         curl_easy_setopt(curl, CURLOPT_URL, adress.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_easy_cleanup(curl); | ||||||
|  |     } | ||||||
|  |     return input_data(buffer, false); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int main(int argc, char* argv[]){ | int main(int argc, char* argv[]){ | ||||||
|  |     string color = "base"; | ||||||
|     curl_global_init(CURL_GLOBAL_ALL); |     curl_global_init(CURL_GLOBAL_ALL); | ||||||
|     if (argc > 1){ |     Input in; | ||||||
|         cerr << "argv[0] = " << argv[0] << "argc = " << argc; |     if (argc > 1) { | ||||||
|         return 0; |         in = download(argv[1]); | ||||||
|  |     } else { | ||||||
|  |         in = input_data(cin, true); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (argc > 2){ | ||||||
|  |         if (argv[3] == NULL){ | ||||||
|  |             color = filling(argv[2], " "); | ||||||
|  |         } | ||||||
|  |         else{ | ||||||
|  |         color = filling(argv[2], argv[3]); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|     auto in = input_data(cin, true); | 
 | ||||||
|     auto bins = make_histogram(in.numbers, in.bin_count); |     auto bins = make_histogram(in.numbers, in.bin_count); | ||||||
|     auto borders = make_borders(in.numbers, in.bin_count); |     auto borders = make_borders(in.numbers, in.bin_count); | ||||||
|     show_histogram_svg(bins, borders, in.bin_count); |     show_histogram_svg(bins, borders, in.bin_count, color); | ||||||
| } | } | ||||||
|  | |||||||
					Загрузка…
					
					
				
		Ссылка в новой задаче