Предмет: Информатика, автор: nastjenkakon

int main()
{
int n;
cin >> n;
int mas[100][100];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if ((i + j) < n)
{
mas[i][j] = 0.5 * (i + j + 1) * (i + j + 2) + ((i + j) % 2 == 0 ? -i : -j);
}
else
{
int p = n - i - 1, q = n - j - 1;
mas[i][j] = n * n + 1 - (0.5 * (p + q + 1) * (p + q + 2) + ((p + q) % 2 == 0 ? -p : -q));
}
cout << mas[i][j] << "t";
}
cout << endl;
}
_getch();
return 0;
}
вот код программы диаганализации матрицы
что означает ? в ((i + j) % 2 == 0 ? -i : -j); этих строчках?

Ответы

Автор ответа: marick0073
0
условие ? верно : неверно
То есть аналогично условным операторам if и else. Если условие верно, то выражение верно будет подставлено вместо всего условного оператора, а иначе, подставляется выражение неверно . К примеру:

int a = 2;
int b = a==2?3:4;

В данном примере условный оператор проверяет если a==2, то присваивается значение 3 (так и будет так как a = 2), а иначе присвоится значение 4 (если переменная a не будет равна 2).
Автор ответа: nastjenkakon
0
А можете объяснить работу кода?
Автор ответа: nastjenkakon
0
mas[i][j] = 0.5 * (i + j + 1) * (i + j + 2) + ((i + j) % 2 == 0 ? -i : -j);
Автор ответа: nastjenkakon
0
вот эта строчка
Автор ответа: marick0073
0
Происходит вычисление выражения 0.5 * (i + j + 1) * (i + j + 2) + ((i + j), после чего, полученное число проверяется остатком при делении на 2. То есть из числа удаляются все двойки (допустим 7%2, в числе 7 имеются 3 двойки и 1 единица (2+2+2+1 = 7)), а после, остаток после удаления (в выражении 7%2, остаток это единица, так как 3-и двойки убираются)
Автор ответа: marick0073
0
возвращается в выражение (если бы мы взяли число 6%2, то в этом случае (2+2+2 = 6) остатком будет 0, так как все двойки будут убраны). После чего этот остатком сравнивается с нулем ( == 0). Если остаток равен нулю, то подставляется отрицательное переменной i число (-i). А если остаток не равен нулю, то подставляется отрицательное переменной j число (-j).
Похожие вопросы
Предмет: Алгебра, автор: pochgrief
Предмет: Русский язык, автор: arnulya15