Лабораторные работы 2 семестр / lab01
.pdf#include <iostream> #include <vector> using namespace std;
const int MAX_WiDTH = 75; int main()
{
size_t number_count;
cerr << "Enter number count\n"; cin >> number_count;
vector <double> numbers (number_count);
cerr << "Vvod massiva " << number_count << " chisel\n"; for (int i = 0; i < number_count; i++)
{
cin >> numbers[i];
}
size_t bin_count; perehod:
cerr << "Enter bin count\n"; cin >> bin_count;
double min,max; min = numbers[0]; max = numbers[0];
for (int i = 0; i < number_count; i++)
{
if (min > numbers[i])
{
min = numbers[i];
}
if (max < numbers[i])
{
max = numbers[i];
}
}
double h;
h = (max-min)*1.0/(bin_count*1.0); vector <size_t> bins (bin_count); for (double number : numbers)
{
for (size_t i = 0; i < bin_count; i++)
{
if ((number >= (min+h*(i))) && (number < (min+h*(i+1))))
{
bins[i]++;
}
if (i >= bin_count)
{
i = bin_count-1;
}
}
if (number == max)
{
bins [bin_count-1]++;
}
}
size_t minbin,maxbin;
minbin = 999; maxbin = 0;
for (size_t bin : bins)
{
if (bin < minbin)
{
minbin = bin;
}
if (bin > maxbin)
{
maxbin = bin;
}
}
double koef; koef = 1;
if (maxbin > MAX_WiDTH)
{
koef = (static_cast<double>(MAX_WiDTH)/maxbin);
}
for ( size_t bin : bins)
{
if (bin < 100)
{
cout << " ";
}
if (bin < 10)
{
cout << " ";
}
cout << bin << "|";
for (size_t i = 0; i < bin*koef; i++)
{
cout << "*";
}
cout << "\n";
}
string Powtor_wwod;
cerr << "WI dowolny? (y/n)\n"; cin >> Powtor_wwod;
if (Powtor_wwod == "n")
{
goto perehod;
}
return 0;
}
2