Pascal/Turbo Pascal - Calculo de salida a mano me da diferente que en pascal

   
Vista:

Calculo de salida a mano me da diferente que en pascal

Publicado por German germanmb@outlook.com (3 intervenciones) el 06/07/2016 10:49:50
Hola tengo el siguiente programa y tengo que calcular la salida suponiendo que la entrada es 7, la salida que me da en pascal es:
FALSE
4
10
4
TRUE
12

pero a mi me da
FALSE
4
10
5
TRUE
12

El problema lo tengo donde esta marcado con asteriscos, donde d toma la variable global num, pero no entiendo porque cuando d queda valiendo 5 no cambia el valor de num a 5 tambien.
Espero me puedan ayudar gracias, esto me esta dando dolor de cabeza ya.

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 ejercicio;
 
var
flag : Boolean;
num : Integer;
 
function f (a:Boolean; var b:Integer):Boolean;
 
begin
 
     b := (3 * b) div 2;
     f := (b = num) and a
 
end;
 
procedure p (var c :boolean; d:Integer);
 
procedure q (num : Integer);
 
    begin
 
      num := num + num;
      writeln (num)
 
   end;
 
   begin
 
      c := not c;
      d := (d + 3) * 4 div 5;   ***************
      q(d);
      writeln (num)
 
end;
 
Begin
 
readln(num);
num := ((num + 2) * 7) mod 15;
flag := f(num mod 2 = 0, num);
if flag then writeln('TRUE') else writeln('FALSE');
writeln(num);
p(flag, num);
if flag then writeln('TRUE') else writeln('FALSE');
writeln(3 * num)
 
End.
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

Calculo de salida a mano me da diferente que en pascal

Publicado por ramon (2072 intervenciones) el 06/07/2016 20:20:50
fíjate en la división que realizas con pascal y como lo realizas a mano.
No es lo mismo div que / el resultado varia.
div es división entera.
/ es división real con decimales eso falla.
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

Calculo de salida a mano me da diferente que en pascal

Publicado por German (3 intervenciones) el 07/07/2016 01:00:54
Si eso lo entiendo, pero igual me da diferente no entiendo porque num no cambia de valor cuando d toma a num como variable global, entonces deberia cambiar el valor de 4 a 5 no?
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

Calculo de salida a mano me da diferente que en pascal

Publicado por ramon (2072 intervenciones) el 07/07/2016 11:46:08
Me supongo te refieres a esto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure p (var c :boolean; d:Integer);
 
procedure q (num : Integer);
 
    begin
 
      num := num + num;
      writeln (num)
 
   end;
 
   begin
 
      c := not c;
      d := (d + 3) * 4 div 5;
      q(d);
      writeln (num)
 
end;

Fíjate que procedure p (var c :boolean; d:Integer); para cambiar te falta procedure p (var c :boolean; var d:Integer);
para que tome el cambio.
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

Calculo de salida a mano me da diferente que en pascal

Publicado por German (3 intervenciones) el 07/07/2016 11:50:05
Hola muchas gracias!! eso era por lo que me daba mal la salida, yo pensaba que bastaba con poner un solo var delante, y ahora veo que para que cambie hay que poner var delante de cada tipo diferente.
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