SoloCodigo

Programación General => Pascal => Mensaje iniciado por: zazo en Martes 28 de Octubre de 2008, 17:51

Título: Dibujar un triángulo
Publicado por: zazo en Martes 28 de Octubre de 2008, 17:51
Necesito dibujar un triángulo indicándole el número de filas y columnas, de manera que quede así:
Código: Text
  1.  
  2. ****
  3.  ***
  4.   **
  5.    *
  6.  
  7. Este serían 4 columnas y 4 filas.
  8.  
  9. *****
  10.   ***
  11.     *
  12. Este 5 columnas y 3 filas.
  13.  
  14.  

No puedo usar ni procedimientos ni funciones.


Mi código es el siguiente:
Código: Text
  1.  
  2. program  triangulo;
  3.  
  4. var
  5.      a,b,c,d:integer;
  6.  
  7. Begin
  8.         writeln('Ingrese filas');
  9.         readln(a);
  10.         writeln('Ingrese columnas');
  11.         for b:=1 to a do
  12.             begin
  13.                    for c:=a downto b do
  14.                          begin
  15.                                 write('*');
  16.                          end;
  17.                     writeln;
  18.              end;
  19. End.
  20.  
  21.  

El problema es que sólo me hace triángulos con igual número de filas que de columnas y además, me los hace de la siguiente manera:

****
***
**
*

que es distinta a la que me piden.


Alguien me puede echar un cable?

Muchas gracias!
Título: Re: Dibujar un triángulo
Publicado por: m0skit0 en Miércoles 29 de Octubre de 2008, 09:05
Primero, ¿para qué quieres que se ingresen las columnas? El número de columnas está definido por el de filas. Y tienes declaradas variables de sobra.

Código: Pascal
  1. program  triangulo;
  2.  
  3. var
  4.      a,b,c:integer;
  5.  
  6. Begin
  7.         writeln('Ingrese filas');
  8.         readln(a);
  9.         for b:=1 to a do
  10.             begin
  11.                    for c:=1 to b do
  12.                          begin
  13.                                 write(' ');
  14.                          end;
  15.                    for c:=a downto b do
  16.                          begin
  17.                                 write('*');
  18.                          end;
  19.                     writeln;
  20.              end;
  21. End.
  22.  
Título: Re: Dibujar un triángulo
Publicado por: zazo en Miércoles 29 de Octubre de 2008, 11:42
Muchas gracias por contestar!

Ese es el problema, necesito las dos variables.

Lo que quiero es hacer un triángulo en el que puedan ser independientes el número de columnas y el de filas, para construir triángulos como el del ejemplo que puse de 5 columnas y 3 filas.

Tal y como tengo el código,como has visto, no lo son, una depende de la otra y sobra.

Ese es mi problema,no consigo hacerlas independientes, porque siempre que modifico el código o se me hacen bucles o me sale sólo un asterisco...

No sé si me explicado bien.
Título: Re: Dibujar un triángulo
Publicado por: m0skit0 en Miércoles 29 de Octubre de 2008, 12:38
Te has explicado, pero siguen habiendo flecos...

Supongo que se ha solucionado el problema de la visualización de los asteriscos, porque no comentas nada...

¿Cómo sabes cuántos asteriscos van por fila? Es decir, imagina que filas = 4 y columnas = 5. ¿cuál sería la salida?

Código: Text
  1. *****
  2.  ****
  3.   ***
  4.    **
  5.  

O bien


Código: Text
  1. *****
  2.   ***
  3.    **
  4.     *
  5.  

O bien


Código: Text
  1. *****
  2.  ****
  3.    **
  4.     *
  5.  

etc...
Título: Re: Dibujar un triángulo
Publicado por: zazo en Miércoles 29 de Octubre de 2008, 13:29
Edito!!.

Sí que se ha resuelto el problema de la visualización! Muchas gracias!

En cuanto a los asteriscos, la verdad es que ahí me he quedado pillado!

En el enunciado del problema dan dos ejemplos de representación:

Código: Text
  1.  
  2.  
  3. ******
  4.  *****             6 filas y 6 columnas
  5.   ****
  6.    ***
  7.     **
  8.      *
  9.  
  10. *****
  11.   ***             3 filas y 5 columnas
  12.     *
  13.  
  14.  

Y claro, el caso que me has planteado de 4 y 5 me ha roto los esquemas, pues no veo cuál de todos los ejemplos que pusiste se ajustaría a esto.
Título: Re: Dibujar un triángulo
Publicado por: m0skit0 en Miércoles 29 de Octubre de 2008, 15:00
Cita de: "zazo"
En cuanto a los asteriscos, la verdad es que ahí me he quedado pillado!
Seguro que se les pasó a quienes te dieron el enunciado también. Suele pasar...  :mellow:
Título: Re: Dibujar un triángulo
Publicado por: zazo en Miércoles 29 de Octubre de 2008, 16:14
Pues no sé, si sólo me fijara en esos ejemplos, el primero ya lo dibuja, y con un If podría separarlos. Pero tendría que pensar en un algoritmo común para el resto de casos.

También, creo que debería delimitar que c > a, poniendo además como valores mínimos 2 y 2 respectivamente. Como valores máximos en el enunciado me dicen que tienen que ser para las columnas 80 y para las filas 24.

No sé si esto último me ayuda a la hora de pensar en la representación. Porque yo sólo veo que la razón es 10/3.

Edito, me colé en valores, pensé en 2 y 2. Aunque viendo que en otra parte del diseño me pide dibujar triángulos con huecos, ampliaría a 3.