[ Foro de Pascal ]

Ayuda con problema

16-Dec-2008 15:38
Douglas Andrik Chet Morales
5 Respuestas

ke tal amigos, pues, estaba por allí, kuando una amiga me propuso un problema para resolver.
el problema es ke no enkuentro komo hacerlo... he akí el problema:

1. Escriba un programa que ingrese un número, y dado el número dibuje el siguiente pino, suponiendo que el número dado sea 8 (utilizando ciclos).

1
12
123
1234
12345
123456
1234567
12345678
1234567
123456
12345
1234
123
12
1

alguna ayuda?

(Editado por Nacho Cabanes - publicación original Tuesday, 16 de December de 2008, 13:49)


16-Dec-2008 15:41
Nacho Cabanes (+31)

Es sencillo:

Para escribir los números del 1 al 8 usarías un "for":

for a := 1 to 8 do
  write(a);

Si quieres escribir un triángulo, harías dos "for", uno dentro de otro, para que cada vez escriba más números, y el segundo "for" no llegaría hasta "8", sino hasta el valor obtenido en el primero:

for a := 1 to 8 do
  for b := 1 to a do
     write(b);

Pasar de ahí al "pino" que te piden ya debería ser muy fácil...  ;-)



17-Dec-2008 14:02
Douglas Andrik Chet Morales

Mucha s Gracias Mi Kerido Nacho, intentaré hacerlo....
20-Dec-2008 19:34
Douglas Andrik Chet Morales

Mis keridos amigos, he llegado a esto, pero, no me funciona....
program pino;

uses crt;

var
num,inicio,final:integer;

BEGIN
clrscr();
write ('Ingresar un numero entre 1 y 10: ');
readln (num);
if (num<1) or (num>10) then {ciklo para restringir numeros del 1-10}
writeln('numero invalido');
for inicio:=1 to num do
begin
writeln(inicio);
for final:=1 to inicio do
begin
write(final);
end;
end;
writeln();
for inicio:=1 to num do
begin
write(inicio);
for final:=1 to inicio do
begin
write(final);
end;
end;
readln;
end.


24-Dec-2008 19:30
Nacho Cabanes (+31)

Un par de correcciones:

- El "if" que comprueba si el número no es válido avisa, pero no interrumpe.

- La primera parte (creciente) está casi bien, salvo por dos detalles:

* No necesitas escribir inicio: writeln(inicio);
* Después de cada bloque del segundo "for", necesitas un "writeln" para bajar de linea, entre los dos "end" que tienes seguidos.

- La segunda parte será parecida, pero en este caso vas de más a menos, así que tendrás que usar un "downto"... pero no te doy más detalles, investígalo un poco...  ;-)


24-Dec-2008 22:34
Douglas Andrik Chet Morales

Perfecto, Muchas Gracias Mi estimado Nacho, lo he logrado....

bueno, lo ke no he logrado del todo, es lo de ke detenga el ciklo de chekeo... pero, eso lo investigo... y lo del downto, ya lo habia intentado... Muchisisismas gracias Nacho.

el codigo fuente es el siguiente
<code>
program pino;

uses crt;

var
num,inicio,final:integer;

BEGIN
clrscr();
write ('Ingresar un numero entre 1 y 10: ');
readln (num);
if (num<1) or (num>10) then {ciklo para restringir numeros del 1-10}
begin
writeln('numero invalido');
readkey;
end;

for inicio:=1 to num do
begin
for final:=1 to inicio do
begin
write(final);
end;
writeln();
end;

for inicio:=num downto 1 do
begin
for final:=1 to inicio do
begin
write(final);
end;
writeln();
end;
readln;
end.
</code>






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)