Home > OS >  Simple Triangle/Half Pyramid of natural numbers
Simple Triangle/Half Pyramid of natural numbers

Time:11-20

I have write following C code for display a pyramid of natural numbers

#include <iostream>
using namespace std;
int main()
{
    int i,j,n;
    cout<<"Enter Size:";
    cin>>n;
    for(i=n;i>=1;i--)
    {
    for (j=i;j>0;j--)
    {
        cout<<j;
    }
    cout<<endl;
    
}
 return 0;
}

but if we enter n=3 this code display

321
32
1

I want to display this as

123
12
1

CodePudding user response:

You have to change the j loop, its going from i to 0, and you need to change it to go from 1 to 1 1, change it to this and it should work:

for (j=1;j<i 1;j  )

CodePudding user response:

Simply, reverse the second loop.

#include <iostream>
using namespace std;
int main()
{
    int i,j,n;
    cout<<"Enter Size:";
    cin>>n;
    for(i=n;i>=1;i--)
    {
        for (j=1;j<=i;j  ) {cout << j << '\t';}
        cout<<endl;
    }
}

Note : the \t tab is simply for aesthetic purpose, as you can see with when the loop gets to number with more than 1 digit:

Enter Size:10
1       2       3       4       5       6       7       8       9       10
1       2       3       4       5       6       7       8       9
1       2       3       4       5       6       7       8
1       2       3       4       5       6       7
1       2       3       4       5       6
1       2       3       4       5
1       2       3       4
1       2       3
1       2
1

Using std::setw() can achieve the same result.

Also, see Why is "using namespace std;" considered bad practice? and The importance of proper indentation

CodePudding user response:

If you want to display like: 123 12 1

Use

    cout<<"Enter Size:";
    cin>>n;
    for(i=1;i<=n;i  )
    {
    for (j=i;j<=n-1;j  )
    {
        cout<<j<<endl;
    }
    cout<<endl;

I your case you display from end to start.

  • Related