Условие задачи
Найдите закономерность и напишите программу, которая выводит аналогичную таблицу для любых чисел [latex] n>0 [/latex] (количество столбцов) и [latex] m>0 [/latex] (количество строк): +++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*+++++*++ .
Задача находится здесь.
Тесты
№ | n | m | Таблица |
1 | 25 | 8 | +++++*+++++*+++++*+++++*+ ++++*+++++*+++++*+++++*++ +++*+++++*+++++*+++++*+++ ++*+++++*+++++*+++++*++++ +*+++++*+++++*+++++*+++++ *+++++*+++++*+++++*+++++* +++++*+++++*+++++*+++++*+ ++++*+++++*+++++*+++++*++ |
2 | 6 | 6 | +++++* ++++*+ +++*++ ++*+++ +*++++ *+++++ |
3 | 2 | 5 | ++ ++ ++ ++ +* |
Алгоритм решения
Таблица, которую необходимо вывести на экран представляет собой определённую последовательность. Каждый символ таблицы имеет номера столбца и строки (нумерация от 0 до n или m не включительно). Для этого задаём счётчики [latex] i [/latex] и [latex] j [/latex] . Наша задача — определить закономерность появления символа [latex] \ast [/latex] в данной таблице, поскольку в иных случаях необходимо вывести символ [latex] + [/latex]. В первой строке «звёздочка» встречается в данной таблице в [latex] 6,12,18,24[/latex] столбцах. Во второй строке «звёздочка» находится в [latex] 5,11,17,23[/latex] столбцах. В последующих строках ситуация аналогичная. Можно заметить, что символ [latex] \ast [/latex] стоит на позициях, при которых сумма номера строки и номера столбца делится нацело на 6. Проверяем это условие с помощью тернарной операции:
1 |
cout << ((i+j-5)%6== 0? "*":"+"); |
от суммы номеров столбца и строки отнимаем число [latex] 5 [/latex], поскольку нам необходимо, чтобы первыми пятью символами последовательности были плюсы.
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> using namespace std; int main() { int n,m; cin >> n >> m; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ cout << ((i+j-5)%6== 0? "*":"+"); } cout << endl; } return 0; } |
Ссылка на рабочий код программы находится здесь.
Программа правильна. Зачтено.
Но Вы пишите «0 до n». Это двусмысленно — не ясно включать ли n. Поправьте пожалуйста в описании. Можно просто уточнить, что Вы понимаете «до» не включая n.