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