commit 30b826a2ed451e130c5c812f2b3858088c3d698c Author: Andrey Date: Mon Apr 3 14:24:13 2023 +0300 lab01 diff --git a/lab01.cbp b/lab01.cbp new file mode 100644 index 0000000..d541ad7 --- /dev/null +++ b/lab01.cbp @@ -0,0 +1,40 @@ + + + + + + diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..ab99913 --- /dev/null +++ b/main.cpp @@ -0,0 +1,89 @@ +#include +#include +#include + +using namespace std; + +int main() +{ + const size_t MAX_ASTERISK = 76; + size_t cor, col, H; + int i, j; + double max1, min1; + + cerr << "vvedite col-vo col:"; + cin >> col; + + vector A(col); + vector B(col); + + for(i = 0; i < col; i++) + { + cerr << "A[" << i << "]="; + cin >> A[i]; + } + + cerr << "vvedite col-vo cor:"; + cin >> cor; + + if (cor == 0) + { + cor = sqrt(col); + if (cor > 25) + { + cor = 1 + log2(col); + cout << "sterg"; + } + else cout << "empirii"; + cout << endl; + } + + max1 = A[0]; min1 = A[0]; + + for(i = 0; i < col; i++) + { + if (A[i] > max1) max1 = A[i]; + if (A[i] < min1) min1 = A[i]; + } + + double cor_size = (max1 - min1)/cor; + + for (i = 0; i < col; i++) + { + bool flag = false; + for (j = 0; (j < cor - 1) && !flag; j++) + { + auto L = min1 + j*cor_size; + auto H = min1 + (j+1)*cor_size; + if ((L <= A[i]) && (A[i] < H)) + { + flag = true; + B[j]++; + } + } + if (!flag) B[cor-1]++; + } + + int maxb = B[0]; + + for (j = 1; j < cor; j++) + { + if (B[j] > maxb) maxb = B[j]; + } + + for (j = 0; j < cor; j++) + { + if (maxb > MAX_ASTERISK) + { + H = MAX_ASTERISK * (static_cast(B[j]) / maxb); + } + else H = B[j]; + if (B[j] < 100) cout << " "; + if (B[j] < 10) cout << " "; + cout << B[j] << "|"; + for (i = 0; i < H; i++) cout << "*"; + cout << endl; + } + + return 0; +}