Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: Corso en 26 Noviembre 2005, 02:32 am



Título: Pascal+Procedure+Figuritas.
Publicado por: Corso en 26 Noviembre 2005, 02:32 am
Buenas..
Pues otro problema con un ejercicio...
Se me pide que haga un programa (con procedimientos), para que presente por pantalla una “pirámide”. El programa solicita la altura de la pirámide, y con el carácter que se va a realizar... Algo como esto:

Introduzca la altura de la pirámide:7
Introduzca el carácter:#

#
##
###
####
#####
######
#######

Lo más parecido que e hecho es esto:

Código:
program figuritas;

var

    longitud:integer;
    longitud2:integer;
    caracter:char;


procedure figura;

var

   i:integer;

begin
        longitud2:=0;
        for i:=longitud2 to longitud do
          write(',',caracter);
end;

begin
write('Introduzca las veces que desea que se repita un caracter: ');
readln(longitud);

write('Introduzca que caracter desea que se repita: ');
readln(caracter);

figura;
end.



Pero no tengo ni idea de cómo codificarlo para que lo presente con la forma de la pirámide... Imagino que con alguna estructura que valla añadiendo un espacio (writeln(‘’);) entre cada carácter.. O... Es que no se me ocurre nada...
Mira que e hecho ya programas con funciones y procedimientos, y ningún problema... Pero con esta chorrada, ni idea.

A ver si a alguno.
Salu2.


Título: Re: Pascal+Procedure+Figuritas.
Publicado por: Crack_X en 26 Noviembre 2005, 02:46 am
Código:
      
       #
     # #
    # # #
   # # # #
  # # # # #
 # # # # # #
# # # # # # #

En el notepad se veia mejor pero bueno..... ::)

Haci lo haria yo.... empiezo desde abajo para arriba guardandolo en alguna variable. Si la altura es 7 pues escribes los 7 caracteres dejando un espacio entre caracter. Luego la segunda fila (de abajo para arriba) deberia ser 6 caracteres pero dejando un espacio al principio (en el 7 se dejo 0 espacio) y luego ir subiendo en ese orden.

Algo como (no se pascal es solo un ejemplo):
$a = 7
$c = "#"
$e = 0 //espacio
for ($i=1;$i==$a;$i++){
 for ($x=0;$x==$e;$x++){ //ir aumentando el espacio
  writeln(' ');
 }
 $e++;
wrieln($c + ' ');
}

Tambien se podria hacer que el programa o la idea de como lo haria funcionara alrevez pero no puedo quemar tanta neuronas a esta hora  :P Espero que te sirva .


Título: Re: Pascal+Procedure+Figuritas.
Publicado por: jvchino en 26 Noviembre 2005, 06:49 am
Puedes usar la función GOTOXY(coordX,coordY) para ubicar el primer caracter de cada linea.
Inicializas un X y un Y adecuado [Ejemplo: x:=20;  y:=5;]
Y en cada pasada aumentas "Y" (para que vaya a la siguiente línea) y disminuyes "X" (para que retroceda una columna).

Para "dibujar" la pirámide es necesario un doble FOR...DO; uno para que cuente las líneas y otro para que dibuje los caracteres.

Código:
x:=25;
y:=5;
FOR I:= 1 to longitud DO
 begin
   x:=x-1;
   y:=y+1;
   gotoxy(x,y);
   FOR J:=1 to I DO
    write(caracter,' ')
 end;

Con este código obtienes:

       #
      # #
     # # #
    # # # #
   # # # # #
  # # # # # #
 # # # # # # #



Si deseas todo "relleno", no creo que sea dificil modificar el código, para que el resultado sea:

       #
      ###
     #####
    #######
   #########
  ###########
 #############



SUERTE.


P.D.  Debes incluir en la cabecera la unidad CRT:
        uses crt;