#include <stdio.h>
#include <stdlib.h>
#include "TPolinomios.h"
#include "TPolinomios.c"
#include "TExtremos.h"
#include "TExtremos.c"



int main(){
	int p;
	double x;
	TPolinomio P, Q, D, R,Sum,Sub,Prod; //D = Quociente, R = Resto, usado na PDivisao
	int escolha;
	scanf("%d",&escolha);
	switch(escolha){
		case 1: //Obter Valor de P(x) dado um X;
			PCriar(&P);
			scanf("%lf",&x);
			printf("Valor = %.2lf\n",PObterValor(&P,x));
		break;
		case 2: //Obter Obter Ordem/grau
			PCriar(&P);
			printf("Ordem = %d\n",PObterOrdem(&P));
		break;
		case 3:	//Adicao 
			PCriar(&P);
			PCriar(&Q);
			PAdicao(&P,&Q,&Sum);
			PExibe(&Sum);
			PLibera(&P.poli);
			PLibera(&Q.poli);
			PLibera(&Sum.poli);
		break;
		case 4: //Subtracao
			PCriar(&P);
			PCriar(&Q);
			PSubtracao(&P,&Q,&Sub);
			PExibe(&Sub);	// Exibe Subtracao
			PLibera(&P.poli);
			PLibera(&Q.poli);
			PLibera(&Sub.poli);
		break;
		case 5: // Produto
			PCriar(&P);
			PCriar(&Q);
			PProduto(&P,&Q,&Prod);
			PExibe(&Prod);
			PLibera(&P.poli);
			PLibera(&Q.poli);
			PLibera(&Prod.poli);
			break;
		case 6: //Divisao
			PCriar(&P);
			PCriar(&Q);
			PDivisao(P,Q,&D,&R);
			printf("\nQuociente\n");
        	PExibe(&D);
            printf("Resto\n");
            PExibe(&R);
            PLibera(&D.poli);
            PLibera(&R.poli);
            PLibera(&P.poli);
			PLibera(&Q.poli);
		break;
		case 7:
			PCriar(&P);
			ObterExtremos(&P);
		break;
		default:
			PCriar(&P);
			PCriar(&Q);
			PExibe(&P); //Polinomios digitados
			PExibe(&Q);
			PAdicao(&P,&Q,&Sum);
			PSubtracao(&P,&Q,&Sub);
			PProduto(&P,&Q,&Prod);
			printf("Informe o X:\n");
			scanf("%lf",&x);
			PExibe(&Sum);	// Exibe Soma
			PExibe(&Sub);	// Exibe Subtracao
			PExibe(&Prod); // Exibe Produto
			printf("Ordem %d\n",PObterOrdem(&P));
			printf("Valor %.2lf\n",PObterValor(&P,x));
			//Divisao
			PDivisao(P,Q,&D,&R);
			printf("\nQuociente\n");
			PExibe(&D);
			printf("Resto\n");
			PExibe(&R);
			PLibera(&D.poli);
			PLibera(&R.poli);
			//Procurar Extremos
			ObterExtremos(&P);
			PLibera(&P.poli);
			PLibera(&Q.poli);
			PLibera(&Sum.poli);
			PLibera(&Sub.poli);
			PLibera(&Prod.poli);
	break;
	}
	return 0;
}