Duda Turbo Pascal

Hynack

Vereis, tengo una duda con el siguiente programita.

var n:integer;
procedure base4(n:integer);
begin
if n>0 then
begin
base4(n div 4);
write(n mod 4:1)
end
end;
begin
readln(n);
base4(n)
end.

Necesito saber que saca por pantalla, con un minimo razonamiento de porque. Es para una practica de un compañero. Gracias.

txandy
var n:integer;
procedure base4(n:integer);
	begin
		if n>0 then
			begin
				base4(n div 4);
				write(n mod 4:1)
			end
	end;
begin
	readln(n);
	base4(n);
end.

bueno este programa lo que te hace es lo siguiente:

te coge un numero por teclado, ejemplo 100, entonces n=100
el primer if nos comprueba si n es mayor que 0, en este caso si es cierto es mayor que 0 y entraría dentro, nos dice que base4 es el dividir 100/4 que es 25 y nos muestra por pantalla el resto de esa división, que es 1 , es un procedure recursivo así que nos hará otra vez lo mismo pero esta vez con el 25, 25 div 4 = 6, y nos muestra el resto de 6 mod 4 que es 2, así hasta que n sea menor que 0, el siguiente casó será 6 div 4 = 1, y nos escribirá el resto de 1 mod 4, que es 1, y ya para terminar nos hará 1 div 4 que será 0, y el resto 0, y el programa termina aqui porque la condicion se cumple de N > 0.

Espero que te haya servido mi explicación :P

EDITO: Te subo el programa compilado por si no lo tienes y/o para que veas que lo que te digo tiene lógica :P

http://www.megaupload.com/?d=VW868WWO

Hynack

Muchisimas gracias tio, todo aclarado ^^

txandy

de nada ;)

Usuarios habituales

  • txandy
  • Hynack