• Viernes 8 de Noviembre de 2024, 17:05

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - DOLOS

Páginas: [1]
1
C/C++ / Problema En El Destructor?
« en: Sábado 6 de Mayo de 2006, 21:43 »
Bueno pues resulta que estoy haciendo un pequeño programa usando herencia de clases, es una tarea que tengo por ahi. Al parecer la herencia funciona muy bien  :D y el programa corre como deberia.... hasta que llega el momento de finalizar  <_<  Resulta que al final te pide que presiones cualquier tecla para salir, pues bien, la presionas y sale  :D  pero sale tambien del editor de C++´ :(  El programa no marca errores de sintaxis ni nada de eso, asi que supongo que es una excepcion, y ya que no veo donde pueda estar dentro del codigo que he escrito, se me ocurre que se encuentre al momento de destruir los objetos (no hay destructores definidos) pero pues me gustaria ver que es lo que pasa, si alguien pudiera ayudarme. Gracias de Antemano.

Código: Text
  1.  
  2. /*Programa de herencia con dos niveles de derivacion*/
  3.  
  4. #include <conio.h>
  5. #include <iostream.h>
  6. #include <iomanip.h>
  7. #include <ctype.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #include <math.h>
  11.  
  12. class figura{};
  13.  
  14. class triangulo:public figura
  15. {
  16.  protected:
  17.   float base,altura,area;
  18.   char *tipo;
  19.  public:
  20.   void calc();
  21.   void show();
  22. };
  23.  
  24. class rectangulo:public triangulo
  25. {
  26.  public:
  27.   void datos(char *clase);
  28. };
  29.  
  30. class equilatero:public triangulo
  31. {
  32.  private:
  33.   float lado;
  34.  public:
  35.   void datos(char *clase);
  36. };
  37.  
  38. void main()
  39. {
  40.  clrscr(); textbackground(1); textcolor(15);
  41.  char *user,*tipo,dato[10],rsp; int opc=0;
  42.  rectangulo tri1; equilatero tri2;
  43.  gotoxy(20,3); cout << "PROGRAMA PARA CALCULAR EL AREA DE UN TRIANGULO";
  44.  gotoxy(10,5); cout << "Teclee el nombre del usuario:";
  45.  gotoxy(12,6); cin.getline(user,30);
  46.  do
  47.  {
  48.   clrscr();
  49.   gotoxy(20,3); cout << "PROGRAMA PARA CALCULAR EL AREA DE UN TRIANGULO";
  50.   gotoxy(30,5); cout << "MENU";
  51.   gotoxy(25,7); cout << "1. Equilatero";
  52.   gotoxy(25,9); cout << "2. Rectangulo";
  53.   do
  54.   {
  55.    gotoxy(10,11); cout << user << ", teclea la opcion que desees: ";
  56.    cin.getline(dato,10); opc=atoi(dato);
  57.   }while(opc<=0||opc>2);
  58.   switch(opc)
  59.   {
  60.    case(1):{ strcpy(tipo,"EQUILATERO");
  61.        tri2.datos(tipo);
  62.        tri2.calc();
  63.        tri2.show();
  64.        break;
  65.      }
  66.    case(2):{ strcpy(tipo,"RECTANGULO");
  67.        tri1.datos(tipo);
  68.        tri1.calc();
  69.        tri1.show();
  70.        break;
  71.      }
  72.   }
  73.   gotoxy(15,20); cout << user << ", desea calcular otro triangulo?S/N";
  74.   rsp=getch();
  75.  }while(toupper(rsp)=='S');
  76.  gotoxy(15,22); cout << "Presione cualquier tecla para salir...";
  77.  getch();
  78. }
  79.  
  80. void triangulo::calc()
  81. {
  82.  area=(base*altura)/2;
  83. }
  84.  
  85. void triangulo::show()
  86. {
  87.  clrscr();
  88.  gotoxy(20,3); cout << "RESULTADOS DEL TRIANGULO " << tipo;
  89.  cout << setiosflags(ios::fixed) << setprecision(2);
  90.  gotoxy(5,5); cout << "BASE"; gotoxy(5,7); cout << base;
  91.  gotoxy(15,5); cout << "ALTURA"; gotoxy(15,7); cout << altura;
  92.  gotoxy(30,5); cout << "AREA"; gotoxy(30,7); cout << area;
  93. }
  94.  
  95. void rectangulo::datos(char *clase)
  96. {
  97.  strcpy(tipo,clase);
  98.  clrscr(); gotoxy(20,3); cout << "DATOS DEL TRIANGULO " << clase;
  99.  gotoxy(15,5); cout << "Deme la longitud del cateto A: ";
  100.  cin >> base;
  101.  gotoxy(15,7); cout << "Deme la lungitud del cateto B: ";
  102.  cin >> altura;
  103. }
  104.  
  105. void equilatero::datos(char *clase)
  106. {
  107.  strcpy(tipo,clase);
  108.  clrscr(); gotoxy(20,3); cout << "DATOS DEL TRIANGULO " << clase;
  109.  gotoxy(15,5); cout << "Deme la longitud del lado: ";
  110.  cin >> lado;
  111.  base=lado;
  112.  altura=sqrt(pow(lado,2)-pow((base/2),2));
  113. }
  114.  
  115.  

Páginas: [1]