Pascal+Procedure+Figuritas.

Iniciado por Corso, 26 Noviembre 2005, 02:32 AM

0 Miembros y 1 Visitante están viendo este tema.

Corso

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:


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.
Cualquier ciudad es un secreto. Toda palabra traza un laberinto. De cualquier laberinto se sale con palabras.



Crack_X

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


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 .
Shit loads of money spend to show us wrong from right. Say no to war


Yasser Has Things To Say
WarZone

jvchino

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.


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;


Si ayudo a una sola persona a tener esperanza, no habré vivido en vano.

No, nada llega tarde, porque todas las cosas
tienen su tiempo justo, como el trigo y las rosas