Заполнение квадратного массива
Мне нужно заполнить массив 0, 1 и 3 рандомно выше главной диагонали, на место главной диагонали записать нули, а ниже главной диагонали сделать зеркальное отображение того, что выше, но как-то не выходит у меня.
//Заполнение верхней части массива 0,1 или 3.
for (i = 0; i < n; ++i) {
for (j = 0; j < n; ++j) {
if (j>i) {
a[i][j] = (3 + rand()%3) & 3;
}
}
}
//Симметричное заполнение нижней части, обнудение главной диагонали
for (i=0;i<n;++i) {
for (j=0;j<n;j++) {
if (j<i) {
a[i][j]=3-a[j][i];
}
if (i==j) {
a[i][j]=0;
}
cout<<a[i][j]<<" ";
}
cout<<endl;
}
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
Что-то типа
for (i = 0; i < n; ++i)
{
for (j = i; j < n; ++j)
{
a[i][j] = a[j][i] = (i==j) ? 0 : (3 + rand()%3) & 3;
}
}
Автор решения: TigerTV.ru
→ Ссылка
Заполняем главную диагональ массива нулем, а также числами 0, 1 и 3 рандомно выше и ниже главной диагонали с зеркалированием одновременно.
for (int i = 0; i < n; ++i) {
a[i][i] = 0;
for (int j = i + 1; j < n; ++j) {
a[i][j] = a[j][i] = 3 >> rand() % 3;
}
}
PS. Часть кода я взял у @Harry