Сформировать квадратную матрицу порядка N по заданному образцу
Даны числа а1, а2, … аn. Сформировать квадратную матрицу порядка n по заданному образцу:
Вот примерный код, что дальше делать не знаю.
int main() {
setlocale(LC_ALL, "Russian");
int n;
cout << "Введите порядок квадратной матрицы: ";
cin >> n;
int** arr = new int* [n];
for (int i = 0; i < n; i++)
arr[i] = new int[n];
cout << "Введите а1, а2, ... , a" << n << " : ";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cin >> arr[i][j];
}
}
cout << "Введенный массив: " << endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << setw(4) << arr[i][j];
}
cout << endl;
}
system("pause");
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Все очень просто. Если обозначить матрицу как b, то
b[i][j] = a[(i+j)%n+1]
Если, конечно, нумерация b - как принято в C/C++ - с нуля, а вот a - как в условии - с 1.
Если и a нумеровать с нуля - просто не нужно +1.
Все!
Код сами напишете?
Можно просто ввести все ai в первую строку матрицы, а остальные строки получить сдвигом влево.
Типа
for(int j = 0; j < n; ++j)
b[i][j] = b[i-1][(j+1)%n];
Вот, по просьбам трудящихся весь код ввода:
for (int i = 0; i < n; i++)
cin >> arr[0][i];
for (int i = 1; i < n; i++)
for(int j = 0; j < n; ++j)
arr[i][j] = arr[i-1][(j+1)%n];