// CliListaTriangulos.cpp
// Cliente das classes Template cLista<class T> e cListaOrdenada<class T> 

// Aula de 10 de Janeiro de 2002

#include "ctriangulo.h"
#include "ListaOrdenada.h"
#include <iostream.h>
#include <iomanip.h>

void Listar();

enum { INSERIR = 1, REMOVER , LISTAR , TERMINAR };

void ClearScreen();

cListaOrdenada<cTriangulo> Lista;

void main()
{  	
  int Opcao;
  double Base, Lado2, Lado3;
  bool Res;

  do 
  {
	ClearScreen();	

	cout << endl << endl ;
	cout << "1. Inserir triangulo" << endl ;
	cout << "2. Remover triangulo" << endl ;
	cout << "3. Listar triangulo" << endl;
	cout << "4. Terminar  " << endl;
	cout << endl << endl ;

	cout << "\tEscolha opcao : ";
	cin >> Opcao ;
	cout << endl << endl ;
	
	switch ( Opcao )
	{		
	 
	 case INSERIR :
			cout << "Introduza as medidas dos lados do triangulo : " << endl;
			cout << "Base : " ; 	cin >> Base;
			cout << "Lado2 : " ;	cin >> Lado2;
			cout << "Lado3 : " ;	cin >> Lado3;
			cout << endl;
			
			Lista.Inserir( cTriangulo( Base, Lado2, Lado3 ) ); 
			
			cout << "Triangulo inserido na lista !" << endl;
			break;
	 case REMOVER:
			cout << "Introduza as medidas dos lados do triangulo : " << endl;
			cout << "Base : " ; 	cin >> Base;
			cout << "Lado2 : " ;	cin >> Lado2;
			cout << "Lado3 : " ;	cin >> Lado3;
			cout << endl;
			
			Res = Lista.Remover( cTriangulo( Base, Lado2, Lado3 ) );
			
			if( Res )
				cout << "Triangulo removido da lista ! " << endl;
			else
				cout << "Triangulo nao consta na lista !" << endl;

			break;
	 case LISTAR:			
			Listar();
			break; 
	}
		
	cin.ignore();
	cin.get();

  } while ( Opcao != TERMINAR );

}

void ClearScreen()
{
	int i;
	for ( i=0; i<24; i++ ) cout << endl;
}

void Listar()
{
	int i, l;
	cTriangulo *p;

	for( i=1; i <= Lista.GetNrElementos() ; i++ )
	{
		p = Lista.Obter(i);
		for ( l = 1; l <= 3 ; l++ ) 
			cout << "lado(" << l << ") : " << p->GetLado(l) << endl;
		cout << "Area : " << p->Area() << endl << endl;
	}
}
