Jak wykonać tablicę z szablonami?

0

Witam
Muszę wykonać zadanie: Dla tablicy dowolnego typu liczb (template) obliczyć wartość średnią; sprawdzić czy jest większa(równa), mniejsza w stosunku do mediany.
Rozpocząłem tak:

#include <iostream>


using namespace std;

template <typename T, const int ilosc>

class tablica
{
	public:
		T zmienna[ilosc];
		T srednia, mediana;
		T fsrednia (T zmienna[ilosc])
		{
			for(int i=0; i<ilosc; i++)
			{
				srednia += zmienna[i];
			}
			srednia /= ilosc;
			return srednia;
		}
		T fmediana (T zmienna[ilosc])
		{
			if (ilosc%2 == 0)
			{
				mediana = (zmienna[ilosc/2]+zmienna[ilosc/2+1])/2;
			}
			else
			{
				mediana = zmienna[(ilosc+1)/2];
			}
			return mediana;
		}
		void porownanie (T zmienna[ilosc])
		{
			if (srednia > mediana)
			{
				cout <<"\n Wartosc srednia jest wieksza od mediany, bo "<<endl; 
			}
			if (srednia == mediana)
			{
				cout <<"\n Wartosc srednia jest rowna medianie, bo "<<endl;
			}
			if (srednia < mediana)
			{
				cout <<"\n Wartosc srednia jest mniejsza od mediany, bo "<<endl;
			}
			cout <<" wartosc sredniej wynosi: " <<srednia <<", mediana: " <<mediana; 
		}
} ;

typedef tablica <int, int> tablicaInt;
typedef tablica <float, int> tablicaFloat;
typedef tablica <double, int> tablicaDouble;

kompilator wywala błąd, wiec coś źle robię. W internecie czytałem mnóstwo różnych artykułów na temat szablonów, lecz nadal nie wiem jak zrobić to zadanie, proszę o pomoc.

1
typedef tablica <int, 10> tablicaInt;
typedef tablica <float, 20> tablicaFloat;
typedef tablica <double, 30> tablicaDouble;

przeciez ewidentnie chcesz tam mieć wartości a nie typ...

0

tylko ja chciałem zrobić tu tak aby użytkownik podał ilosc.

0

cin >> zmienna;
klasa<TYP, zmienan> nazwa;
Jak zwkle zapomnialem dodac, ze musi byc to tablica "dynamiczna" wew. klasy.

1

Wg mnie zadanie mówi o czymś takim:
template <typename T,typename Ret> bool porownanie (T tablica[],size_t ilosc) { ... }
plus ewentualne funkcje pomocnicze:
template <typename T,typename Ret> Ret srednia(T tablica[],size_t ilosc) { ... }
template <typename T,typename Ret> Ret mediana(T tablica[],size_t ilosc) { ... }

Jeżeli T - int to Ret i tak musi być double.
Ewentualnie na sztywno zadać ten Ret jako double.

0
_13th_Dragon napisał(a):

Wg mnie zadanie mówi o czymś takim:
template <typename T,typename Ret> bool porownanie (T tablica[],size_t ilosc) { ... }
plus ewentualne funkcje pomocnicze:
template <typename T,typename Ret> Ret srednia(T tablica[],size_t ilosc) { ... }
template <typename T,typename Ret> Ret mediana(T tablica[],size_t ilosc) { ... }

Jeżeli T - int to Ret i tak musi być double.
Ewentualnie na sztywno zadać ten Ret jako double.

Możesz mi wyjaśnić dlaczego bool jeżeli mam rozpatrzyć 3 porównania? Tylko postaraj się to jak najprościej zrobić, bo znam praktycznie tylko podstawy C++.

1 użytkowników online, w tym zalogowanych: 0, gości: 1