#include <iostream>
#include "menu.h"

using namespace std;

Menu::Menu()
{
	Polinom polinom;
	inicializalva = false;
}

void Menu::Run()
{
	int valasz;
	
	do
	{
		MenuWrite();
		valasz = Szam("Válasz: ");
		
		switch(valasz)
		{
			case 1:
				Read();
				break;
			case 2:
				Write();
				break;
			case 3:
				Change();
				break;
			case 4:
				Sum();
				break;
			case 5:
				Product();
				break;
		}
	}while(valasz != 6);
}

void Menu::Change()
{
	cout << endl;
	cout << "Ehhez meg kell adnia egy másik polinomot!" << endl;
	
	Polinom uj;
	cin >> uj;
	
	polinom = uj;
	
	cout << endl << polinom << endl;
}

void Menu::MenuWrite()
{
	cout << "Válassza ki, hogy melyik funkciót akarja kipróbálni: " << endl;
	cout << "\t1 - Polinom beolvasása"  << endl;
	cout << "\t2 - Polinom kiírása" << endl;
	cout << "\t3 - Értékadó operátor tesztelése" << endl;
	cout << "\t4 - Két polinom összege" << endl;
	cout << "\t5 - Két polinom szorzata" << endl;
	cout << "\t6 - Kilépés" << endl;
}

void Menu::Product()
{
	cout << endl;
	cout << "Ehhez meg kell adnia egy másik polinomot!" << endl;
	
	Polinom uj;
	cin >> uj;
	
	cout << endl << "Az eredmény: " << endl;
	polinom = polinom * uj;
	
	cout << polinom << endl;
}

void Menu::Read()
{
	cout << endl;
	if(!inicializalva)
	{
		cin >> polinom;
		inicializalva = true;
	}
	else
	{
		cout << "Már értéket adott a polinomnak! Használja a 3-as opciót!" << endl;
	}
	cout << endl;
}

void Menu::Sum()
{
	cout << endl;
	cout << "Ehhez meg kell adnia egy másik polinomot!" << endl;
	
	Polinom uj;
	cin >> uj;
	
	cout << endl << "Az eredmény: " << endl;
	polinom = polinom + uj;
	
	cout << polinom << endl;
}

void Menu::Write()
{
	cout << endl << polinom << endl;
}

int Menu::Szam(string szoveg) const
{
	int szam;
	bool helytelen;
	string sz;
	do
	{
		cout << szoveg << endl;
		cin >> szam;
		
		helytelen = cin.fail();
		if(helytelen)
		{
			cin.clear();
		}
		getline(cin, sz);
	}while(helytelen);
	
	return szam;
}
