1 /* autor: Krzysztof Zmijewski
  2  *
  3  * prog: " stata.cpp " - Program liczy z N podanych liczb:
  4  *                  srednia, mediane, wariancje oraz odchylenie standardowe
  5  *
  6  * Kompilator: g++ 4.6.2
  7  */
  8 
  9 /*
 10  * This program is free software; you can redistribute it and/or modify
 11  * it under the terms of the GNU General Public License as published by
 12  * the Free Software Foundation; either version 2 of the License, or
 13  * (at your option) any later version.
 14  * 
 15  * This program is distributed in the hope that it will be useful,
 16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 18  * GNU General Public License for more details.
 19  * 
 20  * You should have received a copy of the GNU General Public License
 21  * along with this program; if not, write to the Free Software
 22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 23  * MA 02110-1301, USA.
 24  * 
 25  */
 26 
 27 #include <iostream>
 28 #include <math.h>
 29 
 30 using namespace std;
 31 
 32 void sortowanie(int tablica[], int rozmiar); /* deklaracja funkcji sortujacej podane liczby */
 33 float srednia(int tablica[], int rozmiar);  /* deklaracja funkcji liczacej srednia */
 34 float mediana(int tablica[], int rozmiar);  /* deklaracja funkcji liczacej mediane */
 35 float wariacja(int tablica[], int rozmiar, float wynik_sr); /* deklaracja funkcji liczacej wariancje */
 36 float odchylenie(float wynik_war);  /* deklaracja funkcji liczacej odchylenie standardowej */
 37 
 38 int main(void)
 39 {
 40 
 41 int liczba, ile;
 42 int i;    /* indeks */
 43 float sr;   /* srednia */
 44 float med;  /* mediana */
 45 float war;  /* wariancja */
 46 float odch; /* odchylenie */
 47 
 48     std::cout << "Wprowadz dla ilu liczb bedzie chcesz liczyc zadanie: ";
 49 		std::cin >> ile;
 50 
 51 int dane[ile];  /* deklaracja tablicy na dane o rozmiarze "ile" */
 52 
 53 	for(i=0; i<ile; i++)
 54 	{
 55         std::cout << "Wprowadz liczbe nr: " << i+1 << " ";
 56             std::cin >> liczba;
 57 
 58         dane[i]=liczba; /* wprowadzanie danych do tablicy */
 59     }
 60 
 61 		std::cout << "\n\nWprowadzone dane: ";
 62 
 63 	for(i=0; i<ile; i++)
 64 		std::cout << " " << dane[i];
 65 
 66 /* Sortowanie liczb - porzadkujemy liczby od najmniejszej do najwiekszej */
 67     sortowanie(dane, ile);
 68 
 69     std::cout << "\n\nDane po posortowaniu: ";
 70 
 71 	for(i=0; i<ile; i++)
 72 	{
 73 		std::cout << " " << dane[i];
 74 	}
 75 
 76     std::cout << "\nDana minimalna: " << dane[0] << endl;
 77     std::cout << "Dana maksymalna: " << dane[ile-1] << endl;
 78 
 79 /* Obliczamy Srednia - suma liczb podzielona przez ich ilosc */
 80     sr=srednia(dane,ile);
 81 
 82     std::cout << "Srednia wynosi: " << sr << endl;
 83 
 84 /* Obliczamy mediana */
 85     med=mediana(dane, ile);
 86 
 87     std::cout << "Mediana wynosi: " << med << endl;
 88 
 89 /* Obliczamy wariancje */
 90     war=wariacja(dane, ile, sr);
 91 
 92     std::cout << "Wariancja wynosi: " << war << endl;
 93 
 94 /* Obliczamy odchylenie standardowe */
 95     odch=odchylenie(war);
 96 
 97     std::cout << "Odchylenie standardowe wynosi: " << odch << endl;
 98 
 99     return 0;
100 }
101 
102 void sortowanie(int tablica[], int rozmiar) /* funkcja sortujaca */
103 {
104 
105 int zmiana, temp;
106 int i;
107 
108 	do {
109 		zmiana=0;
110 		i=rozmiar-1;
111 
112         do {
113             i--;
114 
115             if (tablica[i+1] < tablica[i])
116             {
117                 temp=tablica[i];
118                 tablica[i]=tablica[i+1];
119                 tablica[i+1]=temp;
120                 zmiana=1;
121             }
122 
123         } while (i!=0);
124 
125 	} while (zmiana!=0);
126 }
127 
128 float srednia(int tablica[], int rozmiar)   /* funkcja srednia */
129 {
130 
131 float sr;
132 
133 sr=0;
134 
135     for(int i=0; i<rozmiar; i++)
136     {
137         sr += tablica[i];
138     }
139 
140     return (sr/rozmiar);    /* zwracamy wynik do funkcji #main */
141 }
142 
143 float mediana(int tablica[], int rozmiar)   /* funkcja mediana */
144 {
145 
146 int im;
147 float med;
148 
149     im=rozmiar/2-1;
150 
151     if (rozmiar % 2 == 0)
152     {
153         med = tablica[im] + tablica[im+1];
154 
155         return(med/2);  /* zwracamy wynik do funkcji #main */
156     }
157         else
158         {
159             med = tablica[rozmiar/2];
160             return(med);    /* zwracamy wynik do funkcji #main */
161         }
162 }
163 
164 float wariacja(int tablica[], int rozmiar, float wynik_sr)  /* funkcja wariancja */
165 {
166 
167 float wara[rozmiar], warb, warc, warj;
168 
169 warc=0;
170 
171     for(int j=0; j<rozmiar; j++)
172     {
173         warb = tablica[j] * tablica[j];
174 		wara[j] = warb;
175 		warc += wara[j];
176     }
177     return(warj = warc/rozmiar-(wynik_sr*wynik_sr));    /* zwracamy wynik do funkcji #main */
178 }
179 
180 float odchylenie(float wynik_war)   /* funkcja odchylenie */
181 {
182     return(sqrt(wynik_war));    /* zwracamy wynik do funkcji #main */
183 }


syntax highlighted by Code2HTML, v. 0.9.1