Para encontrar el algoritmo tenes que intentar pensar que patron
asocia a las variables con las introducidas por el usuario, para esto
tenes que analizar lo que queres obtener según la entrada.
Veamos algunos casos:
--
Introduce Numero de Lineas: 1
Salida esperada:
*
--
Introduce Numero de Lineas: 2
Salida esperada:
*
**
--
Introduce Numero de Lineas: 3
Salida esperada:
*
**
***
--
Introduce Numero de Lineas: 4
Salida esperada:
*
**
***
****
--
El primer patrón que te encontras es trivial porque es tu pedido, a n líneas tenes que tener como mínimo n writeln. Pero también es evidente que necesitas por cada una de las iteraciones imprimir cierta cantidad de caracteres sin salto de linea (write). ¿Cúantos? La primera vez 1, la segunda vez 2, en la iteración número n, tenes que sacar n. Por lo que tenemos 2 while (uno lo transformo en for por comodidad), uno para sacar n saltos de línea, y otro para sacar los caracteres:
Código:
base:=0;
while base <= lineas do
begin
for x:= 1 to base do
write(caracter);
base := base + 1;
writeln();
end;
Ahora todo junto:
Código:
program caracter_programa;
uses crt;
var
base,x : integer;
caracter : string[1];
lineas:integer;
begin
textcolor(yellow);
textbackground(blue);
clrscr;
gotoxy(30,15);
writeln('Escribe Caracter');
readln(caracter);
writeln('Escribe Numero de Lineas');
readln(lineas);
base:=0;
while base <= lineas do
begin
for x:= 1 to base do
write(caracter);
base := base + 1;
writeln();
end;
readln;
end.
Espero que te sea de ayuda, saludos.