Bueno me piden que haga esto en pascal para mi curso de Ing.Informatica...
¿Calcular las raíces de una ecuación de segundo grado (ax²+bx+c=0)?
Yo uso es Dev-Pascal como IDE.
Esto es lo que yo hice:
program raices; uses crt; var a,b,c:integer; x1,x2:real; begin x1:=0; x2:=0; gotoxy(30,1);writeln('-----------------------'); gotoxy(30,2);writeln(' BIENVENIDO! '); gotoxy(30,3);writeln('-----------------------'); writeln('Ingrese los datos para sacar las racies a la ecuacion de segundo grado'); writeln('de la forma ax^2+bx+c'); writeln(''); write('a = ');readln(a); write('b = ');readln(b); write('c = ');readln(c); x1:=(-b+sqrt(b*b-4*a*c))/2*a; x2:=(-b-sqrt(b*b-4*a*c))/2*a; clrscr; write('Las raices son: '); write('x1 = ',x1); write(''); write('x2 = ',x2); readkey; end.
Cuando compilo me compila todo bien pero se me desaparece la pantalla rapido... y me muestra un error en lo que pude hacerle un capture de pantalla..
"Runtime Error 207 at 0x00401281" a ver si me podian ayudar.
Editado: Movido a Tecnicas de programacion y otros lenguajes, postear en el lugar incorrecto incumple las Normas de la Comunidad, antes de volver a postear por favor revíselas.| AORV
Sin solución
Ten en cuenta que no todas las ecuaciones de segundo grado tienen solución!. Mira la fórmula: si el interior de la raiz cuadrada es negativo, te dará error, puesto que no se puede hacer la raiz cuadrada de un número negativo! Yo le pondría un if tal que así:
Saludos
EDIT: Si lo quieres hacer más "pro" puedes cambiar el if por
Si b*b-4*a*c>0 -> mostrar las 2 raices
Si b*b-4*a*c=0 -> mostrar la única raiz
Si b*b-4*a*c<0 -> decir que no hay raices reales
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Sii muchas gracias ya habia visto eso :P
No me habia fijado en ello...de la discriminante si es <0 .... Ya se lo puse "pro" jajajajaj.. gracias compañero ;)
Alguien?
No entiendo cual es el error si todo esta bien :/
Te da error con todos los
Te da error con todos los valores que introduces? o sólo con algunos?
Google dice: Error 207: Invalid floating point operation, así que alguna operación mal estás haciendo (por ejemplo, calcular la raíz cuadrada de un número negativo).
PD. Evita responder a tus comentarios/hilos, debes esperar a que te respondan (si es que alguien puede). También, cuando pidas ayuda sobre programación por favor usa la herramienta para adjuntar code (primer botón del editor, de derecha a izquierda), para facilitar la lectura del mismo.
El error me da
Justo despues que introduzco los valores de a,b y c. despues de que los introduzco en la consola MS-DOS se sale el programa solo mostrando ese error, que con un capture de pantalla pude observar cual era, pero no creo que este haciendo algo mal porque dev-pascal me lo compila todo bien sin errores.
Que algo compile no significa que esté bien.
Sino, depurar un programa sería trivial! De hecho, los errores que son difíciles de encontrar y corregir son todos errores de ejecución, no de compilación.
En este caso Rober Galaga ha vuelto a dar en el clavo. Era cuestión de los números que introduces. Por ejemplo, si pruebas con 0,0,0 o 1,3,2 funciona correctamente. Más arriba te explico que es preferible añadir un IF para que el programa sea seguro, aunque no haya solución.
Saludos!
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Nadie puede ayudarme? Nadie sabe Pascal ??
Solo diganme cual es el error.. proque me aparece ese error.. yo ejecuto el programa y todo fino... pero despues de que ingreso los 3 valores (a,b y c) me tira el error ese y se sale solo el programa (teniendo el READKEY al final) no entiendo sinceramente.