fork(1) download
  1. #include <iostream>
  2. using namespace std;
  3. void wyp_tab(int **tab, int w, int k)
  4. {
  5. int pom=1;
  6. for (int i=0;i<w;i++)
  7. {
  8. for (int j=0;j<k;j++)
  9. {
  10. tab[i][j]=pom;
  11. pom++;
  12. if (pom==10)
  13. pom=0;
  14. }
  15. }
  16. }
  17. void wys_tab(int **tab, int w, int k)
  18. {
  19. for (int i=0;i<w;i++)
  20. {
  21. for (int j=0;j<k;j++)
  22. cout<<tab[i][j]<<" ";
  23. cout<<endl;
  24. }
  25. }
  26.  
  27. int main()
  28. {
  29. int t, w, k, **tab;
  30. cin >> t;
  31. //cout<<"podaj liczbe tranposzycji t"<<endl;
  32.  
  33. //cout<<"podaj liczbe w wierszy i k kolumn"<<endl;
  34. //cin >> w >> k; //l-wiersze; k-kolumny
  35. //if (w<3)
  36. // w=3;
  37. //if (k>100)
  38. // k=100;
  39. //int l_poz=2*k+2*(w-2);
  40. //cout<<"dlugosc wektora: "<<l_poz<<endl;
  41.  
  42. //tab = new int *[w]; //przydzielenie pamięci na w wierszy
  43. //for(int i=0;i<w;i++) //w wierzy po k elementów
  44. // tab[i] = new int[k];
  45. //wyp_tab(tab,w,k);
  46. //wys_tab(tab,w,k);
  47.  
  48. for (int tr = 0; tr < t; tr++)
  49. {
  50. cin >> w >> k;
  51. tab = new int *[w]; //przydzielenie pamięci na w wierszy
  52. for(int i=0;i<w;i++) //w wierzy po k elementów
  53. tab[i] = new int[k];
  54. wyp_tab(tab,w,k);
  55. wys_tab(tab,w,k);
  56. int l_poz=2*k+2*(w-2);
  57. int j=1;
  58. while (j<=l_poz)
  59. {
  60. int temp=tab[0][0];
  61. if(j>0 & j<k)
  62. {
  63. for(int i=0; i<k-1; i++)
  64. {tab[0][i]=tab[0][i+1];
  65. j++;}
  66. }
  67. if(j>=k & j<(k+w-1))
  68. {
  69. for(int i=0; i<w-1; i++)
  70. {tab[i][k-1]=tab[i+1][k-1];
  71. j++;}
  72. }
  73. if(j>=k+w-1 & j<(2*k+w-2))
  74. {
  75. for(int i=k-1; i>0; i--)
  76. {tab[w-1][i]=tab[w-1][i-1];
  77. j++;}
  78. }
  79. if(j>=(2*k+w-2)& j<l_poz)
  80. {
  81. for(int i=w-1; i>1;i--)
  82. {tab[i][0]=tab[i-1][0];
  83. j++;}
  84. }
  85. if(j==l_poz)
  86. {
  87. tab[1][0]=temp;
  88. temp=0;
  89. j++;
  90. }
  91. }
  92. cout<<endl;
  93. wys_tab(tab,w,k);
  94. cout<<endl;
  95. for(int i=0;i<w;i++)
  96. delete [] tab[i];
  97. delete [] tab;
  98. }
  99. //cout<<endl;
  100. //wys_tab(tab,w,k);
  101.  
  102. //for(int i=0;i<w;i++)
  103. // delete [] tab[i];
  104. //delete [] tab;
  105. // system("pause");
  106. return 0;
  107. }
Success #stdin #stdout 0.01s 5524KB
stdin
3
5
3
3
5
6
5
stdout
1 2 3 
4 5 6 
7 8 9 
0 1 2 
3 4 5 

2 3 6 
1 5 9 
4 8 2 
7 1 5 
0 3 4 

1 2 3 4 5 
6 7 8 9 0 
1 2 3 4 5 

2 3 4 5 0 
1 7 8 9 5 
6 1 2 3 4 

1 2 3 4 5 
6 7 8 9 0 
1 2 3 4 5 
6 7 8 9 0 
1 2 3 4 5 
6 7 8 9 0 

2 3 4 5 0 
1 7 8 9 5 
6 2 3 4 0 
1 7 8 9 5 
6 2 3 4 0 
1 6 7 8 9