2025-11-06 11:57:42 +01:00

135 lines
2.8 KiB
C++

/*
Autor: Mateusz Słodkowicz
Grupa: D3
Numer Indeksu: 167675
*/
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>
void losujTablice(int[], size_t, size_t);
void wypiszTablice(int[], size_t);
double srednia(int[], size_t);
void bombel(int[], size_t);
double mediana(int[], size_t);
void policzOsoby(int[],int[],size_t,size_t);
std::string maxOcena(int[], size_t);
void histogram(int[], size_t);
int main()
{
const size_t N = 60;
const size_t OO = 20;
int oceny[N] = {0};
int ileOsob[OO] = {0};
srand(time(NULL));
losujTablice(oceny, N, OO);
std::cout << "Oceny: ";
wypiszTablice(oceny, N);
bombel(oceny, N);
std::cout << "Oceny posortowane: ";
wypiszTablice(oceny, N);
std::cout << "Srednia: " << srednia(oceny, N) << "\n";
std::cout << "Mediana: " << mediana(oceny, N) << "\n";
policzOsoby(oceny, ileOsob, N, OO);
std::cout << "Najwiecej wystepuje ocena/y: " << maxOcena(ileOsob, OO) << "\n";
histogram(ileOsob, OO);
return 0;
}
void losujTablice(int tab[], size_t roz, size_t max)
{
for (size_t i = 0; i < roz; ++i)
{
tab[i] = rand() % max;
}
}
void wypiszTablice(int tab[], size_t roz)
{
for (size_t i = 0; i < roz; ++i)
{
std::cout << tab[i] << ((i + 1 == roz) ? "\n" : " ");
}
}
double srednia(int tab[], size_t roz)
{
int suma = 0;
for (size_t i = 0; i < roz; ++i)
{
suma += tab[i];
}
return double(suma) / double(roz);
}
void bombel(int tab[], size_t roz)
{
int tmp;
for (size_t i = 0; i < roz; ++i)
{
for (size_t j = 0; j < roz; ++j)
{
if (tab[j] > tab[i])
{
tmp = tab[j];
tab[j] = tab[i];
tab[i] = tmp;
}
}
}
}
double mediana(int tab[], size_t roz)
{
return (roz % 2 == 0)
? ((double(tab[roz / 2]) + double(tab[(roz / 2) - 1])) / 2.0)
: double((tab[roz / 2]));
}
void policzOsoby(int oceny[], int osoby[], size_t roz, size_t maxOcena)
{
for (size_t i = 0; i < maxOcena; ++i)
{
osoby[i] = 0;
}
for (size_t i = 0; i < roz; ++i)
{
osoby[oceny[i]] += 1;
}
}
std::string maxOcena(int ileOsob[], size_t maxOcena)
{
std::string ret = "";
int max = -1;
for (size_t i = 0; i < maxOcena; ++i)
{
if (ileOsob[i] > max){
max = ileOsob[i];
ret = std::to_string(i);
}
else if (ileOsob[i] == max)
ret += ", " + std::to_string(i);
}
return ret;
}
void histogram(int ileOsob[], size_t maxOcena)
{
for(size_t i = 0; i<maxOcena;++i)
{
printf("Ocena %2zu: ",i);
for(size_t j = 0; j<ileOsob[i];++j)
{
std::cout << "*";
}
std::cout << "\n";
}
}