Сравнить коммиты
	
		
			Ничего общего в коммитах. '990a0e33f78b22eba2502867cb142debbd0d88ed' и 'c0d2a43b70cea1aea7c704ba389045686d4ff657' имеют совершенно разные истории. 
		
	
	
		
			990a0e33f7
			...
			c0d2a43b70
		
	
		
	@ -1,5 +1,4 @@
 | 
				
			|||||||
/bin
 | 
					/bin
 | 
				
			||||||
/obj
 | 
					/obj
 | 
				
			||||||
/lab03.layout
 | 
					/lab03.layout
 | 
				
			||||||
/curl
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,84 +1,38 @@
 | 
				
			|||||||
#include <iostream>
 | 
					#include <iostream>
 | 
				
			||||||
#include <vector>
 | 
					#include <vector>
 | 
				
			||||||
#include <sstream>
 | 
					 | 
				
			||||||
#include <string>
 | 
					 | 
				
			||||||
#include <curl/curl.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_data(istream& stream, bool prompt) {
 | 
					};
 | 
				
			||||||
  Input in;
 | 
					Input
 | 
				
			||||||
 | 
					input_data() {
 | 
				
			||||||
    size_t number_count;
 | 
					    size_t number_count;
 | 
				
			||||||
  if (prompt) {
 | 
					 | 
				
			||||||
    cerr << "Enter number count: ";
 | 
					    cerr << "Enter number count: ";
 | 
				
			||||||
  }
 | 
					    cin >> number_count;
 | 
				
			||||||
  stream >> number_count;
 | 
					    Input in;
 | 
				
			||||||
    in.numbers.resize(number_count);
 | 
					    in.numbers.resize(number_count);
 | 
				
			||||||
 | 
					    cerr << "Enter numbers: ";
 | 
				
			||||||
    for (size_t i = 0; i < number_count; i++) {
 | 
					    for (size_t i = 0; i < number_count; i++) {
 | 
				
			||||||
    if (prompt) {
 | 
					        cin >> in.numbers[i];
 | 
				
			||||||
      cerr << "Enter number " << i+1 << ": ";
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    stream >> in.numbers[i];
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  if (prompt) {
 | 
					 | 
				
			||||||
    cerr << "Enter bin count: ";
 | 
					    cerr << "Enter bin count: ";
 | 
				
			||||||
  }
 | 
					    cin>> in.bin_count;
 | 
				
			||||||
  stream >> in.bin_count;
 | 
					 | 
				
			||||||
  return in;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
size_t
 | 
					    return in;
 | 
				
			||||||
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<stringstream*>(ctx);
 | 
					 | 
				
			||||||
    (*buffer).write(reinterpret_cast<const char*>(items), data_size);
 | 
					 | 
				
			||||||
    return data_size;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Input
 | 
					int
 | 
				
			||||||
download(const string& address) {
 | 
					main() {
 | 
				
			||||||
    stringstream buffer;
 | 
					    auto in = input_data();
 | 
				
			||||||
    CURL *curl = curl_easy_init();
 | 
					    auto bins = make_histogram(in.numbers, in.bin_count);
 | 
				
			||||||
    if(curl) {
 | 
					    show_histogram_svg(bins);
 | 
				
			||||||
        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);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int speed;
 | 
					 | 
				
			||||||
        curl_easy_getinfo(curl,CURLINFO_SPEED_DOWNLOAD_T, & speed);
 | 
					 | 
				
			||||||
        cerr << "The average download speed: " << speed <<  " bytes/second" << endl ;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        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[])
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    Input input;
 | 
					 | 
				
			||||||
    if (argc > 1) {
 | 
					 | 
				
			||||||
        input = download(argv[1]);
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        input = input_data(cin, true);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    const auto bins = make_histogram(input.numbers, input.bin_count);
 | 
					 | 
				
			||||||
    show_histogram_svg(bins);
 | 
					 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
					Загрузка…
					
					
				
		Ссылка в новой задаче