Frage

I want something like this:

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

I tried this:

void roadBound() {

    for( int i = 1; i <= 10; i++ ){
        for( int j = 0; j < i; j++ ){
           cout << "*" ;
        }
        cout << endl;
    }
}

But it wasnt even close. Please help

War es hilfreich?

Lösung 2

This uses 3 loops inside another loop

const int ROW = 4;
const int GAP = 7;

for (int i=ROW, g=GAP; i>=0; i--, g+=2)
{
    for (int j=0; j<i; j++) cout << '*';
    for (int j=0; j<g; j++) cout << ' ';
    for (int j=0; j<i; j++) cout << '*';
    cout << '\n';
}

Output

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

Live code

Andere Tipps

So far, your code produces this:

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

Which looks like a pretty good right triangle, so I think you're on the right track. To make the image you had above, you'll need to throw in some spaces, and make sure that every line is the same length. If it's okay, I think what you're asking is way easier with only one loop. Try this:

#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;

int main() {
int height = 4;
int line = height * 4;
for( int i = height; i > 0; --i ){
        string stars (i, '*');
        int space = line - (i * 2);
        string spaces (space, ' ');
        cout << stars << spaces << stars << endl;
    }
}

This code produces:

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

which seems to have a few more spaces than your example up there, but you can fix that by adding a variable before the loop for the maximum length of space you want, and then decrementing it by two each time through the loop.

You can try this

int lf=4,md=4, N=4;
for( int i = 1; i<=N; i++ )
{
   for( int j =1; j<=lf; j++ )
      cout<<"*";
    for( int j =1; j<=md; j++ )
      cout<<" ";
    for( int j =1; j<=lf; j++ )
      cout<<"*";
    cout<<"\n";
       lf--;
      md+=2;
}
void roadBound(int n) {
    const int gap = 6;
    string str = string(n, '*') + string(gap, ' ') + string(n, '*');
    int f=n,b=n+gap-1;
    while(n--){
        str[f--]=str[b++]=' ';
        cout << str << endl;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top