Я хочу напечатать два ромба рядом, но мой код печатает 1 ромб.
Я потратил на это много времени и действительно не знаю, что еще делать.
Любая помощь будет оценена по достоинству.
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int i,j,n, middle, spaceCount, starCount;
cin >> n;
middle = (n - 1) / 2;
for ( i = 0; i < n; i++)
{
spaceCount = abs(middle - i);
starCount = n - 2 * abs(middle - i);
for ( j = 0; j < spaceCount; j++)
cout << " ";
for (j = 0; j < starCount; j++)
cout << "*";
for (j = 0; j < spaceCount; j++)
cout << " ";
cout << endl;
}
}
ввод = нечетные числа
желаемый результат =
* *
*** ***
**********
*** ***
* *
Вы забыли напечатать второй ромб. На каждой итерации вы должны печатать сначала несколько пробелов, затем звезды, затем двойное количество пробелов (чтобы закончить первый ромб и установить пробелы для второго ромба), а затем вы должны нарисовать звезды для второго ромба. Это пример кода, который печатает два ромба:
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int i,j,n, middle, spaceCount, starCount;
cin >> n;
middle = (n - 1) / 2;
for ( i = 0; i < n; i++)
{
spaceCount = abs(middle - i);
starCount = n - 2 * abs(middle - i);
// print a row of the first diamonds
// spaces at the beginning
for ( j = 0; j < spaceCount; j++)
cout << " ";
// the stars itself
for (j = 0; j < starCount; j++)
cout << "*";
// finish the rectangle of the first diamond
for (j = 0; j < spaceCount; j++)
cout << " ";
// print a row of the second diamond
// spaces at the beginning
for (j = 0; j < spaceCount; j++)
cout << " ";
// the stars itself
for (j = 0; j < starCount; j++)
cout << "*";
// spaces at the end are not necessarily required for the last diamond
cout << endl;
}
}
Было бы еще лучше создать функцию для печати одного ромба (строки) и вызова этой функции два раза (это предотвращает дублирование кода).
Не нужно использовать изображение, чтобы показать желаемый результат — см. мое редактирование. Пожалуйста, ознакомьтесь с Как спросить.