Я хочу что-то вроде этого:
**** ****
*** ***
** **
* *
Я попробовал это:
void roadBound() {
for( int i = 1; i <= 10; i++ ){
for( int j = 0; j < i; j++ ){
cout << "*" ;
}
cout << endl;
}
}
Но это было даже не близко. Пожалуйста помоги
Это использует 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';
}
Выход
**** ****
*** ***
** **
* *
Пока ваш код производит это:
*
**
***
****
*****
******
*******
********
*********
**********
Это выглядит как неплохой прямоугольник, так что я думаю, что вы на правильном пути. Чтобы сделать изображение, которое вы имели выше, вам нужно добавить несколько пробелов и убедиться, что каждая строка имеет одинаковую длину. Если все в порядке, я думаю, что вы спрашиваете, проще всего с одной петлей. Попробуй это:
#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;
}
}
Этот код производит:
**** ****
*** ***
** **
* *
который, кажется, имеет несколько больше пробелов, чем ваш пример, но вы можете это исправить, добавив переменную перед циклом для максимальной длины пространства, которую вы хотите, а затем уменьшив ее на два раза каждый раз в цикле.
Вы можете попробовать это
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;
}
}
Первый треугольник
*****
****
***
**
*
Это будет код для вышеуказанного треугольника:
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;
}
Нет необходимости в трех циклах внутри другого цикла. Вы можете сделать оба из них только с двумя циклами. Одному из них просто нужно условие, чтобы определить, нужно ли ставить звездочку или пробел.