#include <iostream>
#include "Wielomian.h"
#include "Linia.h"
#include "Parabola.h"
#include "Funkcja.h"
#include "Gauss.h"

using namespace std;

int main()
{
	double wsp[]={1,2,3,4};
	Wielomian w1(wsp,3,"Wielomian w1");
	w1.Wyswietl();
	cout << "w1(3)=" << w1(3) << endl;

	Linia l1(1,2,"Linia prosta l1");
	l1.Wyswietl();
	cout << "l1(3)=" << l1(3) << endl;

	Parabola p1(1,2,3,"Parabola p1");
	p1.Wyswietl();
	cout << "p1(3)=" << p1(3) << endl;

	Gauss g1(1,2,"Funkcja Gaussa g1");
	g1.Wyswietl();
	cout << "g1(3)=" << g1(3) << endl;

	cout << "\nTo samo za pomoca wskaznika na klase bazowa typu Funckja*" << endl;
	Funkcja *f;

	f=&w1;
	f->Wyswietl();
	cout << "f(3)=" << (*f)(3) << endl;

	f=&l1;
	f->Wyswietl();
	cout << "f(3)=" << (*f)(3) << endl;

	f=&p1;
	f->Wyswietl();
	cout << "f(3)=" << (*f)(3) << endl;

	f=&g1;

	f->Wyswietl();
	cout << "f(3)=" << (*f)(3) << endl;

    cout << "\nTo samo za pomoca referancji na typ Funckja&" << endl;
	Funkcja &fr=w1;

	fr.Wyswietl();
	cout << "f(3)=" << fr(3) << endl;

	cout << "\nWyswietlanie za pomoca operatora << " << endl;
	cout << w1 << "\n" << l1 << "\n" << p1 << "\n" << g1 << endl;


	return 0;
}
