• Sábado 14 de Diciembre de 2024, 15:24

Autor Tema:  barras con asteriscos en c++  (Leído 3021 veces)

luigix

  • Visitante
barras con asteriscos en c++
« en: Sábado 13 de Noviembre de 2010, 01:55 »
0
no se como hacer este programa en c++, si alguien me puede explicar como hacerlo se lo agradeceria muchisimo.
si se introduce un 2 entonces tiene que mostrar:
*
**
*
si es un 3
*
**
*
***
*
**
*
etc..
en el caso de entrar un 3 el numero de filas seria 2^3-1 y las columnas serian 3. si entra un 2 entonces 2^2-1 y col 2 etc.

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: barras con asteriscos en c++
« Respuesta #1 en: Sábado 13 de Noviembre de 2010, 13:04 »
0
Una forma sencilla seria medainte unos bucles. Uno para aumentar el número de asteriscos y otro para disminuir.

Código: Text
  1. leer(cont);
  2. para i = 2 hasta  cont avance +1
  3. {
  4.      escribir("*n");
  5.      para j = 1 hasta  i avance +1
  6.      {
  7.            escribir("*");
  8.      }
  9.      escribir("n");
  10. }
  11. para i = cont - 1 hasta 2 avance -1
  12. {
  13.       escribir("*n");
  14.       para j = 1 hasta i avance +1
  15.       {
  16.               escribir("*");
  17.       }
  18.       escribir("n");
  19. }
  20. escribir("*n");
  21.  

luigix

  • Visitante
Re: barras con asteriscos en c++
« Respuesta #2 en: Sábado 13 de Noviembre de 2010, 14:18 »
0
no entiendo porque empiezas por el 2 en el for

luigix

  • Visitante
Re: barras con asteriscos en c++
« Respuesta #3 en: Sábado 13 de Noviembre de 2010, 14:25 »
0
y cont que seria 2^3-1 en el caso que entrara un 3 por teclado?
gracias por la ayuda intentare comprender el codigo que me pusistes.

luigix

  • Visitante
Re: barras con asteriscos en c++
« Respuesta #4 en: Sábado 13 de Noviembre de 2010, 15:23 »
0
estoy probándolo y creo que no sirve para todos los casos. No sigue el mismo patrón.
por ejemplo si introducimos un 4 debería mostrar esto:
*
**
*
***
*
**
*
****
*
**
*
***
*
**
*

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: barras con asteriscos en c++
« Respuesta #5 en: Domingo 14 de Noviembre de 2010, 18:21 »
0
Con el último ejemplo que pones es verdad que el algoritmo no funciona. (No me había fijado en el número de elemento sino solamente en los ejemplos).
Supongo que para n = 5 entonces
Código: Text
  1. *
  2. **
  3. *
  4. ***
  5. *
  6. **
  7. *
  8. ****
  9. *
  10. **
  11. *
  12. ***
  13. *
  14. **
  15. *
  16. *****
  17. *
  18. **
  19. *
  20. ***
  21. *
  22. **
  23. *
  24. ****
  25. *
  26. **
  27. *
  28. ***
  29. *
  30. **
  31. *
  32.  

Si te das cuenta hay unos patrones que se repiten:

para ** antes y después
*

para *** antes y después
*
**
*

y así sucesivamente.
por lo que se deduce que tiene que ser una función recursiva para ir repitiendo los patrones para cada nivel:
Código: Text
  1. funcion recursiva(cont)
  2. {
  3.      si (cont == 1)
  4.      {
  5.               escribir("*n");
  6.      }
  7.      sino
  8.      {
  9.           recursiva(cont -1);
  10.           para i=1 hasta cont avance +1     escribir("*");
  11.           escribir("n");
  12.           recursiva(cont -1);
  13.      }
  14. }
  15.  
  16. int main ()
  17. {
  18.          leer(n);
  19.          recursiva(n);
  20. }
  21.  

luigix

  • Visitante
Re: barras con asteriscos en c++
« Respuesta #6 en: Domingo 14 de Noviembre de 2010, 19:01 »
0
ya lo probé y funciona correctamente. muchas gracias!!