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: ???
Este es tu código:
#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í:
#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;
}
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>):
for (int i = 0; i != 5; ++i){
for (int j = -i; j <= i; ++j)
cout << abs(j) + 1;
cout << endl;
}
Un saludo