Задача
Найти закономерность и написать программу, которая выводит аналогичную таблицу для любых чисел (количество столбцов) и
(количество строк).
Замечание 1. В некоторых задачах появляется дополнительный параметр .
1 2 3 4 5 6 7 8 9 10 11 12 13 |
+++++++++++++++++++++++++++++++ +....^....+....^....+....^....+ +....|....+....|....+....|....+ +<-- k -->+<-- k -->+<-- k -->+ +....|....+....|....+....|....+ +....v....+....v....+....v....+ +++++++++++++++++++++++++++++++ +....^....+....^....+....^....+ +....|....+....|....+....|....+ +<-- k -->+<-- k -->+<-- k -->+ +....|....+....|....+....|....+ +....v....+....v....+....v....+ +++++++++++++++++++++++++++++++ |
Тесты
Входные данные | Выходные данные | ||||
m | n | k | |||
13 | 31 | 9 |
|
||
5 | 8 | 4 |
|
||
20 | 20 | 3 |
|
Алгоритм
Программа выполняется с помощью двух циклов. Первый цикл отвечает за строки, второй за столбцы. Метод заключается в том, чтобы узнать, когда мы записываем именно ‘+’, а уже в остальные места записываем ‘.’. Для начала проверяем делится ли номер строки, уменьшенный на 1, нацело на 6. Если да, то записываем +. Далее проверяем, делится ли номер столбца, уменьшенный на 1, на число [latex]k+1[/latex], где [latex]k[/latex] — вводимый параметр. Во всех остальных случаях пишем ‘.’.
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> using namespace std; int main() { int m, n, k; //m-строки, n - столбцы cin >> m >> n >> k; for (int i = 0; i < m; i++){ for (int j = 0; j < n; j++){ if (i%6 == 0) cout << '+'; else if (j%(k+1) == 0) cout << '+'; else cout << '.'; } cout << endl; } return 0; } |
Очень хорошо. Зачтено.