Visual Studio 2010 — я хотел бы знать, как сделать прямоугольник (S) в C ++ звездочкой, используя цикл

Я хочу что-то вроде этого:

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

Я попробовал это:

void roadBound() {

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

Но это было даже не близко. Пожалуйста помоги

0

Решение

Это использует 3 цикла внутри другого цикла

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';
}

Выход

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

Живой код

0

Другие решения

Пока ваш код производит это:

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

Это выглядит как неплохой прямоугольник, так что я думаю, что вы на правильном пути. Чтобы сделать изображение, которое вы имели выше, вам нужно добавить несколько пробелов и убедиться, что каждая строка имеет одинаковую длину. Если все в порядке, я думаю, что вы спрашиваете, проще всего с одной петлей. Попробуй это:

#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;
}
}

Этот код производит:

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

который, кажется, имеет несколько больше пробелов, чем ваш пример, но вы можете это исправить, добавив переменную перед циклом для максимальной длины пространства, которую вы хотите, а затем уменьшив ее на два раза каждый раз в цикле.

1

Вы можете попробовать это

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

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

Первый треугольник

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

Это будет код для вышеуказанного треугольника:

for (int i = 5; i > 0; i--){
for (int j = 5; j > 0 ; j--){
if (i < j){
cout << ' ' ;;
}
else {
cout << '*';
}
}
cout << endl;
}

Второй треугольник

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

Это будет код для другого треугольника:

for (int i = 5; i > 0; i--){
for (int j = 0; j < i ; j++){
cout << '*';
}
cout << endl;
}

Нет необходимости в трех циклах внутри другого цикла. Вы можете сделать оба из них только с двумя циклами. Одному из них просто нужно условие, чтобы определить, нужно ли ставить звездочку или пробел.

-1
По вопросам рекламы [email protected]