Консультация № 196405
19.09.2019, 12:29
0.00 руб.
0 1 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Есть код:
Код:

int main()
{
cout << "Enter a number from 1 to 9: ";
int num;
cin >> num;

bool Plus = true;
for (int j = 0;;)
{
int temp = 0;
bool bTemp = true;
for (int i = (num * 2 - 1); i > 0; --i)
{
int rez = num - temp;
cout << rez << " ";
if (temp < j && bTemp)
++temp;
if (i <= temp + 1)
{
--temp;
bTemp = false;
}
}

if (j == num - 1)
{
Plus = false;
}
if (Plus)
{
++j;
}
else
{
--j;
if (j < 0)
{
cout << endl;
break;
}
}
cout << endl;
}

return 0;
}

Все работает верно,но он кажется не оптимальным. Можно его как-то облагородить или сделать легче?
Результат работы кода:
Код:

Enter a number from 1 to 9: 3
3 3 3 3 3
3 2 2 2 3
3 2 1 2 3
3 2 2 2 3
3 3 3 3 3

Обсуждение

давно
Посетитель
7438
7205
19.09.2019, 13:34
общий
это ответ
Здравствуйте, solowey!
Такой вариант сойдет?
Код:
#include <stdlib.h>
#include <iostream>
using namespace std;

int main()
{
cout << "Enter a number from 1 to 9: ";
int num,i0,j0;
cin >> num;
i0 = j0 = num - 1;

for (int i = 0; i < num * 2 - 1; i++)
{
for (int j = 0; j < num * 2 - 1; j++)
cout << 1 + __max(abs(i - i0), abs(j - j0)) << " ";
cout << endl;
}
return 0;
}
5
интересный вариант :-)
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа