Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5.  
  6. int MuestraMenu();
  7. void MostrarSoluciones(double x1, double x2, int n);
  8.  
  9.  
  10. class ec2grado {
  11.  
  12. public:
  13.   double a;     // Coefic. de a*x^2+b*x+c
  14.   double b,c;
  15.   bool solucion; // true si la ecuacion tiene solucion
  16.   bool coeficientes; // true si la ecuacion ya tiene los coeficientes
  17.  
  18.   void Inicializar() {
  19.      a= 0;
  20.      b= 0;
  21.      c= 0;
  22.      solucion= false;
  23.      coeficientes= false;
  24.   }
  25.  
  26.   void PedirCoeficientes() {
  27.      
  28.      cout<<"Dime los coeficientes a, b, c de la ecuación ax^2+bx+c=0: \n";
  29.      cin >> a >> b >> c;
  30.  
  31.      coeficientes= true;
  32.   }
  33.  
  34.   void MostrarEcuacion() {
  35.      cout<<a<<"x^2 + "<<b<<"x + "<<c;
  36.   }
  37.  
  38.   int ResolverEcuacion(double &x1, double &x2) {
  39.      
  40.      if ((!solucion) || (!coeficientes))
  41.         return 0;
  42.    
  43.      if (a==0) {
  44.        
  45.         x1= -c/b;
  46.         return 1;
  47.      }
  48.      x1= (-b+sqrt(b*b-4*a*c))/(2*a);
  49.      x2= (-b-sqrt(b*b-4*a*c))/(2*a);
  50.      return 2;
  51.   }
  52.  
  53.   bool tieneSolucion() {
  54.      
  55.      double aux= b*b-4*a*c;
  56.      
  57.      if ((aux < 0) || ((a==0) && (b==0))) {
  58.         solucion= false;
  59.         return false;
  60.      }
  61.      
  62.      solucion= true;
  63.      return true;
  64.   }
  65. };
  66.  
  67.  
  68.  
  69. int main() {
  70.  
  71.   ec2grado e; // Variable que modela los coeficientes de la ecuación
  72.   double sol1, sol2; // Variables solución de la ecuación
  73.   int nsol= 0; // Numero de soluciones de la ecuación
  74.   int opc; // Opcion seleccionada del menu de opciones
  75.   bool terminar= false;
  76.  
  77.   e.Inicializar(); // Inicializamos datos miembro (variables) del objeto
  78.  
  79.   // Cuerpo del programa
  80.   do {
  81.      
  82.      opc= MuestraMenu(); // Mostramos menu de opciones
  83.      
  84.      // Seleccionamos la acción correspondiente a la opción
  85.      switch(opc) {
  86.        
  87.         case 1:
  88.           e.PedirCoeficientes();
  89.           break;
  90.  
  91.         case 2:
  92.           if (e.coeficientes) {
  93.              if (e.tieneSolucion())
  94.                 nsol= e.ResolverEcuacion(sol1, sol2);
  95.              else
  96.                 cout<<"\n\tLa ecuacion no tiene soluciones reales\n\n";
  97.           } else
  98.              cout<<"\n\tAun no ha definido los coeficientes\n\n";
  99.           break;
  100.  
  101.         case 3:
  102.           if (e.coeficientes) {
  103.              MostrarSoluciones(sol1, sol2, nsol);
  104.           } else
  105.              cout<<"\n\tAun no ha definido los coeficientes\n\n";
  106.           break;
  107.  
  108.         case 4:
  109.           terminar= true;
  110.           break;
  111.  
  112.         default:
  113.           cout<<"\nEsa opcion no es valida...\n\n";
  114.           break;
  115.      }
  116.  
  117.   } while (!terminar);
  118.  
  119.   cout<<"\nFin del programa\n";
  120.   return 0;
  121. }
  122.  
  123.  
  124.  
  125. int MuestraMenu() {
  126.  
  127.   int opcion;
  128.  
  129.   cout<<"\n1- Introducir coeficientes\n";
  130.   cout<<"2- Calcular resultados\n";
  131.   cout<<"3- Mostrar Soluciones\n";
  132.   cout<<"4- Terminar\n";
  133.   cout<<"\n\tEscoja una opcion: ";
  134.   cin>>opcion;
  135.  
  136.   return opcion;
  137. }
  138.  
  139.  
  140. void MostrarSoluciones(double x1, double x2, int n) {
  141.  
  142.   switch(n) {
  143.      
  144.      case 0:
  145.         cout<<"La ecuacion no tiene soluciones reales\n";
  146.         break;
  147.  
  148.      case 1:
  149.         cout<<"La ecuación es de primer grado. ";
  150.         cout<<"Su solucion es x="<<x1<<endl;
  151.         break;
  152.  
  153.      case 2:
  154.         cout<<"Las soluciones son x1= "<<x1<<" y x2="<<x2<<endl;
  155.         break;
  156.    
  157.      default:
  158.         cout<<"El parametro n="<<n<<" no es valido"<<endl;
  159.         break;
  160.   }
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement