Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: spiderboot en 5 Febrero 2014, 19:58 pm



Título: ¿a que se debe este error en el codigo?
Publicado por: spiderboot en 5 Febrero 2014, 19:58 pm
no entiendo porque me marca error en esa linea, soy princiante, aca el codigo, gracias de antemano por su ayuda, la marca en rojo es donde me marca error
y esto son los mensajes que me saca:

in function "int main ()":
expected "before if"
expected primary -expresion before else
expected before - else
expected before system


/* Descripción: Solución de ecuaciones de segundo grado utilizando*/
/*Bibliotecas */
#include <cstdlib>
#include <iostream>
#include <math.h> /* biblioteca con funciones matematicas, pow y sqrt*/


main ( )
{
double a, b, c, x1, x2, det; /*declaracion de variables de punto flotante doble precision, decimales */
printf("El siguiente programa calcula las raices de un polinomio de segundo grado\n");
printf("\n\t\t ax^2 + bx + c = 0"); /* n= salto de linea, t=tabulado, */

/*datos de entrada */
printf ("\nIntroduzca los coeficientes de a,b y c:");
scanf("%1f, %1f, %1f", &a, &b, &c); /*1f= insertar un valor de tipo double, o sea decimales */
/*la variable det toma el resultado de la raiz cuadrada de la variable b menos */
/* la multiplicacion de 4 por las variables a y c, este resultado sirve para*/
/* comprobar que se cumpla la condicion que sigue*/
det = pow (b,2)-4*a*c

if (det > = 0)
    {
    x1=(-b + sqrt(det))/2*a; /*se calculan los valores para x1*/
    x2=(-b - sqrt (det))/2*a;
    printf ("\n La raices son: %.2lf, %.2lf",x1, x2);/* ¿porque 21f, que significa el2?*/           
    }
    else
    printf("\n No existe raices reales.");
    printf ("\n")
 
    system("PAUSE");
    return EXIT_SUCCESS;
}


Título: Re: ¿a que se debe este error en el codigo?
Publicado por: leosansan en 5 Febrero 2014, 20:50 pm
Te falta la librería <cstdio> para el uso de printf, así como puntos y coma en:

Citar
det = pow (b,2)-4*a*c;
....................................

else
    printf("\n No existe raices reales.");
    printf ("\n");

.......................................


Puedes ahorrarte el uso de pow con:

Código
  1. det = b*b-4*a*c;
  2.  

Y para cuando postees el código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)

P.D:

* La función main es de tipo int:

Código
  1. ...........................
  2. int main (){
  3.  .....................
  4.  return EXIT_SUCCESS;
  5. }
  6.  

*Y scanf es:[/size]

Código
  1. scanf("%lf %lf %lf", &a, &b, &c);
  2.  

sin comas en medio.

 Lo del Número en los printf es para sacar una determinada cantidad de decimales. Mejor es:


Código
  1. printf ("\n La raices son: %g, %g",x1, x2);
  2.  


Título: Re: ¿a que se debe este error en el codigo?
Publicado por: Yoel Alejandro en 6 Febrero 2014, 00:22 am
Si revisas atentamente el mensaje dado por el compilador verás que dice algo "before if", o sea antes del "if". Y yo creo que a la línea:
Código:
det = pow (b,2)-4*a*c
que va justo antes del if le falta el punto y coma final.

Por otra parte, recuerda que como dijeron antes el tipo por defecto de main en int. No es apropiado declarar main() sin tipo de retorno, debes poner int main().

Y finalmente, no uses system("PAUSE"), de hecho, procura nunca usar system. Rrecuerda que la orden system invoca una llamada al sistema operativo, y como el SO puede cambiar de una máquina a otra, tu programa no será portable. Prefiere siempre el uso de funciones estándares de C, como lo es getchar() que realiza la misma función de esperar que el usuario pulse una tecla, y sí es estándar.

Yoel.


Título: Re: ¿a que se debe este error en el codigo?
Publicado por: spiderboot en 6 Febrero 2014, 17:49 pm
gracias amigos, me sirve de mucho su ayuda