Вы не можете выбрать более 25 тем
			Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
		
		
		
		
		
			
		
			
				
	
	
		
			84 строки
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
			
		
		
	
	
			84 строки
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
| #include <iostream>
 | |
| #include <vector>
 | |
| #include "histogram.h"
 | |
| #include "histogram.cpp"
 | |
| 
 | |
| 
 | |
| using namespace std;
 | |
| 
 | |
| struct Input {
 | |
|     vector<double> numbers;
 | |
|     size_t bin_count{};
 | |
| };
 | |
| 
 | |
| Input
 | |
| input_data() {
 | |
|     Input in;
 | |
| 
 | |
|     size_t number_count;
 | |
|     cerr << "Enter number count: ";
 | |
|     cin >> number_count;
 | |
| 
 | |
|     in.numbers.resize(number_count);
 | |
|     for (size_t i = 0; i < number_count; i++) {
 | |
|         cin >> in.numbers[i];
 | |
|     }
 | |
| 
 | |
|     cerr << "Enter number bin: ";
 | |
|     cin >> in.bin_count;
 | |
| 
 | |
|     return in;
 | |
| }
 | |
| 
 | |
| 
 | |
| void
 | |
| show_histogram_text(const vector<size_t>& bins) {
 | |
|     const size_t SCREEN_WIDTH = 80;
 | |
|     const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
 | |
| 
 | |
|     size_t max_count = bins[0];
 | |
|     for (size_t i = 0; i < bins.size(); i++) {
 | |
|         if (bins[i] > max_count) {
 | |
|             max_count = bins[i];
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     for (size_t i = 0; i < bins.size(); i++) {
 | |
|         if (bins[i] < 10) {
 | |
|             cout << "  " << bins[i] << "|";
 | |
|         }
 | |
|         else if (bins[i] < 100) {
 | |
|             cout << " " << bins[i] << "|";
 | |
|         }
 | |
|         else if (bins[i] < 1000) {
 | |
|             cout << bins[i] << "|";
 | |
|         }
 | |
| 
 | |
|         size_t height;
 | |
|         if (max_count <= MAX_ASTERISK) {
 | |
|             height = bins[i];
 | |
|         }
 | |
|         else {
 | |
|             height = MAX_ASTERISK * (bins[i] * 1.0 / max_count);
 | |
|         }
 | |
| 
 | |
|         for (size_t j = 0; j < height; j++) {
 | |
|             cout << "*";
 | |
|         }
 | |
|         cout << endl;
 | |
|     }
 | |
| }
 | |
| 
 | |
| int
 | |
| main() {
 | |
|     Input in = input_data();
 | |
| 
 | |
|     double min, max;
 | |
|     find_minmax(in.numbers, min, max);
 | |
| 
 | |
|     auto bins = make_histogram(in.numbers, in.bin_count, min, max);
 | |
|     show_histogram_text(bins);
 | |
| 
 | |
|     return 0;
 | |
| }
 |