[C con Clase] ayuda

Salvador Pozo salvador en conclase.net
Lun Sep 17 12:41:16 CEST 2007


El pasado 2007-09-16 20:52:50, luis carlos escribió:
 
lc> hola a todos
lc> este es mi primer intento de programar una ecuacion cudratica  soy nuevo en programacion y quisiera q me ayuden si esta bien mi primer intento 
lc> de antemano gracias por la ayuda q puedan bridarme

Hola:

Veo que tienes bastantes errores básicos en tu programa, por lo que debo deducir que, o bien llevas poco tiempo con C++ o no has puesto la atención necesaria.

Te añadiré comentarios a lo largo del programa:

---8<-----
#include <iostream> 
/* En C++, los ficheros de cabecera no tienen el .h al final */
#include <cmath>
/* cmath es la versión C++ del fichero de cabecera estándar C "math.h".
   es necesario para usar algunas funciones matemáticas */
//#include <conio.h> 
/* conio no es estándar, y además, no lo necesitamos en este programa */

using namespace std; 
/* En C++ estándar es necesario activar el espacio con nombre std para usar
   los objetos e identificadores declarados en los ficheros de cabecera
   estandar */

int main() { 
/* En C++ es obligatorio indicar el valor de retorno de las funciones.
   Además, el valor de retorno de la función main es int */
    double A, B, C, Dis, x1, x2, aux;
/* También es obligatorio declarar todas las variables */
    
    cout<<"ingrese A ";    cin>> A; 
/* El operador es ">>" no "> >". Las variables A, B y C no fueron declaradas */
    cout<<"ingrese B ";    cin>> B;
    cout<<"ingrese C ";    cin>> C;

    //x1=(-B+sqrt(B*B-4*A*C))/(2*A); 
    //x2=(-B-sqrt(B*B-4*A*C))/(2*A); 
/* Estas dos sentencias no son necesarias, se pueden eliminar.
   En cualquier caso, tenían errores:
   - El operador ^ no es el de potencia, sino un operador de bits. No existe 
     ningún operador para potencias, se debe usar la función pow() o en este
     caso, B*B
   - La función para la raíz cuadrada es sqrt, no sqr, y para poder usarla se
     debe incluir el fichero de cabecera cmath. 
   - Faltan los paréntesis en el denominador. */

    if(A != 0) { 
/* El operador para desigualdades no es "<>", sino "!=" */
       Dis=B*B-4*A*C; 
/* Falta el punto y coma final, y declarar la variable Dis. 
   4AC debe ser 4*A*C. 
   No usar el operador ^ */
         if(Dis >= 0) { 
/* El operador es ">=", no "> =" */
              if(Dis == 0) { 
/* El operador de comparación es "==" no "=". Este último es el operador de
   asignación */
                 cout<<"escribir x= ";
                 // cin>> x; 
/* No creo que sea una entrada, lo quieres hacer es una salida, se debe usar
   cout */
                 x1=x2=-B/(2*A); 
/* Falta el punto y coma. 
   x1 y x2 no fueron declaradas. 
   Faltan paréntesis en denominador. */
                 cout << x1 << endl; 
/* Mostrar valor de salida */
              } else {  
/* Falta llave cerrada del if "}" */
                  cout<<"escribir x1, x2: ";
                  //cin>> x1;
                  //cin>> x2; 
/* Como antes, cin es para la entrada de datos, no para la salida */
                  aux=sqrt(B*B-4*A*C); 
/* El nombre de la función es "sqrt" y se usa B*B para calcular el cuadrado. 
   aux no fue declarada */
                  x1=(-B+aux)/(2*A);
                  x2=(-B-aux)/(2*A); 
/* Faltan los paréntesis en numeradores y denominadores. */
                  cout << x1 << "," << x2 << endl; 
/* Mostrar la salida */
                }
         } else {
           cout<<"raiz compleja";
         }
    } else {
      cout<<"no es una ecuacion de segundo grado";
    }
    // en este punto sobra la llave cerrada "}"
    cin.get();
    cin.get(); 
/* Falta el punto y coma. La función geth() no existe.
   En su lugar podemos usar cin.get(), de modo que se detenga el
   programa hasta que se pulse una tecla. */
    return 0; 
/* main siempre devuelve un entero. Un valor 0 indica que no ha habido 
   errores */
}

Creo que eso es todo.

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase