fork download
  1. #include <iostream>
  2.  
  3. #define N 9
  4. #define M 7
  5.  
  6. int nums = 1;
  7.  
  8.  
  9. int arr[N][M];
  10.  
  11. using namespace std;
  12.  
  13. void printArr(){
  14. for (int i = 0; i < N; i++){
  15. for (int j = 0; j < M; j++){
  16. cout << arr[i][j] << "\t";
  17. }
  18. cout << endl;
  19. }
  20. }
  21.  
  22. void circle (int k){
  23.  
  24. // levo pravo
  25. // int p = k+1 ;
  26. for (int i = 0+k; i < M-k; i++){
  27. if (arr[N-N+k][i] == 0)
  28. arr[N-N+k][i] = nums;
  29. nums++;
  30. }
  31. // verh niz
  32. nums--;
  33. for (int i = 0+k; i < N-k; i++){
  34. if (arr[i][M-1-k] == 0)
  35. arr[i][M-1-k] = nums;
  36. nums++;
  37. }
  38. // pravo levo
  39. nums--;
  40. for (int i = M-(k+1); i >= 0+k; i--){
  41. if (arr[N-1-k][i]==0)
  42. arr[N-1-k][i] = nums;
  43. nums++;
  44. }
  45. // niz verh
  46. nums--;
  47. for (int i = N-(k+1); i > 0+k; i--){
  48. if (arr[i][0+k] == 0)
  49. arr[i][0+k] = nums;
  50. nums++;
  51. }
  52.  
  53. }
  54.  
  55.  
  56. int main(){
  57.  
  58. if (M<N){
  59. for (int k = 0; k < (M+1)/2; k++){
  60. circle(k);
  61. }
  62. } else {
  63. for (int k = 0; k < (N+1)/2; k++){
  64. circle(k);
  65. }
  66. }
  67.  
  68. printArr();
  69.  
  70. return 0;
  71. }
Success #stdin #stdout 0s 5628KB
stdin
Standard input is empty
stdout
1	2	3	4	5	6	7	
28	29	30	31	32	33	8	
27	48	49	50	51	34	9	
26	47	60	61	52	35	10	
25	46	59	62	53	36	11	
24	45	58	63	54	37	12	
23	44	57	56	55	38	13	
22	43	42	41	40	39	14	
21	20	19	18	17	16	15