Родитель
							
								
									2633ce2005
								
							
						
					
					
						Сommit
						312f8066c3
					
				@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					#include "histogram.h"
 | 
				
			||||||
 | 
					#include <vector>
 | 
				
			||||||
 | 
					void find_minmax(const std::vector<double>& numbers, double& min, double& max) {
 | 
				
			||||||
 | 
						min = numbers[0];
 | 
				
			||||||
 | 
						max = numbers[0];
 | 
				
			||||||
 | 
						for (double x : numbers) {
 | 
				
			||||||
 | 
							if (x < min) {
 | 
				
			||||||
 | 
								min = x;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else if (x > max) {
 | 
				
			||||||
 | 
								max = x;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					std::vector<size_t> make_histogram(const std::vector<double>& numbers, size_t bin_count)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						double min, max;
 | 
				
			||||||
 | 
						find_minmax(numbers, min, max);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						std::vector<size_t> bins(bin_count);
 | 
				
			||||||
 | 
						double bin_size = (max - min) / bin_count;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (double num : numbers) {
 | 
				
			||||||
 | 
							bool found = false;
 | 
				
			||||||
 | 
							for (size_t j = 0; j < bin_count - 1 && !found; j++) {
 | 
				
			||||||
 | 
								double lo = min + j * bin_size;
 | 
				
			||||||
 | 
								double hi = min + (j + 1) * bin_size;
 | 
				
			||||||
 | 
								if (lo <= num && num < hi) {
 | 
				
			||||||
 | 
									bins[j]++;
 | 
				
			||||||
 | 
									found = true;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if (!found) {
 | 
				
			||||||
 | 
								bins[bin_count - 1]++;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return bins;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
					Загрузка…
					
					
				
		Ссылка в новой задаче