commit 7f8f5a5e9b91bf36531ca03fc895804bc27b30e0 Author: ZelenkinaKM <ZelenkinaKM@mpei.ru> Date: Wed Apr 10 14:23:24 2024 +0300 code: исходный код diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..593ff7d --- /dev/null +++ b/main.cpp @@ -0,0 +1,97 @@ +#include <iostream> +#include <vector> + +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<double>numbers(number_count); + + //����� + cerr<<"Enter elements: "; + for (int i=0; i<number_count;i++){ + cin>>numbers[i]; + } + + + + + //���������� ������ + size_t bin_count; + cerr<<"Enter bins count: "; + cin>>bin_count; + vector<size_t>bins(bin_count); + + //����������� ��������� ����� (max � min) � ������� + 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]++; + } + } + + + //������������ ���-�� ��������� + int max_simb=0; + for (int i=0; i<bin_count;i++){ + int c=0; + c=bins[i]; + if (max_simb<c){ + max_simb=c; + } + } + + if (max_simb > MAX_ASTERISK){ + vector<size_t> hights(bin_count); + for (size_t i = 0; i < bin_count; i++){ + size_t height = MAX_ASTERISK * (static_cast<double>(bins[i]) / max_simb); + hights[i] = height; + printf("%3d|", bins[i]); + for (int j=0; j<(hights[i]); j++){ + cout<<"*"; + } + cout<<endl; + } + + } + else{ + for (int i=0; i<bin_count; i++){ + printf("%3d|", bins[i]); + for (int j=0; j<bins[i]; j++){ + cout<<"*"; + } + cout<<endl; + } + } + + return 0; +}