Aprendiendo C: Programa resolver ecuaciones de 2º grado

Iniciado por raulgombru, 15 Septiembre 2010, 18:12 PM

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

raulgombru

Hola, estoy aprendiendo C y tengo que hacer un programa para resolver ecuaciones de segundo grado. Lo he repasado mil veces y no sé donde está el error que me da el compilador. Dejo el código, a ver si alguien lo ve!

#include <studio.h>
#include <math.h>

void main ()

{
float a,b,c,x1,x2,d,e,f;


printf ("QUE paxa, quieres resolver ecuaciones de 2º grado???/n");

printf ("¿Cuántas x cuadradas hay?/n");
scanf("%f%*c",&a);

printf ("¿Cuántas x hay?/n");
scanf("%f%*c",&b);

printf ("¿Cuál es el termino independiente?/n");
scanf("%f%*c",&c);


if (a<1)

{
printf ("Joder, eso no es una ecuación de segundo grado! TT'/n");
}

else
{
d=sqrt(b*b-4*a*c);

if (d>0)

{
printf ("La ecuación no tiene raices reales./n");
}

else

e=2*a;

if (d=0)

{x1=-b/e;
printf("La única raiz es %f/n",x1);
}

else

{
   
x2=(-b-d)/e;
x1=(-b+d)/e;


printf ("Existen dos raices distintas: x1=%f y x2=%f/n",x1,x2);


}
}
}
}


Como compilador estoy usando Dev c, aunque también lo he intentado con gcc desde la terminal de ubuntu.

Este es el "resultado de la compilación" que me muestra Dev:

Compilador: Default compiler
Ejecutando  gcc.exe...
gcc.exe "C:\Users\Raúlg\Desktop\primero.c" -o "C:\Users\Raúlg\Desktop\primero.exe"    -I"C:\Dev-Cpp\include"   -L"C:\Dev-Cpp\lib"
C:\Users\Raúlg\Desktop\primero.c:1:20: studio.h: No such file or directory
C:\Users\Raúlg\Desktop\primero.c:10:61: warning: trigraph ??/ ignored, use -trigraphs to enable
C:\Users\Raúlg\Desktop\primero.c: In function `main':
C:\Users\Raúlg\Desktop\primero.c:6: warning: return type of 'main' is not `int'

C:\Users\Raúlg\Desktop\primero.c: At top level:
C:\Users\Raúlg\Desktop\primero.c:62: error: syntax error before '}' token

Ejecución Terminada


Pero, claro, el programa no se ejecuta. Alguien sabe qué puede pasar? Gracias!
Almendras y Mejillones

Voy a ser sincero: No sé muy bien lo que voy a escribir en este blog. Lo que sí sé es que a veces necesito quejarme de cosas que me desagradan, reivindicar otras que no tengo o compartir con otros las que me gustan. ¿Qué mejor medio para hacer todo esto que internet?

http://almendrasymejillones.blogspot.com


raulgombru

Ah sí, es verdad. Pero sigue dando el mismo error  :-\
Almendras y Mejillones

Voy a ser sincero: No sé muy bien lo que voy a escribir en este blog. Lo que sí sé es que a veces necesito quejarme de cosas que me desagradan, reivindicar otras que no tengo o compartir con otros las que me gustan. ¿Qué mejor medio para hacer todo esto que internet?

http://almendrasymejillones.blogspot.com

pucheto

main devuelve int no void. y te falta un { ACA VA EL CODIGO } despues de un else

raulgombru

OK, ya he visto lo del esle y parece que tira, por lo menos ahora se ejecuta. SIn embargo, algunos carácteres como interrogantes y letras con acento salen mal.

A qué te refieres con lo de "main devuelve int no void."?
Almendras y Mejillones

Voy a ser sincero: No sé muy bien lo que voy a escribir en este blog. Lo que sí sé es que a veces necesito quejarme de cosas que me desagradan, reivindicar otras que no tengo o compartir con otros las que me gustan. ¿Qué mejor medio para hacer todo esto que internet?

http://almendrasymejillones.blogspot.com

Horricreu

#5
A parte de los numerosos errores que puedan existir, te doy unos consejos prácticos que seguro que te sirven:


  • Utiliza int main() en vez de void main().
  • En las instrucciones de una sola sentencia no hace falta poner las llaves.
  • Utiliza las etiquetas GeSHi. En general las utilizas todas mal :xD

Saludos :P

PD: para utilizar GeSHi:

C
[code=c][/code]

C++
[code=cpp][/code]

Lh: No hagas doble post, utiliza el botón modificar.

Cita de: raulgombru en 15 Septiembre 2010, 18:29 PM
A qué te refieres con lo de "main devuelve int no void."?

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Saludos :P

raulgombru

Ok, como no entiendo muy bien alguna cosa de la que habláis me miraré el link que me has pasado, a ver si me entero más xD
Gracias de todas maneras
Almendras y Mejillones

Voy a ser sincero: No sé muy bien lo que voy a escribir en este blog. Lo que sí sé es que a veces necesito quejarme de cosas que me desagradan, reivindicar otras que no tengo o compartir con otros las que me gustan. ¿Qué mejor medio para hacer todo esto que internet?

http://almendrasymejillones.blogspot.com

Horricreu

De nada ::) Pero ya sabes, cualquier duda puedes preguntar y encantado te respondemos.

Saludos :P

pucheto

Off Topic: Perdona por la forma tan seca de responder antes, no estaba de buen humor.

Lolo_Molo

Este programita le hice en su dia y casualemente aun tengo el codigo fuente, he estado leyendo el tuyo y bueno no he visto cual es el fallo, te dejo el mio hechale un vistazo y ves donde puede estar el fallo porque yo soy de esos que necesitan ver el codigo bastante claro si no, no hay quien encuentre nada :D


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

/* Fuente: EC2GRADO.C
   Descripción: Resuelve la ecuación de segundo grado ax + bx + c = 0
*/


int main(void) {

/* Declaraciones */
  float a, b, c;         /* Coeficientes ecuación de segundo grado  */
  float x1, x2;          /* Soluciones reales                       */
  float x1real, x2real;  /* Partes reales soluciones complejas      */
  float x1imag, x2imag;  /* Partes imaginarias soluciones complejas */
  float discriminante;


/* Presentación */
  system ("cls");  /* Borrado de la pantalla */

  printf("Resolución de la ecuación de segundo grado\n");
  printf("==========================================\n");
  printf("El programa soluciona la ecuación de segundo grado\n");
  printf("                  2                       \n");
  printf("                ax  + bx  + c = 0         \n");

/* Petición de datos */
  printf("Introduzca los coeficientes:\n");
  printf("Coeficiente a?: ");  scanf("%f", &a);
  printf("Coeficiente b?: ");  scanf("%f", &b);
  printf("Coeficiente c?: ");  scanf("%f", &c);

/* Cálculos y resultados */
   discriminante = b*b - 4*a*c;

   printf("\nLa ecuación\n");
   
   printf("%14d\n", 2);
   printf("%12gx + %gx + %g = 0\n", a, b, c);

   printf("tiene por soluciones ");


   if (discriminante == 0)
     {
        printf("una raíz real doble\n");
        x1 = x2 = -b / (2*a);
        printf("x1 = %.2f\n", x1);
        printf("x2 = %.2f\n", x2);
     }
   else if (discriminante > 0)
          {
            printf("dos raíces reales\n");
            x1 = (-b + sqrt(discriminante)) / (2*a);
            x2 = (-b - sqrt(discriminante)) / (2*a);
            printf("x1 = %.2f\n", x1);
            printf("x2 = %.2f\n", x2);
          }
        else
          {
            printf("dos raices complejas conjugadas\n");
            x1real = x2real = -b / (2*a);
            x1imag = sqrt(-discriminante) / (2*a);
            x2imag = -sqrt(-discriminante) / (2*a);
            printf("x1 = (%.2f, %.2fi)\n", x1real, x1imag);
            printf("x2 = (%.2f, %.2fi)\n", x2real, x2imag);
          }
         
   system ("pause");
   return 0;
}



Salu2!