Я пытаюсь сформировать шаблон треугольника, показанный «целью», и я получил тот, который помечен как «фактический результат». Я также должен использовать только вложенные циклы for и оператор %. Я пробовал играть с оператором % и i или j в дополнение к k или вместо k, но мне не удалось полностью получить шаблон, который я ищу. Вроде у меня нечетные ряды хорошие (ряд 1, 3, 5), но не все. Любая помощь приветствуется.
// target: * + * + * + actual output: * + * + * +
+ * + * + * + * + *
* + * + * + * +
+ * + * + *
* + * +
+ *
//
// code //
int main ()
{
int i,j,k;
for (i = 6; i >= 1; i--
{
for (j = 1;j <= (6 - i); j++ )
{
cout << " ";
}
for (k = 1;k<=i;k++)
{
if (k % 2 == 0) {
cout << "+";
}
else
{
cout << "*";
}
}
}
вы также можете учитывать значение i, а не только k, см. мой ответ





просто заменить
if (k % 2 == 0)
от
if ((k+i) % 2 == 0)
#include <iostream>
using namespace std;
int main ()
{
int i,j,k;
for (i = 6; i >= 1; i--)
{
for (j = 1;j <= (6 - i); j++ )
{
cout << " ";
}
for (k = 1;k<=i;k++)
{
if ((k+i) % 2 == 0) {
cout << "+";
}
else
{
cout << "*";
}
}
cout << endl;
}
}
Компиляция и исполнение:
pi@raspberrypi:/tmp $ g++ -pedantic -Wextra t.c
pi@raspberrypi:/tmp $ ./a.out
*+*+*+
+*+*+
*+*+
+*+
*+
+
(на основе моего комментария)
#include <iostream>
using namespace std;
int main ()
{
int i,j;
for (i = 0; i < 6; ++i)
{
for (j = 0; j < i; ++j )
{
cout << ' ';
}
for ( ; j < 6; ++j) // just carry on to increment j
{
cout << (j % 2 ? '+' : '*');
}
cout << endl;
}
}
Не используйте дополнительную переменную
k, которая всегда начинается с1. Просто продолжайте использоватьj, увеличивая его до6.for ( ; j <= 6; j++) if (j % 2) ...