Задача
Напишите программу, заполняющую массив [latex]n \times n[/latex] следующим образом: на побочной диагонали стоят нули, выше диагонали двойки, ниже единицы.
Входные данные
Дано натуральное число [latex]n[/latex] [latex](n \leqslant 20).[/latex]
Выходные данные
Выведите массив, заполненный по указанному правилу.
Тесты
# | Входные данные | Выходные данные |
---|---|---|
1 | 2 | 20 01 |
2 | 3 | 220 201 011 |
3 | 4 | 2220 2201 2011 0111 |
4 | 5 | 22220 22201 22011 20111 01111 |
5 | 10 | 2222222220 2222222201 2222222011 2222220111 2222201111 2222011111 2220111111 2201111111 2011111111 0111111111 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <iostream> using namespace std; int main() { int n; cin >> n; int A[20][20]; for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ if(i + j == n - 1) A[i][j] = 0; else if (i + j < n - 1) A[i][j] = 2; else A[i][j] = 1; } } for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++) cout << A[i][j]; cout << endl; } return 0; } |
Решение задачи
Для решения задачи создадим двумерный массив, количество строк и столбцов которого не превышают [latex]20[/latex]. Заполнять его будем при помощи двойного цикла, как указано в решении задачи. Введем следующие обозначения:
- [latex]i + j = n — 1[/latex], если ячейка [latex](i, j)[/latex] лежит на побочной диагонали;
- [latex]i + j > n — 1[/latex], если ячейка [latex](i, j)[/latex] лежит ниже побочной диагонали;
- [latex]i + j < n — 1[/latex], если ячейка [latex](i, j)[/latex] лежит выше побочной диагонали.
Далее заполняем массив в соответствии с введеными обозначениями и условием задачи, а затем выводим его на экран. Задача решена.
Ссылки
Ссылка на e-olymp
Ссылка на ideone
Для отправки комментария необходимо войти на сайт.