• Viernes 8 de Noviembre de 2024, 16:46

Autor Tema:  No funciona el programa  (Leído 2313 veces)

samu22893

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
No funciona el programa
« en: Sábado 30 de Agosto de 2008, 21:14 »
0
Hola tengo 15 años y ayer empece con el pascal. Hoy he intentado crear un programa para la formula de las ecuaciones de 2º grado y se compila bien pero al ejecutarlo me deja meter los valores de las variables y pero luego se quita sin darme resultado ninguno. Yo creo que el problema puede estar en el tipo de variable y he intentado ponerlo con otros tipo. Seguro que es una tonteria pero como se puede deducir no se casi nada de pascal. Os dejo aqui el codigo:

program ecuacion;
var
a : double;
b : double;
c : double;
begin
writeln('a :');
readln(a);
writeln('b :');
readln(b);
writeln('c :');
readln(c);
writeln((b+sqrt(b**2-4*a*c))div(2*a));
writeln('***** PULSA ENTER PARA SALIR *****');
readln();
end.

Muchas Gracias de antemano. :D

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: No funciona el programa
« Respuesta #1 en: Domingo 31 de Agosto de 2008, 00:25 »
0
Pues no estoy seguro, pero me parece que la division deberia ser con / y no con div.

Tambien viene el problema de la division por cero, no se puede dividir entre cero, ya que da error, faltaria una comprobacion para verificar que 2*A no sea igual a cero. Y tambien no puede haber raices cuadradas de numeros negativos, por lo que tambien debes comprobar que b**2-4*a*c no sea negativa.

Yo creo que por ahi estan los problemas.

Saludos :hola:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

samu22893

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: No funciona el programa
« Respuesta #2 en: Domingo 31 de Agosto de 2008, 01:46 »
0
Que va ya he probado todo y nada.
He estado mirando la formula por partes y falla en el
sqrt(b**2-4*a*c)

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: No funciona el programa
« Respuesta #3 en: Domingo 31 de Agosto de 2008, 21:10 »
0
Pues veo que no has revisado por todas partes como dices.

Pensaba que tu error era de logica, pero en relidad es de sintaxis

Verifique (no recordaba porque hacia tiempo que no porgramaba en pascal) y resulta que no existe el operador ** en pascal.

Para elevar al cuadrado deberias hacer b*b y no b**2.

otra cosa, al usar double, todos tus numeros deben ser double.

esta sentencia si debe compilar.

b+sqrt(b*b-4.0*a*c))/(2.0*a)

Pero aun asi, faltan las comprobaciones que te comentaba arriba.

Saludos :hola:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

samu22893

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: No funciona el programa
« Respuesta #4 en: Lunes 1 de Septiembre de 2008, 01:40 »
0
Muchas gracias ya se de donde es el problemaya funciona perfectamente. He cambiado el b**2 por b*b pero lo raro es que antes si me compilaba.
El problema de verdad estaba en lo que me dijiste al principio pues no me acordaba de que no se puede hacer la raiz cuadrada de un numero negativo y en programa al meter los valores de a, b y c metia los primeros numeros que me pasaban por la cabeza entonces pues no se ejecutaba.

Muchas gracias  :D

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: No funciona el programa
« Respuesta #5 en: Lunes 1 de Septiembre de 2008, 09:32 »
0
Sólo unos apuntes si me permites:

1. Una ecuación de segundo grado tiene 2 soluciones, la que mencionas y b - sqrt(b*b-4.0*a*c))/(2.0*a)

2. Es cierto que a tiene que ser <> 0, pero si es 0 no es una ecuación de segundo grado, ya que ax^2 + bx + c

3. b puede ser negativo puesto que se eleva al cuadrado, y a y c también pueden ser negativos. Lo que no puede ser es que 4ac sea mayor que b^2.

4. Claro que existen las raíces de números negativos, son números imaginarios (i = sqrt(-1)) y son soluciones a ecuaciones de 2º grado.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: No funciona el programa
« Respuesta #6 en: Lunes 1 de Septiembre de 2008, 19:32 »
0
Tienes razon en todo mosquito, aunque si te fijas, yo solo recalque en donde podia estar el error, no puse todas las reglas de la formula para ecuaciones de segundo grado.

Y respecto a las raices pares de numero negativos, claro que existen, y eso ya se sabe que son los numeros imaginarios, pero a menos que diseñes un tipo especial para manejarlas, el compilador dara error al tratar de hacer sqrt(-1). A eso me referia yo en la explicacion.

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: No funciona el programa
« Respuesta #7 en: Martes 2 de Septiembre de 2008, 08:23 »
0
Cierto, Profesor X, pero por eso digo que tan sólo son apuntes.

eternity

  • Miembro activo
  • **
  • Mensajes: 78
  • Nacionalidad: ar
    • Ver Perfil
    • http://lameriendadejuan.blogspot.com/
Re: No funciona el programa
« Respuesta #8 en: Viernes 17 de Octubre de 2008, 03:02 »
0
bueno primero no contemplas que si el valor de a es 0, no es una ecuacion de 2do grado, y que si llegaras a ingresarlo en el programa daria error de división por cero, otro tema, si tus variables no son enteras es un error que utilices DIV , tenes que utilizar la '/' para dividir, son cuestiones que se van puliendo!

espero que te sea util!