diff --git a/lab1/expected_output.txt b/lab1/expected_output.txt index 2a0bd3f..ef3bd13 100644 --- a/lab1/expected_output.txt +++ b/lab1/expected_output.txt @@ -1,2 +1,8 @@ +Enter number count: Enter numbers: +Enter number of bins: Number of columns: 2 -Formula used: Square root formula (sqrt(N)) \ No newline at end of file +Formula used: Square root formula (sqrt(N)) +1|* +2|** +3|*** +1|* \ No newline at end of file diff --git a/lab1/general_program.cpp b/lab1/general_program.cpp index cabe253..5fc515e 100644 --- a/lab1/general_program.cpp +++ b/lab1/general_program.cpp @@ -1,4 +1,3 @@ - #include #include #include @@ -45,4 +44,4 @@ int main() { } return 0; -} +} \ No newline at end of file diff --git a/lab1/individual_program.cpp b/lab1/individual_program.cpp index c8eb24a..ed84764 100644 --- a/lab1/individual_program.cpp +++ b/lab1/individual_program.cpp @@ -1,24 +1,40 @@ #include +#include +#include #include - +#include using namespace std; int main() { - int N; - cout << "Enter the total number of elements (N): "; - cin >> N; + 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 (N == 0) { + if (bin_count == 0) { columns = 0; formula_used = "None (N is 0)"; } else { - double sqrt_value = sqrt(N); + double sqrt_value = sqrt(bin_count); if (sqrt_value > 25) { - columns = 1 + static_cast(log2(N)); + columns = 1 + static_cast(log2(bin_count)); formula_used = "Sturges' formula (1 + floor(log2(N)))"; } else { columns = static_cast(sqrt_value); @@ -29,5 +45,29 @@ int main() { 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; } \ No newline at end of file diff --git a/lab1/output_individual.txt b/lab1/output_individual.txt index 4a40578..bfe306f 100644 --- a/lab1/output_individual.txt +++ b/lab1/output_individual.txt @@ -1,2 +1,8 @@ -Enter the total number of elements (N): Number of columns: 2 +Enter number count: Enter numbers: +Enter number of bins: +Number of columns: 2 Formula used: Square root formula (sqrt(N)) +1|* +2|** +3|*** +1|*