Этот коммит содержится в:
ruddos
2024-12-01 13:55:30 +03:00
Коммит b616275308
12 изменённых файлов: 284 добавлений и 0 удалений

3
lab1/check_general.bat Обычный файл
Просмотреть файл

@@ -0,0 +1,3 @@
@echo off
g++ -o general_program general_program.cpp
general_program.exe < input.txt > output_general.txt

9
lab1/check_individual.bat Обычный файл
Просмотреть файл

@@ -0,0 +1,9 @@
@echo off
g++ individual_program.cpp -o individual_program.exe
individual_program.exe < input.txt > output_individual.txt
fc output_individual.txt expected_output.txt
pause

2
lab1/expected_output.txt Обычный файл
Просмотреть файл

@@ -0,0 +1,2 @@
Number of columns: 2
Formula used: Square root formula (sqrt(N))

48
lab1/general_program.cpp Обычный файл
Просмотреть файл

@@ -0,0 +1,48 @@
#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
int main() {
size_t number_count;
cout << "Enter number count: ";
cin >> number_count;
vector<double> numbers(number_count);
cout << "Enter numbers:\n";
for (size_t i = 0; i < number_count; ++i) {
cin >> numbers[i];
}
size_t bin_count;
cout << "Enter number of bins: ";
cin >> bin_count;
double min = *min_element(numbers.begin(), numbers.end());
double max = *max_element(numbers.begin(), numbers.end());
double bin_size = (max - min) / bin_count;
vector<size_t> bins(bin_count, 0);
for (double number : numbers) {
size_t bin_index = static_cast<size_t>((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<double>(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<size_t>(bins[i] * scaling_factor);
for (size_t j = 0; j < scaled_height; ++j) {
cout << '*';
}
cout << '\n';
}
return 0;
}

33
lab1/individual_program.cpp Обычный файл
Просмотреть файл

@@ -0,0 +1,33 @@
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int N;
cout << "Enter the total number of elements (N): ";
cin >> N;
int columns;
string formula_used;
if (N == 0) {
columns = 0;
formula_used = "None (N is 0)";
} else {
double sqrt_value = sqrt(N);
if (sqrt_value > 25) {
columns = 1 + static_cast<int>(log2(N));
formula_used = "Sturges' formula (1 + floor(log2(N)))";
} else {
columns = static_cast<int>(sqrt_value);
formula_used = "Square root formula (sqrt(N))";
}
}
cout << "Number of columns: " << columns << endl;
cout << "Formula used: " << formula_used << endl;
return 0;
}

3
lab1/input.txt Обычный файл
Просмотреть файл

@@ -0,0 +1,3 @@
7
1 2 2 3 3 3 4
4

5
lab1/output_general.txt Обычный файл
Просмотреть файл

@@ -0,0 +1,5 @@
Enter number count: Enter numbers:
Enter number of bins: 1|*
2|**
3|***
1|*

2
lab1/output_individual.txt Обычный файл
Просмотреть файл

@@ -0,0 +1,2 @@
Enter the total number of elements (N): Number of columns: 2
Formula used: Square root formula (sqrt(N))