# Different orientation on this triangle

## Main Question or Discussion Point

I am trying to get a different orientation on this triangle; specifically I want this output:

**********
*********
********
*******
******
*****
****
***
**
*

Here is the code that I have

Code:
#include <iostream>
using namespace std;

int main ()
{
int lines=10;
int start = 0;
int dots;
while (start < lines) {
// We start at 0, then gradually increment
for (dots = 0; dots <= start; dots++)
cout << "*";
cout << endl;
start++;// Increment
}
system("pause");
return 0;
}
and it generates this output:

*
**
***
****
*****
******
*******
********
*********
**********

What do I need to change?

Related Programming and Computer Science News on Phys.org
DavidSnider
Gold Member

Have the for loop count down instead of up?

Have the for loop count down instead of up?
Nope, this has been tried already and it produces an infinite loop.

DavidSnider
Gold Member

Nope, this has been tried already and it produces an infinite loop.
Then I think you went wrong somewhere. Can you post code again?

Nope, this has been tried already and it produces an infinite loop.
If it goes into an infinite loop, you're doing it wrong.

There's two ways to do it that I can think of. Either count through the while loop as you do now, and work out how many asterisks you want. Or count the other way in your while loop. I'd do the former, probably.

Assuming you're printing, say, 7 lines. You start out and the counter is 0. How many asterisks to print? 7 right? Next line, counter is 1. So you print 7-1=6 asterisks. In general, it's (lines - counter) right?

DavidSnider
Gold Member

for extra credit you might want to build a function like:

void printStars(int numStars) {
....
}

then in main:
for(int i=0;i<lines;i++) {
printStars(lines - i);
}

Then I think you went wrong somewhere. Can you post code again?
Here:

Code:
#include <iostream>
using namespace std;

int main ()
{
int lines=10;
int start = 0;
int dots;
while (start < lines) {
// We start at 0, then gradually increment
for (dots = 0; dots <= start; dots++)
cout << "*";
cout << endl;
start++;// Increment
}
system("pause");
return 0;
}

DavidSnider
Gold Member

I meant post the code where you counted down and got the infinite loop problem

But I'd try the method I suggested earlier with an external function to print each line first.

Here:

Code:
#include <iostream>
using namespace std;

int main ()
{
int lines=10;
int start = 0;
int dots;
while (start < lines) {
// We start at 0, then gradually increment
for (dots = 0; dots <= start; dots++)
cout << "*";
cout << endl;
start++;// Increment
}
system("pause");
return 0;
}

chiro