diff --git a/lab34.cbp b/lab34.cbp
new file mode 100644
index 0000000..0c0e7e4
--- /dev/null
+++ b/lab34.cbp
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..619b641
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,84 @@
+#include
+#include
+
+using namespace std;
+
+int main() {
+ const size_t SCREEN_WIDTH = 80;
+ const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
+ size_t number_count;
+ cerr << "Enter number count: ";
+ cin >> number_count;
+
+ vector numbers(number_count);
+ cerr << "Enter numbers: ";
+ for (size_t i = 0; i < number_count; i++) {
+ cin >> numbers[i];
+ }
+
+ size_t bin_count;
+ cerr << "Enter bin count: ";
+ cin >> bin_count;
+
+ vector bins(bin_count, 0);
+
+ double min = numbers[0];
+ double max = numbers[0];
+ for (double x : numbers) {
+ if (x < min) {
+ min = x;
+ }
+ else if (x > max) {
+ max = x;
+ }
+ }
+
+ double bin_size = (max - min) / bin_count;
+
+ for (size_t i = 0; i < number_count; i++) {
+ bool found = false;
+ for (size_t j = 0; (j < bin_count - 1) && !found; j++) {
+ auto lo = min + j * bin_size;
+ auto hi = min + (j + 1) * bin_size;
+ if ((lo <= numbers[i]) && (numbers[i] < hi)) {
+ bins[j]++;
+ found = true;
+ }
+ }
+ if (!found) {
+ bins[bin_count - 1]++;
+ }
+ }
+ size_t max_bin_count = 0;
+ for (size_t bin : bins) {
+ if (bin > max_bin_count) {
+ max_bin_count = bin;
+ }
+ }
+
+ if (max_bin_count <= MAX_ASTERISK) {
+ for (size_t i = 0; i < bin_count; i++) {
+ if (bins[i] < 10) cout << " ";
+ cout << " " << bins[i] << "|";
+ for (size_t j = 0; j < bins[i]; j++) {
+ cout << "*";
+ }
+ cout << endl;
+ }
+ } else {
+ for (size_t i = 0; i < bin_count; i++) {
+ size_t height = static_cast(MAX_ASTERISK * (static_cast(bins[i]) / max_bin_count));
+ // Выравнивание подписи
+ if (bins[i] < 100) cout << " ";
+ if (bins[i] < 10) cout << " ";
+ cout << bins[i] << "|";
+
+ for (size_t j = 0; j < height; j++) {
+ cout << "*";
+ }
+ cout << endl;
+ }
+ }
+
+ return 0;
+}