• Miércoles 15 de Abril de 2026, 11:28

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.


Mensajes - diavolo616

Páginas: [1]
1
C/C++ / PROBLEMA AL REALIZAR UN MENÚ EN C++
« en: Lunes 21 de Marzo de 2011, 19:16 »
Hola soy novato en programación y tengo una duda en este código, no se si me puedan ayudar, el problema es que no puedo hacerle un menú donde me de la opción de ingresar una matriz y otra donde me de la opción de salir del programa. Espero y me puedan ayudar!!!.

 
Este es el código... EL MENÚ QUE HICE ESTA AL FINAL PERO NO ME CORRE, ESPERO ME PUEDAN DECIR CUAL ES MI ERROR.... GRACIAS!!!!

Código: C++
  1. #include <iostream.h>
  2. #include <conio.h>
  3.  
  4. class matriz {
  5.  
  6. double **tabla,**tabla2;
  7. int dim;
  8. public:
  9. enum tipo_tabla{coef,ampliada,inversa};
  10. matriz(int);
  11. ~matriz();
  12. void llenar();
  13. void imprimir(int);
  14. bool invertir(int,bool);
  15. };
  16.  
  17. matriz::matriz(int n) {
  18. int i;
  19. dim=n;
  20. tabla=new double *[dim];
  21. for (i=0;i<dim;i++) *(tabla+i)=new double[dim*2];
  22. }
  23.  
  24. matriz::~matriz() {
  25. int i;
  26. for (i=0;i<dim;i++) delete [] *(tabla+i);
  27. delete [] tabla;
  28. for (i=0;i<dim;i++) delete [] *(tabla2+i);
  29. delete [] tabla2;
  30. }
  31.  
  32. void matriz::llenar() {
  33. int i,j;
  34. double num;
  35. for (i=0;i<dim;i++) {
  36. for (j=0;j<dim;j++) {
  37. cout<<"Ingresa un numero en la posicion ["<<i+1<<","<<j+1<<"]: ";
  38. cin>>num;
  39. *(*(tabla+i)+j)=num;
  40. }
  41. for (j=dim;j<dim*2;j++) *(*(tabla+i)+j)=(i==(j-dim))?(double)1:(double)0;
  42. }
  43. tabla2=new double *[dim];
  44. for (i=0;i<dim;i++) *(tabla2+i)=new double[dim*2];
  45. for (i=0;i<dim;i++)
  46. for (j=0;j<dim*2;j++) *(*(tabla2+i)+j)=*(*(tabla+i)+j);
  47. }
  48.  
  49. void matriz::imprimir(int t_tabla) {
  50. int i,j;
  51. if (t_tabla==coef) {
  52. for (i=0;i<dim;i++,cout<<endl)
  53. for (j=0;j<dim;j++) cout<<*(*(tabla+i)+j)<<"t";
  54. }
  55. else if (t_tabla==ampliada) {
  56. for (i=0;i<dim;i++,cout<<endl)
  57. for (j=0;j<dim*2;j++) cout<<*(*(tabla+i)+j)<<"t";
  58. }
  59. else {
  60. for (i=0;i<dim;i++,cout<<endl)
  61. for (j=dim;j<dim*2;j++) cout<<*(*(tabla2+i)+j)<<"t";
  62. }
  63. }
  64.  
  65. bool matriz::invertir(int pivote=0,bool ida=true) {
  66.  
  67. int i,j;
  68. double k;
  69. if (!*(*(tabla2+pivote)+pivote)) return false;
  70. else if (ida) {
  71. if (pivote==dim-1) return invertir(pivote,false);
  72. else {
  73. for (i=pivote;i<dim-1;i++) {
  74. k=*(*(tabla2+i+1)+pivote)/ *(*(tabla2+pivote)+pivote);
  75. for (j=0;j<dim*2;j++)
  76. *(*(tabla2+i+1)+j)=*(*(tabla2+i+1)+j)-*(*(tabla2+pivote)+j)*k;
  77. }
  78. return invertir(++pivote);
  79. }
  80. }
  81. else {
  82. if (pivote==0) { //Se llega al elemento a[1,1]
  83. k=1/ *(*(tabla2+pivote)+pivote);
  84. for (j=0;j<dim*2;j++)
  85. *(*(tabla2+pivote)+j)*=k;
  86. return true;
  87. }
  88. else {
  89. for (i=pivote;i>0;i--) {
  90. k=*(*(tabla2+i-1)+pivote)/ *(*(tabla2+pivote)+pivote);
  91. for (j=0;j<dim*2;j++)
  92. *(*(tabla2+i-1)+j)=*(*(tabla2+i-1)+j)-*(*(tabla2+pivote)+j)*k;
  93. k=1/ *(*(tabla2+pivote)+pivote);
  94. for (j=0;j<dim*2;j++)
  95. *(*(tabla2+pivote)+j)*=k;
  96.  
  97. }
  98. return invertir(--pivote,false);
  99. }
  100. }
  101. }
  102.  
  103. int main() {
  104. int dim, cont;
  105. matriz *tabla;
  106. cout<<"tttPROGRAMA QUE GENERA LA MATRIZ INVERSAnn";
  107. while (cont!=1){
  108. cout<<"1.- Ingresar Matrizn";
  109. cout<<"2.-Salirn";
  110. cout<<"Ingrese la opcion deseada:n ";
  111. cin>>cont;
  112. switch (cont){
  113. case 1:
  114.  
  115. void matriz::llenar();
  116. cout<<"Ingrese la dimension de la matriz: ";
  117. cin>>dim;
  118. tabla=new matriz(dim);
  119. tabla->llenar();
  120. cout<<endl<<"La matriz ingresada es:"<<endl;
  121. tabla->imprimir(matriz::coef);
  122. cout<<endl<<"La matriz ampliada es:"<<endl;
  123. tabla->imprimir(matriz::ampliada);
  124. if (tabla->invertir()) {
  125. // Si la matriz se pudo invertir la muestra
  126. cout<<endl<<"La matriz Inversa es:"<<endl;
  127. tabla->imprimir(matriz::inversa);
  128. }
  129. else cout<<endl<<"DISCULPA, ***La matriz no tiene inversa***"<<endl;
  130. getch();
  131. }
  132. }
  133. }
  134.  

Páginas: [1]