#include #include #include #include #include using namespace std; int main() { int number_count; cout << "Enter number count: "; cin >> number_count; if (number_count == 0) { cout << "No numbers provided. Exiting program." << endl; return 0; } vector numbers(number_count); cout << "Enter numbers:\n"; for (size_t i = 0; i < number_count; ++i) { cin >> numbers[i]; } int bin_count; cout << "Enter number of bins:\n"; cin >> bin_count; int columns; string formula_used; if (bin_count == 0) { columns = 0; formula_used = "None (N is 0)"; } else { double sqrt_value = sqrt(bin_count); if (sqrt_value > 25) { columns = 1 + static_cast(log2(bin_count)); formula_used = "Sturges' formula (1 + floor(log2(N)))"; } else { columns = static_cast(sqrt_value); formula_used = "Square root formula (sqrt(N))"; } } cout << "Number of columns: " << columns << endl; cout << "Formula used: " << formula_used << endl; double min = *min_element(numbers.begin(), numbers.end()); double max = *max_element(numbers.begin(), numbers.end()); double bin_size = (max - min) / bin_count; vector bins(bin_count, 0); for (double number : numbers) { size_t bin_index = static_cast((number - min) / bin_size); if (bin_index >= bin_count) bin_index = bin_count - 1; bins[bin_index]++; } size_t max_bin_count = *max_element(bins.begin(), bins.end()); const size_t max_width = 80; double scaling_factor = max_bin_count > max_width ? static_cast(max_width) / max_bin_count : 1.0; for (size_t i = 0; i < bin_count; ++i) { cout << bins[i] << "|"; size_t scaled_height = static_cast(bins[i] * scaling_factor); for (size_t j = 0; j < scaled_height; ++j) { cout << '*'; } cout << '\n'; } return 0; }