[Ayuda] piramide de numeros c++

Iniciado por sokolov123, 16 Octubre 2014, 05:39 AM

0 Miembros y 1 Visitante están viendo este tema.

sokolov123

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: ???



Beakman

Este es tu código:
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int 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;
return 0;
}


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:
Citar32123

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 (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int 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 > 1; j-- ) cout << j;
for( j = 1; j <= i; j++ ) cout << j;
cout << endl;
}
cout << endl;
return 0;
}

rir3760

Otra aproximación se basa en considerar la salida esperada (la alineación solo es para facilitar la lectura):
    1
   212
  32123
4321234
543212345


Como el resultado del absoluto mas uno de las series:
            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 (cpp) [Seleccionar]
for (int i = 0; i != 5; ++i){
   for (int j = -i; j <= i; ++j)
      cout << abs(j) + 1;
   
   cout << endl;
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language