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!
stdio.h en vez de studio.h.
Ah sí, es verdad. Pero sigue dando el mismo error :-\
main devuelve int no void. y te falta un { ACA VA EL CODIGO } despues de un else
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."?
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
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
De nada ::) Pero ya sabes, cualquier duda puedes preguntar y encantado te respondemos.
Saludos :P
Off Topic: Perdona por la forma tan seca de responder antes, no estaba de buen humor.
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!