Pascal/Turbo Pascal - Cierre Inesperado en Ejecutables

   
Vista:
Imágen de perfil de Joaquin

Cierre Inesperado en Ejecutables

Publicado por Joaquin (6 intervenciones) el 01/05/2015 21:37:47
Hola, Soy ingresante de licenciatura en sistemas de Informacion en la UNNE, (Corrientes,Argentina);
a modo de ejercicio hice un programa en pascal para hallar las raíces de una funcion polinómica de 2do grado
de la forma ax^2 + bx + c = 0 .

La idea era poder mostrar inclusive raices imaginarias, lo hice expresandolas en su forma binomica
'' sea z un numero complejo, z = a+bi ''

He probado el algoritmo con un lote de pruebas simple pero preciso.

2x^2 - 1
termino cuadratico: 2
termino lineal: 0
termino independiente: -1

x1=0.71 y x2=-0.71

2x^2+ 1
termino cuadratico: 2
termino lineal: 0
termino independiente: 1

r1 = 0 + 0.71 i y r2 = 0 - 0.71 i
----------------------------------------------------------------------------------------------------------------------------------------------------------------

El problema en sí es el siguiente, llego a los resultados esperados, pero al ejecutar el programa,fuera el compilador, al finalizar la ultima instruccion, el programa se cierra de forma inesperada.

Quisiera saber como superar este problema (ya sea agregando un bucle o respetando ciertas normas de la programacion estructurada).

adjunto al mensaje el codigo y su ejecutable.

disculpen las faltas de indentación y demás errores formales en cuanto a la programacion estructurada, se aceptan criticas constructivas.

Se agradece una respuesta!.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Cierre Inesperado en Ejecutables

Publicado por ramon (2072 intervenciones) el 01/05/2015 23:20:57
{Mira observo que te falta la retención final }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
program RESOLVENTE;
 
uses crt, math;
var ve_a, ve_b, ve_c, va_dis, va_rip1, va_rip2, va_rr1, va_rr2 :REAL;
 
BEGIN
 
 
 
writeln('ingrese el termino cuadrado');
readln(ve_a);
writeln('ingrese el termino lineal');
readln(ve_b);
writeln('ingrese el termino independiente');
readln(ve_c);
 
va_dis:= power(ve_b,2)- (4*ve_a*ve_c);  //se analiza discriminante
writeln('el valor del discriminante es : ',va_dis:4:2 );
 
if(va_dis<0)then
 
begin
//PARTE A (RAICES IMAGINARIAS)
writeln('las raices son imaginarias!');
va_dis := va_dis*(0-1);
va_rip1:= (0-ve_b)/ (2*ve_a);
va_rip2:= sqrt(va_dis);
va_rip2:= va_rip2 / (2*(ve_a));
writeln('raiz r1 es : ', va_rip1:4:2,' + ', va_rip2:4:2, ' i');
writeln('raiz r1 es : ', va_rip1:4:2,' - ', va_rip2:4:2, ' i');
 
end
else
begin
//PARTE B (RAICES REALES)
 va_dis:= sqrt(va_dis);
 writeln('la raiz cuadrada del discriminante es : ',va_dis:4:2);
 va_rr1:=((0 - ve_b) + va_dis) / (2*ve_a);
 va_rr2:=((0 - ve_b) - va_dis) / (2*ve_a);
 
writeln('raiz x1 es : ', va_rr1:4:2);
writeln('raiz x2 es : ', va_rr2:4:2);
 
end;
 
    readkey;  {Esto}
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Joaquin

Cierre Inesperado en Ejecutables

Publicado por Joaquin (6 intervenciones) el 02/05/2015 01:40:03
Buenisimo, ya solo me queda incluir esos pasos en una función y agregar la condición de repetir el procedimiento, para practicar funciones y procedimientos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar