Ayuda con programa de Triangulo

celio

Bovino maduro
#1
Estimados señores

Encontre este problema

1
22
333
4444
55555
666666
.
.
.
.
.
30 ... treinta veces


Entonces mi pseudocodigo queda asi


Variables i,j:Entero
Inicio
i=1
Mientras que i <= 30
j=1
Mientras que j <= i
imprima j
j=j+1
Fin-Mientras
i=i+1
Fin-Mientras
Terminar

Obiviamente esto lo hice yo cabe aclarar, mi dificultad esta, y por ese es el motivo de mi consulta es que al hacer la prueba de escrtorio me genera 1 , 2, 3, 3, y hasta treinta , pero no me sale dos veces el dos, tres veces el tres , cuatro veces el cuatro y asi sucesivamente.....

Otra cosa en libros como el el de deitel hay ejercicios propuestos similares como generar un triangulo isosceles con asteriscos , un cuadrado , un rombo , mi pregunta ahi es como puedo yo abarcar esos problemas(no busco que me los hagan), osea como establezco los contadores ...y si es un triangulo cuantos ciclos anidados me podrian salir??




Muchas gracias


Atte

Celio
 

Zephyros

Bovino de la familia
#2
Lo que yo haría es utilizar contadores anidados, algo como esto:

---------
int iC1 = 1, iC2 = iC1, iC3 = iC2
inicio
mientras iC1 <= 30
mientras iC2 != 0
imprime iC3
iC2 --
fin-mientras
imprime(salto de linea)
iC1 ++
iC3 = iC2 = iC1
fin-mientras
termina
---------

Implementa y comenta resultados, no tengo un compilador a la mano (generalmente programo en C++), pero desinstalé DevC++ junto con MinGW.
 

celio

Bovino maduro
#3
Lo que yo haría es utilizar contadores anidados, algo como esto:

---------
int iC1 = 1, iC2 = iC1, iC3 = iC2
inicio
mientras iC1 <= 30
mientras iC2 != 0
imprime iC3
iC2 --
fin-mientras
imprime(salto de linea)
iC1 ++
iC3 = iC2 = iC1
fin-mientras
termina
---------

Implementa y comenta resultados, no tengo un compilador a la mano (generalmente programo en C++), pero desinstalé DevC++ junto con MinGW.


Ok muchas gracias.. pero una pregunta si todos los contadores como iC1=1, por que dejar iC2=iC1..??
 

Zephyros

Bovino de la familia
#4
En la declaración de las variables iC1, iC2 e iC3, todas fueron inicializadas con un valor igual a 1 (la condición inicial del problema-solución), a partir de ahí cada una se incrementa-decrementa de manera distinta.

Te recomiendo que realices una prueba de escritorio al algoritmo, entenderás cómo funciona y el porqué de los valores de las variables. Eso te ayudará más que el que yo te explique cómo analicé el problema e intenté darle solución. No es ni por mucho la mejor implementación, pero es lo que me vino a la mente, de hecho no he realizado la prueba de escritorio hasta iC1 = 30.

Si después de haber realizado la prueba de escritorio, tienes alguna duda/comentario/queja, publícala e intentaré ayudarte.
 
#5
Lo que haría yo en dos contadores anidados me quedaría algo así
for ( i = 1; i<= 30 ; i++ ){
for ( j = 1; j<= i ; j ++){
imprimir i;
}
salto de linea
}
bueno ese es mi codillo no se si resuelve el problema, una disculpa por no realizar el Pseudocodigo
 

Zephyros

Bovino de la familia
#6
Lo que haría yo en dos contadores anidados me quedaría algo así
for ( i = 1; i<= 30 ; i++ ){
for ( j = 1; j<= i ; j ++){
imprimir i;
}
salto de linea
}
bueno ese es mi codillo no se si resuelve el problema, una disculpa por no realizar el Pseudocodigo
Es otro ejemplo, aunque desconozco si resuelve el problema, nos muestra el uso de otro tipo de estructura de control. Gracias por compartirnos el código, sirve para ir analizando posibles soluciones, que sin duda hay muchas, depende del enfoque del programador.
 
Arriba