Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sokolov123 en 16 Octubre 2014, 05:39 am



Título: [Ayuda] piramide de numeros c++
Publicado por: sokolov123 en 16 Octubre 2014, 05:39 am
Hola, soy principiante en c++
veran.. hice un programa en dev-c++ el cual imprime una piramide

#include<iostream.h>

main()
{
int n, i, j;
 

     
cout<<"Introduzca el numero de filas a imprimir: ";
cin>>n;

cout<<endl;
 
for(i=1;i<=n;i++) {
                                                         
for(j=i;j<i*2;j++)
cout<<j;
                                                           
for(j=j-2;j>=i;j--)
cout<<j;
cout<<endl;
}
cout<<endl;
 system("pause");


Si ingreso 5
queda algo asi:
1
232
34543
4567654
567898765

pero lo que quiero es que quede de la siguiente forma:
1
212
32123
4321234
543212345

alguien que me ayude  :huh: ???




Título: Re: [Ayuda] piramide de numeros c++
Publicado por: Beakman en 16 Octubre 2014, 06:51 am
Este es tu código:
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n, i, j;
  6. cout << "Introduzca el numero de filas a imprimir: ";
  7. cin >> n;
  8.  
  9. cout << endl;
  10. for( i = 1; i <= n; i++ ) {
  11. for( j = i; j < i*2; j++ )
  12. cout << j;
  13. for( j = j-2; j >= i; j-- )
  14. cout << j;
  15. cout << endl;
  16. }
  17. cout << endl;
  18. return 0;
  19. }

Tu error es que en el primer ciclo estás sumando en lugar de restar. Y no hace falta poner i*2. El número importante aca es el 1. Ejemplo:
Citar
32123

Aquí se empieza con 3. Luego bajás hasta llegar al 1, y luego subís nuevamente al 3. Entonces tus ciclos quedarían algo así:
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n, i, j;
  6. cout << "Introduzca el numero de filas a imprimir: ";
  7. cin >> n;
  8.  
  9. cout << endl;
  10. for( i = 1; i <= n; i ++ ) {
  11. for( j = i; j > 1; j-- ) cout << j;
  12. for( j = 1; j <= i; j++ ) cout << j;
  13. cout << endl;
  14. }
  15. cout << endl;
  16. return 0;
  17. }


Título: Re: [Ayuda] piramide de numeros c++
Publicado por: rir3760 en 16 Octubre 2014, 17:31 pm
Otra aproximación se basa en considerar la salida esperada (la alineación solo es para facilitar la lectura):
Código:
    1
   212
  32123
 4321234
543212345

Como el resultado del absoluto mas uno de las series:
Código:
            0
         -1 0 1
      -2 -1 0 1 2
   -3 -2 -1 0 1 2 3
-4 -3 -2 -1 0 1 2 3 4

La implementación en C++ consiste en dos bucles anidados (antes de utilizar la función abs se debe incluir el encabezado <cstdlib>):
Código
  1. for (int i = 0; i != 5; ++i){
  2.   for (int j = -i; j <= i; ++j)
  3.      cout << abs(j) + 1;
  4.  
  5.   cout << endl;
  6. }

Un saludo