/*Programa de herencia con dos niveles de derivacion*/
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
class figura{};
class triangulo:public figura
{
protected:
float base,altura,area;
char *tipo;
public:
void calc();
void show();
};
class rectangulo:public triangulo
{
public:
void datos(char *clase);
};
class equilatero:public triangulo
{
private:
float lado;
public:
void datos(char *clase);
};
void main()
{
clrscr(); textbackground(1); textcolor(15);
char *user,*tipo,dato[10],rsp; int opc=0;
rectangulo tri1; equilatero tri2;
gotoxy(20,3); cout << "PROGRAMA PARA CALCULAR EL AREA DE UN TRIANGULO";
gotoxy(10,5); cout << "Teclee el nombre del usuario:";
gotoxy(12,6); cin.getline(user,30);
do
{
clrscr();
gotoxy(20,3); cout << "PROGRAMA PARA CALCULAR EL AREA DE UN TRIANGULO";
gotoxy(30,5); cout << "MENU";
gotoxy(25,7); cout << "1. Equilatero";
gotoxy(25,9); cout << "2. Rectangulo";
do
{
gotoxy(10,11); cout << user << ", teclea la opcion que desees: ";
cin.getline(dato,10); opc=atoi(dato);
}while(opc<=0||opc>2);
switch(opc)
{
case(1):{ strcpy(tipo,"EQUILATERO");
tri2.datos(tipo);
tri2.calc();
tri2.show();
break;
}
case(2):{ strcpy(tipo,"RECTANGULO");
tri1.datos(tipo);
tri1.calc();
tri1.show();
break;
}
}
gotoxy(15,20); cout << user << ", desea calcular otro triangulo?S/N";
rsp=getch();
}while(toupper(rsp)=='S');
gotoxy(15,22); cout << "Presione cualquier tecla para salir...";
getch();
}
void triangulo::calc()
{
area=(base*altura)/2;
}
void triangulo::show()
{
clrscr();
gotoxy(20,3); cout << "RESULTADOS DEL TRIANGULO " << tipo;
cout << setiosflags(ios::fixed) << setprecision(2);
gotoxy(5,5); cout << "BASE"; gotoxy(5,7); cout << base;
gotoxy(15,5); cout << "ALTURA"; gotoxy(15,7); cout << altura;
gotoxy(30,5); cout << "AREA"; gotoxy(30,7); cout << area;
}
void rectangulo::datos(char *clase)
{
strcpy(tipo,clase);
clrscr(); gotoxy(20,3); cout << "DATOS DEL TRIANGULO " << clase;
gotoxy(15,5); cout << "Deme la longitud del cateto A: ";
cin >> base;
gotoxy(15,7); cout << "Deme la lungitud del cateto B: ";
cin >> altura;
}
void equilatero::datos(char *clase)
{
strcpy(tipo,clase);
clrscr(); gotoxy(20,3); cout << "DATOS DEL TRIANGULO " << clase;
gotoxy(15,5); cout << "Deme la longitud del lado: ";
cin >> lado;
base=lado;
altura=sqrt(pow(lado,2)-pow((base/2),2));
}