¿a que se debe este error en el codigo?

Iniciado por spiderboot, 5 Febrero 2014, 19:58 PM

0 Miembros y 1 Visitante están viendo este tema.

spiderboot

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;
}

leosansan

#1
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 (cpp) [Seleccionar]

det = b*b-4*a*c;


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! ..... !!!!



P.D:

* La función main es de tipo int:

Código (cpp) [Seleccionar]

...........................
int main (){
 .....................
 return EXIT_SUCCESS;
}


*Y scanf es:[/size]

Código (cpp) [Seleccionar]

scanf("%lf %lf %lf", &a, &b, &c);


sin comas en medio.

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


Código (cpp) [Seleccionar]

printf ("\n La raices son: %g, %g",x1, x2);

Yoel Alejandro

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:

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.
Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)

spiderboot

gracias amigos, me sirve de mucho su ayuda