Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <iomanip>
  4. #include <ctime>
  5.  
  6. using namespace std;
  7.  
  8. void genTab(char t[][3], char znak);
  9. void piszTab(char t1[][3], char t2[][3], char t3[][3], char t4[][3], char t5[][3], char t6[][3]);
  10. void rotateOneTwoThree(char t2[][3], char t3[][3], char t4[][3], char t5[][3], int zmienna);
  11. void rotateFourFiveSix(char t1[][3], char t3[][3], char t5[][3], char t6[][3], int zmienna);
  12. void rotateSevenEightNine(char t1[][3], char t2[][3], char t4[][3], char t6[][3], int zmienna);
  13. void rotateWallCounterClockwise(char t[][3]);
  14. void rotateWallClockwise(char t[][3]);
  15. void rotateUp(char t1[][3], char t3[][3], char t5[][3], char t6[][3]);
  16. void rotateDown(char t1[][3], char t3[][3], char t5[][3], char t6[][3]);
  17. void rotateLeft(char t2[][3], char t3[][3], char t4[][3], char t5[][3]);
  18. void rotateRight(char t2[][3], char t3[][3], char t4[][3], char t5[][3]);
  19. void rotateClockwise(char t1[][3], char t2[][3], char t4[][3], char t6[][3]);
  20. void rotateCounterClockwise(char t1[][3], char t2[][3], char t4[][3], char t6[][3]);
  21.  
  22.  
  23. int main()
  24. {
  25. cout<<"Witaj w programie umozliwiajacym ukladanie kostki Rubika."<<endl;
  26. cout<<"Do dyspozycji masz:"<<endl;
  27. cout<<"1)obroty scian 1-9."<<endl;
  28. cout<<"2)obroty kostki W, A, S, D."<<endl;
  29. cout<<"3)obrot zgodnie ze wskazowkami zegara i przeciwnie do nich."<<endl;
  30. cout<<"Oto ona. Najpierw powinienes ja wymieszac."<<endl;
  31. char znak;
  32. znak = 97;
  33. char t1[3][3];
  34. char t2[3][3];
  35. char t3[3][3];
  36. char t4[3][3];
  37. char t5[3][3];
  38. char t6[3][3];
  39. genTab(t1, znak+2);
  40. genTab(t2, znak);
  41. genTab(t3, znak+1);
  42. genTab(t4, znak+4);
  43. genTab(t5, znak+5);
  44. genTab(t6, znak+3);
  45. piszTab(t1, t2, t3, t4, t5, t6);
  46. char klawisz;
  47. int zmienna=0;
  48. bool end=false;
  49. while(!end)
  50. {
  51. if(klawisz!=10)
  52. cout<<"Jaki obrot chcesz wykonac ?" <<endl;
  53. klawisz=getchar();
  54. switch(klawisz)
  55. {
  56. case '1': rotateOneTwoThree(t2,t3,t4,t5, zmienna);
  57. piszTab(t1, t2, t3, t4, t5, t6);
  58. break;
  59. case '2': rotateOneTwoThree(t2,t3,t4,t5, zmienna+1);
  60. piszTab(t1, t2, t3, t4, t5, t6);
  61. break;
  62. case '3': rotateOneTwoThree(t2,t3,t4,t5, zmienna+2);
  63. piszTab(t1, t2, t3, t4, t5, t6);
  64. break;
  65. case '4': rotateFourFiveSix(t1,t3,t5,t6, zmienna);
  66. rotateWallCounterClockwise(t2);
  67. piszTab(t1, t2, t3, t4, t5, t6);
  68. break;
  69. case '5': rotateFourFiveSix(t1,t3,t5,t6, zmienna+1);
  70. piszTab(t1, t2, t3, t4, t5, t6);
  71. break;
  72. case '6': rotateFourFiveSix(t1,t3,t5,t6, zmienna+2);
  73. rotateWallClockwise(t4);
  74. piszTab(t1, t2, t3, t4, t5, t6);
  75. break;
  76. case '7': rotateSevenEightNine(t1,t2,t4,t6, zmienna);
  77. rotateWallCounterClockwise(t3);
  78. piszTab(t1, t2, t3, t4, t5, t6);
  79. break;
  80. case '8': rotateSevenEightNine(t1,t2,t4,t6, zmienna +1);
  81. piszTab(t1, t2, t3, t4, t5, t6);
  82. break;
  83. case '9': rotateSevenEightNine(t1,t2,t4,t6, zmienna +2);
  84. rotateWallClockwise(t5);
  85. piszTab(t1, t2, t3, t4, t5, t6);
  86. break;
  87. case 'w': rotateWallCounterClockwise(t2);
  88. rotateWallClockwise(t4);
  89. rotateUp(t1,t3,t5,t6);
  90. piszTab(t1, t2, t3, t4, t5, t6);
  91. break;
  92. case 'a': rotateWallClockwise(t1);
  93. rotateWallCounterClockwise(t6);
  94. rotateLeft(t2,t3,t4,t5);
  95. piszTab(t1, t2, t3, t4, t5, t6);
  96. break;
  97. case 's': rotateWallClockwise(t2);
  98. rotateWallCounterClockwise(t4);
  99. rotateDown(t1,t3,t5,t6);
  100. piszTab(t1, t2, t3, t4, t5, t6);
  101. break;
  102. case 'd': rotateWallCounterClockwise(t1);
  103. rotateWallClockwise(t6);
  104. rotateRight(t2,t3,t4,t5);
  105. piszTab(t1, t2, t3, t4, t5, t6);
  106. break;
  107. case 'x': rotateClockwise(t1, t2, t4, t6);
  108. rotateWallClockwise(t3);
  109. rotateWallCounterClockwise(t5);
  110. piszTab(t1, t2, t3, t4, t5, t6);
  111. break;
  112. case 'z': rotateCounterClockwise(t1, t2, t4, t6);
  113. rotateWallCounterClockwise(t3);
  114. rotateWallClockwise(t5);
  115. piszTab(t1, t2, t3, t4, t5, t6);
  116. break;
  117. case 'e':end=true;
  118. break;
  119. case 10 :;
  120. break;
  121. default:cout<<"Nieprawidlowy przycisk !"<<endl;
  122. }
  123. }
  124. return 0;
  125. }
  126.  
  127. void genTab(char t[][3], char znak)
  128. {
  129. for (int i=0; i<3; i++)
  130. for (int j=0; j<3; j++)
  131. {
  132. t[i][j]=znak;
  133. }
  134. }
  135.  
  136. void piszTab(char t1[][3], char t2[][3], char t3[][3], char t4[][3], char t5[][3], char t6[][3])
  137. {
  138. cout<<endl<<endl;
  139. cout<<setw(13)<<t1[0][0]<<setw(2)<<t1[0][1]<<setw(2)<<t1[0][2]<<endl;
  140. cout<<setw(13)<<t1[1][0]<<setw(2)<<t1[1][1]<<setw(2)<<t1[1][2]<<endl;
  141. cout<<setw(13)<<t1[2][0]<<setw(2)<<t1[2][1]<<setw(2)<<t1[2][2]<<setw(14)<<"6 5 4"<<endl<<endl;
  142. cout<<"1 "<<t2[0][0]<<setw(2)<<t2[0][1]<<setw(2)<<t2[0][2]<<setw(3)<<t3[0][0]<<setw(2)<<t3[0][1]<<setw(2)<<t3[0][2]<<setw(3)<<t4[0][0]<<setw(2)<<t4[0][1]<<setw(2)<<t4[0][2]<<setw(3)<<t5[0][0]<<setw(2)<<t5[0][1]<<setw(2)<<t5[0][2]<<setw(3)<<endl;
  143. cout<<"2 "<<t2[1][0]<<setw(2)<<t2[1][1]<<setw(2)<<t2[1][2]<<setw(3)<<t3[1][0]<<setw(2)<<t3[1][1]<<setw(2)<<t3[1][2]<<setw(3)<<t4[1][0]<<setw(2)<<t4[1][1]<<setw(2)<<t4[1][2]<<setw(3)<<t5[1][0]<<setw(2)<<t5[1][1]<<setw(2)<<t5[1][2]<<setw(3)<<endl;
  144. cout<<"3 "<<t2[2][0]<<setw(2)<<t2[2][1]<<setw(2)<<t2[2][2]<<setw(3)<<t3[2][0]<<setw(2)<<t3[2][1]<<setw(2)<<t3[2][2]<<setw(3)<<t4[2][0]<<setw(2)<<t4[2][1]<<setw(2)<<t4[2][2]<<setw(3)<<t5[2][0]<<setw(2)<<t5[2][1]<<setw(2)<<t5[2][2]<<setw(3)<<endl<<endl;
  145. cout<<setw(12)<<"7 "<<t6[0][0]<<setw(2)<<t6[0][1]<<setw(2)<<t6[0][2]<<endl;
  146. cout<<setw(12)<<"8 "<<t6[1][0]<<setw(2)<<t6[1][1]<<setw(2)<<t6[1][2]<<endl;
  147. cout<<setw(12)<<"9 "<<t6[2][0]<<setw(2)<<t6[2][1]<<setw(2)<<t6[2][2]<<endl<<endl;
  148. cout<<setw(17)<<"4 5 6"<<endl<<endl<<endl<<endl;
  149. }
  150.  
  151. void rotateOneTwoThree(char t2[][3], char t3[][3], char t4[][3], char t5[][3], int zmienna)
  152. {
  153. char tp;
  154. for(int j=0; j<3; j++)
  155. {
  156. tp=t5[zmienna][j];
  157. t5[zmienna][j]=t4[zmienna][j];
  158. t4[zmienna][j]=t3[zmienna][j];
  159. t3[zmienna][j]=t2[zmienna][j];
  160. t2[zmienna][j]=tp;
  161. }
  162.  
  163. }
  164.  
  165. void rotateFourFiveSix(char t1[][3], char t3[][3], char t5[][3], char t6[][3], int zmienna)
  166. {
  167. char tp;
  168. for(int i=0; i<3; i++)
  169. {
  170. tp=t1[i][zmienna];
  171. t1[i][zmienna]=t3[i][zmienna];
  172. t3[i][zmienna]=t6[i][zmienna];
  173. t6[i][zmienna]=t5[2-i][2-zmienna];
  174. t5[2-i][2-zmienna]=tp;
  175. }
  176. }
  177.  
  178. void rotateSevenEightNine(char t1[][3], char t2[][3], char t4[][3], char t6[][3], int zmienna)
  179. {
  180. char tp;
  181. for(int i=0; i<3; i++)
  182. {
  183. tp=t1[2-zmienna][i];
  184. t1[2-zmienna][i]=t4[i][zmienna];
  185. t4[i][zmienna]=t6[zmienna][2-i];
  186. t6[zmienna][2-i]=t2[2-i][2-zmienna];
  187. t2[2-i][2-zmienna]=tp;
  188. }
  189.  
  190. }
  191. void rotateWallCounterClockwise(char t[][3])
  192. {
  193. char tp;
  194. for(int i=0; i<2; i++)
  195. {
  196. tp=t[0][i];
  197. t[0][i]=t[i][2];
  198. t[i][2]=t[2][2-i];
  199. t[2][2-i]=t[2-i][0];
  200. t[2-i][0]=tp;
  201. }
  202. }
  203. void rotateWallClockwise(char t[][3])
  204. {
  205. char tp;
  206. for(int i=0; i<2; i++)
  207. {
  208. tp=t[2-i][0];
  209. t[2-i][0]=t[2][2-i];
  210. t[2][2-i]=t[i][2];
  211. t[i][2]=t[0][i];
  212. t[0][i]=tp;
  213. }
  214. }
  215. void rotateUp(char t1[][3], char t3[][3], char t5[][3], char t6[][3])
  216. {
  217. char tp;
  218. for(int i=0; i<3; i++)
  219. for(int j=0; j<3; j++)
  220. {
  221. tp=t3[i][j];
  222. t3[i][j]=t6[i][j];
  223. t6[i][j]=t5[2-i][2-j];
  224. t5[2-i][2-j]=t1[i][j];
  225. t1[i][j]=tp;
  226. }
  227. }
  228. void rotateDown(char t1[][3], char t3[][3], char t5[][3], char t6[][3])
  229. {
  230. char tp;
  231. for(int i=0; i<3; i++)
  232. for(int j=0; j<3; j++)
  233. {
  234. tp=t1[i][j];
  235. t1[i][j]=t5[2-i][2-j];
  236. t5[2-i][2-j]=t6[i][j];
  237. t6[i][j]=t3[i][j];
  238. t3[i][j]=tp;
  239. }
  240. }
  241. void rotateLeft(char t2[][3], char t3[][3], char t4[][3], char t5[][3])
  242. {
  243. char tp;
  244. for(int i=0; i<3; i++)
  245. for(int j=0; j<3; j++)
  246. {
  247. tp=t2[i][j];
  248. t2[i][j]=t3[i][j];
  249. t3[i][j]=t4[i][j];
  250. t4[i][j]=t5[i][j];
  251. t5[i][j]=tp;
  252. }
  253. }
  254. void rotateRight(char t2[][3], char t3[][3], char t4[][3], char t5[][3])
  255. {
  256. char tp;
  257. for(int i=0; i<3; i++)
  258. for(int j=0; j<3; j++)
  259. {
  260. tp=t5[i][j];
  261. t5[i][j]=t4[i][j];
  262. t4[i][j]=t3[i][j];
  263. t3[i][j]=t2[i][j];
  264. t2[i][j]=tp;
  265. }
  266. }
  267. void rotateClockwise(char t1[][3], char t2[][3], char t4[][3], char t6[][3])
  268. {
  269. char tp;
  270. for(int i=0; i<3; i++)
  271. for(int j=0; j<3; j++)
  272. {
  273. tp=t1[j][2-i];
  274. t1[j][2-i]=t2[i][j];
  275. t2[i][j]=t6[2-j][i];
  276. t6[2-j][i]=t4[2-i][2-j];
  277. t4[2-i][2-j]=tp;
  278. }
  279. }
  280. void rotateCounterClockwise(char t1[][3], char t2[][3], char t4[][3], char t6[][3])
  281. {
  282. char tp;
  283. for(int i=0; i<3; i++)
  284. for(int j=0; j<3; j++)
  285. {
  286. tp=t4[2-i][2-j];
  287. t4[2-i][2-j]=t6[2-j][i];
  288. t6[2-j][i]=t2[i][j];
  289. t2[i][j]=t1[j][2-i];
  290. t1[j][2-i]=tp;
  291. }
  292. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement