Nie jestem ekspertem i program ten może zawierać jakieś błędy. Użyłem sortowania bąbelkowego z dwoma odbijaczami (akurat taki miałem pod ręką), a ty możesz użyć czego sobie zapragniesz.
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
void uzupelnienie (int*tab, int n);
void wypisanie (int*tab, int n);
void bouble_sort(int *tab, int n)
void mediana (int *tab, int n)
{
float mediana;
if (n%2 == 0)
{
mediana = tab[(n-1)/2]+tab[n/2];
mediana = mediana/2;
}
else
{
mediana = tab [n/2];
}
cout << "Mediana wynosi: " << mediana << endl;
}
void dominanta (int *tab, int n)
{
int dominanta_ilosc = 0;
int dominanta_wartosc = 0;
int licznik = 0;
int i = 0;
while (i < n)
{
while ((tab[i] == tab [i+1]) && (i < n))
{
i++;
licznik++;
}
if (licznik > dominanta_ilosc)
{
dominanta_ilosc = licznik;
dominanta_wartosc = tab[i-1];
}
licznik = 0;
i++;
}
cout << "Dominanta: " << dominanta_wartosc << endl;
}
//*******************************MAIN***********************************
int main()
{
int n;
cout << "Ile elementow ma zawierac tablica ";
cin >> n;
int *tab = new int [n];
srand(time(NULL));
uzupelnienie(tab,n);
wypisanie (tab,n);
bouble_sort(tab,n);
mediana (tab,n);
dominanta (tab,n);
cout << endl;
wypisanie(tab,n);
return 0;
}
//**********************************************************
void uzupelnienie (int*tab, int n)
{
for (int i = 0 ; i < n ; i++)
{
tab [i] = rand()%100 + 1;
}
cout << endl;
}
//**********************************************************
void wypisanie (int*tab, int n)
{
for (int i = 0 ; i < n ; i++)
{
cout << "[" << tab[i] << "] ";
}
cout << endl;
}
//*********************************************************************
void bouble_sort(int *tab, int n)
{ int k = 0;
int j = 0;
int pom;
for (int i = 0 ; i < n ; i++)
{
for (j = k ; j < n - (i+1) ; j++)
{
if (tab[j+1] < tab [j])
{
pom = tab [j+1];
tab [j+1] = tab [j];
tab [j] = pom;
}
}
for (k = j - 1 ; k > i ; k--)
{
if (tab [k] < tab [k-1])
{
pom = tab [k];
tab [k] = tab [k-1];
tab [k-1] = pom;
}
}
k++;
}
}