Сравнить коммиты
	
		
			6 Коммитов 
		
	
	
		
			f69053ac3a
			...
			abc9e41224
		
	
	| Автор | SHA1 | Дата | 
|---|---|---|
|  | abc9e41224 | 2 лет назад | 
|  | 425edb8b48 | 2 лет назад | 
|  | 05813b0411 | 2 лет назад | 
|  | 5db3ef3543 | 2 лет назад | 
|  | bbd1176de8 | 2 лет назад | 
|  | 1a18eacae5 | 2 лет назад | 
| @ -0,0 +1,51 @@ | ||||
| #pragma once | ||||
| 
 | ||||
| #include <iostream> | ||||
| #include <vector> | ||||
| 
 | ||||
| #include "histogram.h" | ||||
| 
 | ||||
| using namespace std; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| void find_minmax(vector <double> numbers, double& min, double& max) { | ||||
|     min = numbers[0]; | ||||
|     max = numbers[0]; | ||||
|     for (int i = 0; i < numbers.size(); i++){ | ||||
|         if (numbers[i] < min) | ||||
|                     min = numbers[i]; | ||||
|         if (numbers[i] > max) | ||||
|                     max = numbers[i]; | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| } | ||||
| 
 | ||||
| vector<size_t> make_histogram(  vector<double> numbers,  size_t bin_count){ | ||||
| vector<size_t> bins(bin_count); | ||||
| 
 | ||||
| double min,max; | ||||
| 
 | ||||
| find_minmax( numbers, min, max); | ||||
| 
 | ||||
| double bin_size = (max - min) / bin_count; | ||||
| 
 | ||||
| for (size_t i = 0; i < numbers.size(); i++){ | ||||
|           bool found = false; | ||||
|           for (size_t j = 0; (j < bin_count - 1) && !found; j++){ | ||||
|                   auto lo = min + j * bin_size; | ||||
|                   auto hi = min + (j + 1) * bin_size; | ||||
|                   if ((lo <= numbers[i]) && (numbers[i] < hi)){ | ||||
|                            bins[j]++; | ||||
|                            found = true; | ||||
|                    } | ||||
|            } | ||||
|            if (!found){ | ||||
|                  bins[ bin_count - 1]++; | ||||
|            } | ||||
| } | ||||
| 
 | ||||
| return bins; | ||||
| } | ||||
| 
 | ||||
| @ -0,0 +1,9 @@ | ||||
| #ifndef HISTOGRAM_H_INCLUDED | ||||
| #define HISTOGRAM_H_INCLUDED | ||||
| #include <vector> | ||||
| 
 | ||||
| std:: vector<size_t> make_histogram(std::vector<double> numbers,  size_t bin_count); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #endif // HISTOGRAM_H_INCLUDED
 | ||||
| @ -0,0 +1,63 @@ | ||||
| #pragma once | ||||
| 
 | ||||
| #include <iostream> | ||||
| #include <vector> | ||||
| 
 | ||||
| #include "svg.h" | ||||
| 
 | ||||
| using namespace std; | ||||
| 
 | ||||
| 
 | ||||
| void svg_begin(double width, double height) { | ||||
|     cout << "<?xml version='1.0' encoding='UTF-8'?>\n"; | ||||
|     cout << "<svg "; | ||||
|     cout << "width='" << width << "' "; | ||||
|     cout << "height='" << height << "' "; | ||||
|     cout << "viewBox='0 0 " << width << " " << height << "' "; | ||||
|     cout << "xmlns='http://www.w3.org/2000/svg'>\n"; | ||||
| } | ||||
| 
 | ||||
| void svg_end() { | ||||
|     cout << "</svg>\n"; | ||||
| } | ||||
| 
 | ||||
| void svg_text(double left, double baseline, string text) { | ||||
|             cout << "<text x='" << left << "' y=' "<< baseline <<" '> "<< text <<" </text>"; | ||||
| } | ||||
| 
 | ||||
| void svg_rect(double x, double y, double width, double height, string stroke, string fill){ | ||||
|      cout << "<rect x=' " << x << "' y=' "<< y <<" ' width=' " << width <<" ' height=' " << height << | ||||
|       " ' stroke=' red' fill=' #ffeeee'/>"; | ||||
| } | ||||
| 
 | ||||
| void show_histogram_svg( vector<size_t>& bins) { | ||||
|     const auto IMAGE_WIDTH = 400; | ||||
|     const auto IMAGE_HEIGHT = 300; | ||||
|     const auto TEXT_LEFT = 20; | ||||
|     const auto TEXT_BASELINE = 20; | ||||
|     const auto TEXT_WIDTH = 50; | ||||
|     const auto BIN_HEIGHT = 30; | ||||
|     const auto BLOCK_WIDTH = 10; | ||||
|     svg_begin(IMAGE_WIDTH, IMAGE_HEIGHT); | ||||
|     double top = 0; | ||||
|     const size_t MAX_ASTERISK = IMAGE_WIDTH - TEXT_WIDTH; | ||||
|     int maxb = bins[0]; | ||||
|     for (size_t j = 0; j < bins.size(); j++){ | ||||
|         if (bins[j] > maxb) maxb = bins[j]; | ||||
|     } | ||||
|     cout <<"                         " << maxb<< "            "; | ||||
| 
 | ||||
|     for (size_t i = 0; i < bins.size(); i++) { | ||||
|             double bin_width; | ||||
|             if (maxb == bins[i] ){ | ||||
|             bin_width = MAX_ASTERISK ; | ||||
|             } | ||||
|             else { | ||||
|                bin_width = MAX_ASTERISK * bins[i] / maxb; | ||||
|             } | ||||
|                svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(bins[i])); | ||||
|                svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT,  "blue", "#aaffaa"); | ||||
|                top += BIN_HEIGHT; | ||||
|     } | ||||
|     svg_end(); | ||||
| } | ||||
| @ -0,0 +1,7 @@ | ||||
| #ifndef SVG_H_INCLUDED | ||||
| #define SVG_H_INCLUDED | ||||
| #include <vector> | ||||
| 
 | ||||
| void show_histogram_svg(std:: vector<size_t>& bins); | ||||
| 
 | ||||
| #endif // SVG_H_INCLUDED
 | ||||
| @ -0,0 +1,33 @@ | ||||
| #pragma once | ||||
| 
 | ||||
| #include <iostream> | ||||
| #include <vector> | ||||
| 
 | ||||
| #include "text.h" | ||||
| 
 | ||||
| using namespace std; | ||||
| 
 | ||||
| void show_histogram_text (vector<size_t> bins, size_t bin_count ){ | ||||
| int i; | ||||
| 
 | ||||
| int r[20]; | ||||
| r[0]=0; | ||||
| for (i = 0; i <  bin_count; i++){ | ||||
|         r[i+1]= /*r[i]+ */ bins[i]; | ||||
| } | ||||
| int maxbin=0; | ||||
| for (size_t i = 0; i <  bin_count; i++){ | ||||
|        if ( r[i+1] > maxbin) maxbin = r[i+1] ; | ||||
| } | ||||
| float k=1; | ||||
| //k = 76.00 / maxbin;
 | ||||
| for (size_t i = 0; i <  bin_count; i++){ | ||||
|         if (r[i+1]<10) cout << " "; | ||||
|         if (r[i+1]<100) cout << " "; | ||||
|          cout << r[i+1] << "|"; | ||||
|          for (size_t j = 0; j <k*(r[i+1]); j++) { | ||||
|                 cout << "*" ; | ||||
|          } | ||||
|          cout << endl; | ||||
| } | ||||
| } | ||||
| @ -0,0 +1,7 @@ | ||||
| #ifndef TEXT_H_INCLUDED | ||||
| #define TEXT_H_INCLUDED | ||||
| #include <vector> | ||||
| 
 | ||||
| void show_histogram_text (std::vector<size_t>bins,  size_t bin_count ); | ||||
| 
 | ||||
| #endif // TEXT_H_INCLUDED
 | ||||
					Загрузка…
					
					
				
		Ссылка в новой задаче