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.
#
# #
# # #
# # # #
# # # # #
# # # # # #
# # # # # # #
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 .
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;