conjetura de ulam-collatz
Publicado por oscar (1 intervención) el 10/06/2008 07:58:15
Hola.
Tengo que hacer un programa para demostrar la conjetura de ulam. Éste es el código fuente:
program conjetura_ulam (input, output);
uses crt;
var
num : integer;
begin
clrscr;
textcolor (lightblue);
writeln (' CONJETURA DE ULAM');
writeln (' ~~~~~~~~~~~~~~~~~');
normvideo;
writeln;writeln;
textcolor (yellow);
write ('Ingrese un número entero positivo => ');
readln (num);
writeln;
writeln ('La sucesión de ULAM para ',num, ' es: ');
normvideo;
writeln;
textcolor (lightcyan);
write (num);
while num > 1 do
if odd(num) then
begin
num := num * 3 + 1;
write (' ',num:0);
end
else
begin
num := num div 2;
write (' ',num:0);
end;
normvideo;
writeln;
textcolor (lightgreen);
writeln;
write (' Presionar <INTRO> para salir... ');
normvideo;
readln;
end.
Mi pregunta es: ¿cómo hago para que me dé la serie si se ingresa un 1? lo he intentado de distintas formas, pero a veces sin resultado o con un ciclo infinito. Sé que el problema está en la condición, pero ya no sé cómo plantearla.
De antemano, gracias.
Tengo que hacer un programa para demostrar la conjetura de ulam. Éste es el código fuente:
program conjetura_ulam (input, output);
uses crt;
var
num : integer;
begin
clrscr;
textcolor (lightblue);
writeln (' CONJETURA DE ULAM');
writeln (' ~~~~~~~~~~~~~~~~~');
normvideo;
writeln;writeln;
textcolor (yellow);
write ('Ingrese un número entero positivo => ');
readln (num);
writeln;
writeln ('La sucesión de ULAM para ',num, ' es: ');
normvideo;
writeln;
textcolor (lightcyan);
write (num);
while num > 1 do
if odd(num) then
begin
num := num * 3 + 1;
write (' ',num:0);
end
else
begin
num := num div 2;
write (' ',num:0);
end;
normvideo;
writeln;
textcolor (lightgreen);
writeln;
write (' Presionar <INTRO> para salir... ');
normvideo;
readln;
end.
Mi pregunta es: ¿cómo hago para que me dé la serie si se ingresa un 1? lo he intentado de distintas formas, pero a veces sin resultado o con un ciclo infinito. Sé que el problema está en la condición, pero ya no sé cómo plantearla.
De antemano, gracias.
Valora esta pregunta


0