/* autor: Krzysztof 'zmijka' Zmijewski
*
* prog: " stata.cpp " - Program liczy z N podanych liczb:
* srednia, mediane, wariancje oraz odchylenie standardowe
*
* Kompilator: g++ 4.6.2
*/
#include <iostream>
#include <math.h>
using namespace std;
void sortowanie(int tablica[], size_t rozmiar); /* deklaracja funkcji sortujacej podane liczby */
float srednia(int tablica[], size_t rozmiar); /* deklaracja funkcji liczacej srednia */
float mediana(int tablica[], size_t rozmiar); /* deklaracja funkcji liczacej mediane */
float wariacja(int tablica[], size_t rozmiar, float wynik_sr); /* deklaracja funkcji liczacej wariancje */
float inline odchylenie(float wynik_war); /* deklaracja funkcji liczacej odchylenie standardowej */
int main(void)
{
int liczba;
size_t ile; /* rozmiar tablicy */
int *dane; /* wskaznik do dynamicznej tablicy */
unsigned int i; /* index */
float sr; /* srednia */
float med; /* mediana */
float war; /* wariancja */
float odch; /* odchylenie */
cout << "Wprowadz dla ilu liczb bedzie chcesz liczyc zadanie: ";
cin >> ile;
dane = new int [ile]; /* rezerwacja obszaru pamieci potrzebnej na tablice o rozmiarze "ile" */
for(i=0; i<ile; i++)
{
cout << "Wprowadz liczbe nr: " << i+1 << " ";
cin >> liczba;
dane[i]=liczba; /* wprowadzanie danych do tablicy */
}
cout << "\n\nWprowadzone dane: ";
for(i=0; i<ile; i++)
cout << " " << dane[i];
/* Sortowanie liczb - porzadkujemy liczby od najmniejszej do najwiekszej */
sortowanie(dane, ile);
cout << "\n\nDane po posortowaniu: ";
for(i=0; i<ile; i++)
{
cout << " " << dane[i];
}
cout << "\nDana minimalna: " << dane[0] << endl;
cout << "Dana maksymalna: " << dane[ile-1] << endl;
/* Obliczamy Srednia - suma liczb podzielona przez ich ilosc */
sr=srednia(dane,ile);
cout << "Srednia wynosi: " << sr << endl;
/* Obliczamy mediana */
med=mediana(dane, ile);
cout << "Mediana wynosi: " << med << endl;
/* Obliczamy wariancje */
war=wariacja(dane, ile, sr);
cout << "Wariancja wynosi: " << war << endl;
/* Obliczamy odchylenie standardowe */
odch=odchylenie(war);
cout << "Odchylenie standardowe wynosi: " << odch << endl;
delete [] dane; /* zwalniamy pamiec zarezerwowana przez dynamiczana tablice */
return 0;
}
void sortowanie(int tablica[], size_t rozmiar) /* funkcja sortujaca */
{
int zmiana, temp;
int i;
do {
zmiana=0;
i=rozmiar-1;
do {
i--;
if (tablica[i+1] < tablica[i])
{
temp=tablica[i];
tablica[i]=tablica[i+1];
tablica[i+1]=temp;
zmiana=1;
}
} while (i!=0);
} while (zmiana!=0);
}
float srednia(int tablica[], size_t rozmiar) /* funkcja srednia */
{
float sr;
unsigned int i;
sr=0;
for(i=0; i<rozmiar; i++)
{
sr += tablica[i];
}
return (sr/rozmiar); /* zwracamy wynik do funkcji #main */
}
float mediana(int tablica[], size_t rozmiar) /* funkcja mediana */
{
int im;
float med;
im=rozmiar/2-1;
if (rozmiar % 2 == 0)
{
med = tablica[im] + tablica[im+1];
return(med/2); /* zwracamy wynik do funkcji #main */
}
else
{
med = tablica[rozmiar/2];
return(med); /* zwracamy wynik do funkcji #main */
}
}
float wariacja(int tablica[], size_t rozmiar, float wynik_sr) /* funkcja wariancja */
{
float wara[rozmiar], warb, warc, warj;
unsigned int i;
warc=0;
for(i=0; i<rozmiar; i++)
{
warb = tablica[i] * tablica[i];
wara[i] = warb;
warc += wara[i];
}
return(warj = warc/rozmiar-(wynik_sr*wynik_sr)); /* zwracamy wynik do funkcji #main */
}
float inline odchylenie(float wynik_war) /* funkcja odchylenie */
{
return(sqrt(wynik_war)); /* zwracamy wynik do funkcji #main */
}
syntax highlighted by Code2HTML, v. 0.9.1