Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda con programa en C

Estas en el tema de Ayuda con programa en C en el foro de C/C++ en Foros del Web. hola amigos de foros del web, soy nuevo en su comunidad y realmente me ha interesado mucho, me he interesado en la programacion, y por ...
  #1 (permalink)  
Antiguo 26/09/2010, 04:13
 
Fecha de Ingreso: septiembre-2010
Ubicación: Distrito Federal, México
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 1
Exclamación Ayuda con programa en C

hola amigos de foros del web, soy nuevo en su comunidad y realmente me ha interesado mucho, me he interesado en la programacion, y por eso me he metido en un problema.
Tengo un reto personal: desarrollar un programa en C que haga las operaciones de la formula general para resolver una ecuacion de primer grado de la forma X= -b +/- (raiz cuadrada de) -4ac y todo eso sobre 2a.
he desarrollado un programa pero me da errores en el compilador gcc


orlsan.c: In function ‘main’:
orlsan.c:18: error: expected ‘)’ before ‘;’ token
orlsan.c:23: error: expected declaration or statement at end of input


en las lineas 18 y 23

aqui les dejo el codigo solicitando su ayuda

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

int a, b, c, x1, x2; /*declaracion de las variables */

main()
{
printf( "introduce el valor de a: " );
scanf("%d", &a);

printf( "introduce el valor de b: " );
scanf("%d", &b);

printf( "introduce el valor de c: " );
scanf("%d", &c);

/* operaciones */
x1 = ( -1 * b ) + ( sqrt( ( b * b ) - ( 4 * a * c ) ) / ( 2 * a );
x2 = ( -1 * b ) - ( sqrt( ( b * b ) - ( 4 * a * c ) ) / ( 2 * a );

printf( "\nX1 = %d", x1);
printf( "\nX2 = %d", x2);
}

espero que me puedan ayudar ya que es mi primer programa y no se que hacer
gracias por su atencion
  #2 (permalink)  
Antiguo 26/09/2010, 07:17
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 13 años, 11 meses
Puntos: 228
Respuesta: Ayuda con programa en C

Tenes mal los parentesis:

x1 = (( -1 * b ) + sqrt( ( b * b ) - ( 4 * a * c ) ) ) / ( 2 * a );
x2 = (( -1 * b ) - sqrt( ( b * b ) - ( 4 * a * c ) ) )/ ( 2 * a );

El sobre 2a divide a toda la expresion y no solo a la raiz cuadrada.
  #3 (permalink)  
Antiguo 26/09/2010, 17:43
 
Fecha de Ingreso: septiembre-2010
Ubicación: Distrito Federal, México
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 1
De acuerdo Respuesta: Ayuda con programa en C

Cita:
Iniciado por sam90 Ver Mensaje
Tenes mal los parentesis:

x1 = (( -1 * b ) + sqrt( ( b * b ) - ( 4 * a * c ) ) ) / ( 2 * a );
x2 = (( -1 * b ) - sqrt( ( b * b ) - ( 4 * a * c ) ) )/ ( 2 * a );

El sobre 2a divide a toda la expresion y no solo a la raiz cuadrada.
tienes razón, y cuando lo corregí me dio otro error (algo del sqrt), y lo solucione con
gcc programa.c -lm -o programa

se tiene que agregar el -lm cuando se usan funciones matemáticas como la raíz cuadrada

muchas gracias porque no habia visto el error de los parentesis
  #4 (permalink)  
Antiguo 26/09/2010, 19:12
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 13 años, 11 meses
Puntos: 228
Respuesta: Ayuda con programa en C

Ademas de incluir los archivos de cabecera de la libreria matematica, tambien hay que decirla al compilador que linkee la libreria matematica. Esto se logra, añadiendo el -lm en la compilacion.
  #5 (permalink)  
Antiguo 27/09/2010, 00:57
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 9 meses
Puntos: 73
Respuesta: Ayuda con programa en C

Has declarado como int las variables para los coeficientes de la ecuación y las soluciones. Deberían ser float ó double.
  #6 (permalink)  
Antiguo 27/09/2010, 20:18
 
Fecha de Ingreso: septiembre-2010
Ubicación: Distrito Federal, México
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 1
De acuerdo Respuesta: Ayuda con programa en C

Cita:
Iniciado por sam90 Ver Mensaje
Ademas de incluir los archivos de cabecera de la libreria matematica, tambien hay que decirla al compilador que linkee la libreria matematica. Esto se logra, añadiendo el -lm en la compilacion.
Eso si no lo sabía, gracias porque no tenia idea de por que se usaba el -lm, eso lo lei en un libro pero ya no me acuerdo cual era
creia que el compilador linkeaba y compilaba el codigo fuente de una sola vez, pero ya veo que a veces no
  #7 (permalink)  
Antiguo 27/09/2010, 20:20
 
Fecha de Ingreso: septiembre-2010
Ubicación: Distrito Federal, México
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Ayuda con programa en C

Cita:
Iniciado por Fw190 Ver Mensaje
Has declarado como int las variables para los coeficientes de la ecuación y las soluciones. Deberían ser float ó double.
Es decir que es

float a, b, c, x1, x2

y cuando muestre el resultado es

printf( "x1 = %f, x1)

es correcto?
  #8 (permalink)  
Antiguo 28/09/2010, 01:18
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 9 meses
Puntos: 73
Respuesta: Ayuda con programa en C

Sí, sería correcto (salvo que te falta el cierre de las comillas después de %f, imagino que es error mecanográfico).

Los scanf debes corregirlos, %d es para leer un entero, utiliza %f para leer un float (o %lf para leer un double).

Deberías comprobar el valor de b*b-4*a*c antes de calcular la raíz, si este valor es negativo te tirará un error matemático.
  #9 (permalink)  
Antiguo 29/09/2010, 02:18
 
Fecha de Ingreso: septiembre-2010
Ubicación: Distrito Federal, México
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Ayuda con programa en C

Claro q fue un error, es que me falla el shift de mi laptop y pues no se (creo que a las computadoras no les gusta que les tiren coca cola).
te agradezco mucho tu ayuda e interes.
voy a corregir el programa y todas las funciones, voy a separar como tu dices el b*b-4*a*c con algo como separando esa operacion de todo lo demás, y luego, si sale negativo, voy a hacer algo como

if( raiz>0)
printf( "no existe solucion")
return 0;

else {

(todo el resto del programa)

}

creo que con eso quedaría bien

Etiquetas: ecuacion, grado, matematico, primer, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:22.