commit 3e9c0860c50bb4a0f10bf2582f4d47b88cea6b1f Author: LedovskojMM <LedovskoyMM@mpei.ru> Date: Sun Apr 23 20:12:50 2023 +0300 Исходный код diff --git a/lab1.cbp b/lab1.cbp new file mode 100644 index 0000000..722660e --- /dev/null +++ b/lab1.cbp @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_project_file> + <FileVersion major="1" minor="6" /> + <Project> + <Option title="lab1" /> + <Option pch_mode="2" /> + <Option compiler="gcc" /> + <Build> + <Target title="Debug"> + <Option output="bin/Debug/lab1" prefix_auto="1" extension_auto="1" /> + <Option object_output="obj/Debug/" /> + <Option type="1" /> + <Option compiler="gcc" /> + <Compiler> + <Add option="-g" /> + </Compiler> + </Target> + <Target title="Release"> + <Option output="bin/Release/lab1" prefix_auto="1" extension_auto="1" /> + <Option object_output="obj/Release/" /> + <Option type="1" /> + <Option compiler="gcc" /> + <Compiler> + <Add option="-O2" /> + </Compiler> + <Linker> + <Add option="-s" /> + </Linker> + </Target> + </Build> + <Compiler> + <Add option="-Wall" /> + <Add option="-fexceptions" /> + </Compiler> + <Unit filename="main.cpp" /> + <Extensions /> + </Project> +</CodeBlocks_project_file> diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..b32d6ea --- /dev/null +++ b/main.cpp @@ -0,0 +1,85 @@ +#include <iostream> +#include <vector> +using namespace std; + +int main() +{ + double n; + size_t number_count, bin_count; + cerr<<"Enter number cout:"; + cin>>number_count; + vector<double> numbers(number_count); + for (int i =0;i<number_count;i++){ + + cin>>numbers[i]; + } + cerr<<"Enter bin_count"; + cin>>bin_count; + vector<size_t> bins(bin_count); + 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 maxbin=0; + for (size_t i=0; i<bin_count; i++){ + if (maxbin< bins[i]){ + maxbin=bins[i]; + } + + } + size_t k=0; + for (size_t i=0; i<bin_count; i++){ + if (bins[i]<100){ + cout<<" "; + } + if (bins[i]<10){ + cout<<" "; + } + cout<<" "<<bins[i]<<"|"; + size_t count = bins[i]; + if (maxbin>=76){ + size_t height= 76*(static_cast<double>(count)/maxbin); + for (size_t j=0; j<bins[i]; j++){ + if (j<height) + cout<<"*"; + else + break; + } + } + else{ + for (size_t j=0; j<bins[i]; j++){ + cout<<"*"; + } + } + cout<<endl; + if (k < bin_count - 1){ + auto step = min + (k + 1) * bin_size; + cout.precision(3); + cout<<step; + k+=1; + cout<<endl; + } + } + return 0; +}