Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.92 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 10
  4.  
  5. char** trimPredmet(char mat[][6], int* rezN, int* rezM);
  6. char** rotate90(char** predmet, int n, int m);
  7. int locate(char** novamatrica, int n, int m, char** predmet, int pN, int pM);
  8. char** r90(char** predmet, int n, int m);
  9. char** r180(char** predmet, int n, int m);
  10. char** r270(char** predmet, int n, int m);
  11.  
  12. int main()
  13. {
  14. int rezN=0,rezM=0,i,j,pogodak=0,pN,pM,koliko=0,n=0,m=0,nema=0;
  15. int opasnipredmeti[10]={};
  16.  
  17. char mat[6][6]={{}},**novamatrica,**predmet;
  18.  
  19. scanf("%d %d",&n,&m);
  20.  
  21. novamatrica=(char**)malloc(n*sizeof(char*));
  22. for(i=0;i<n;i++)
  23. *(novamatrica+i)=(char*)malloc(m*sizeof(char));
  24.  
  25.  
  26. for(i=0;i<n;i++){
  27. for(j=0;j<m;j++){
  28. scanf(" %c",&novamatrica[i][j]);
  29. }
  30. }
  31. // for(i=0;i<n;i++){
  32. // for(j=0;j<m;j++){
  33. // printf("%c",novamatrica[i][j]);
  34. // }
  35. // printf("\n");
  36. // }
  37.  
  38. pN=n;
  39. pM=m;
  40.  
  41. scanf("%d",&koliko);
  42.  
  43. for(i=0;i<=koliko;i++){
  44. predmet=trimPredmet(mat,&rezN,&rezM);
  45.  
  46. pogodak=locate(novamatrica,pN,pM,predmet,rezN,rezM);
  47.  
  48. if(pogodak==1){
  49. opasnipredmeti[i]=1;
  50. break;
  51. }
  52. else nema++;
  53.  
  54. predmet=r90(predmet,rezN,rezM);
  55.  
  56. pogodak=locate(novamatrica,pN,pM,predmet,rezN,rezN);
  57.  
  58. if(pogodak==1){
  59. opasnipredmeti[i]=1;
  60. break;
  61. }
  62. else nema++;
  63.  
  64. predmet=r180(predmet,rezN,rezM);
  65.  
  66. pogodak=locate(novamatrica,pN,pM,predmet,rezN,rezN);
  67.  
  68. if(pogodak==1){
  69. opasnipredmeti[i]=1;
  70. break;
  71. }
  72. else nema++;
  73.  
  74. predmet=r270(predmet,rezN,rezM);
  75. pogodak=locate(novamatrica,pN,pM,predmet,rezN,rezN);
  76.  
  77. if(pogodak==1){
  78. opasnipredmeti[i]=1;
  79. break;
  80. }
  81. else nema++;
  82.  
  83. }
  84. if(nema*koliko==4*koliko){
  85. printf("Mozete proci.");
  86. }
  87. else
  88. printf("Opasni predmeti:");
  89. for(i=0;i<10;i++){
  90. if(opasnipredmeti[i]!=0)
  91. printf(" %d",i+1);
  92. }
  93. printf("\n");
  94. printf("VODI GA!");
  95.  
  96.  
  97. return 0;
  98. }
  99.  
  100.  
  101. char** trimPredmet(char mat[][6], int* rezN, int* rezM){
  102. int i,j,br=0,dole=0,gore=0,brLevo=0,n=0,m=0;
  103. char **zamjena;
  104. //*zamjena;
  105. char nesto[6][6]={{}};
  106. n=6;
  107. m=6;
  108.  
  109. for(i=0;i<n;i++){
  110. for(j=0;j<m;j++){
  111. scanf(" %c",&mat[i][j]);
  112. nesto[i][j]=mat[i][j];
  113. }
  114. }
  115.  
  116. for(j=0;j<m;j++){
  117. br=0;
  118. for(i=0;i<n;i++){
  119. if(mat[i][j]=='.')
  120. br++;
  121. if(br==n){
  122. for(i=0;i<n;i++){
  123. if(mat[i][j+1]!='.'){
  124. brLevo++;
  125. }
  126. }
  127. if(brLevo>=1){
  128.  
  129. for(i=0;i<n;i++){
  130. mat[i][j]=mat[i][j+1];
  131. nesto[i][j]=mat[i][j];
  132. }
  133.  
  134. }
  135. brLevo=br=0;
  136. }
  137. }}
  138.  
  139.  
  140. br=0;
  141.  
  142. for(j=0;j<m;j++){
  143. br=0;
  144. for(i=0;i<n;i++){
  145. if(mat[i][j]=='.')
  146. br++;
  147. if(br==n){
  148. for(i=0;i<n;i++){
  149. mat[i][j]=0;
  150. }
  151.  
  152.  
  153. br=0;
  154. }
  155. }}
  156.  
  157. i=br=0;
  158. for(j=0;j<m;j++){
  159. if(mat[i][j]!=0){
  160. br++;
  161. }
  162. if(br>=1){
  163. gore=br;
  164. }
  165. }
  166. j=br=0;
  167. for(i=0;i<n;i++){
  168. if(mat[i][j]!=0){
  169. br++;
  170. }
  171. if(br>=1){
  172. dole=br;
  173. }
  174. }
  175. *rezN=dole;
  176. *rezM=gore;
  177.  
  178.  
  179. zamjena=(char**)malloc(dole*sizeof(char*));
  180. for(i=0;i<dole;i++)
  181. *(zamjena+i)=(char*)malloc(gore*sizeof(char));
  182.  
  183.  
  184.  
  185. for(i=0;i<m;i++){
  186. for(j=0;j<n;j++){
  187. // zamjena=mat[i][j];
  188. zamjena[i][j]=mat[i][j];
  189. nesto[i][j]=mat[i][j];
  190. }
  191. }
  192.  
  193. return zamjena;
  194. }
  195.  
  196.  
  197. char** r90(char** predmet, int n, int m){
  198. char **zamjena;
  199. char nesto[6][6]={{}};
  200. int i,j;
  201.  
  202.  
  203. zamjena=(char**)malloc(n*sizeof(char*));
  204. for(i=0;i<n;i++)
  205. *(zamjena+i)=(char*)malloc(m*sizeof(char));
  206.  
  207. for(i=0;i<m;i++){
  208. for(j=0;j<n;j++){
  209. zamjena[i][j]=predmet[j][i];
  210. if(predmet[j][i]=='-')
  211. zamjena[i][j]='|';
  212. else if(predmet[j][i]=='|')
  213. zamjena[i][j]='-';
  214.  
  215.  
  216.  
  217. }
  218. }
  219.  
  220. return zamjena;
  221. }
  222.  
  223.  
  224. char** r180(char** predmet, int n, int m){
  225. char **zamjena;
  226. char nesto[6][6]={{}};
  227. int i,j,k,l;
  228.  
  229.  
  230. zamjena=(char**)malloc(n*sizeof(char*));
  231. for(i=0;i<n;i++)
  232. *(zamjena+i)=(char*)malloc(m*sizeof(char));
  233.  
  234. for(i=0,l=n-1;i<n,l>=0;i++,l--){
  235. for(j=0,k=m-1;j<m,k>=0;j++,k--){
  236. zamjena[i][j]=predmet[k][l];
  237. nesto[i][j]=predmet[k][l];
  238. if(predmet[k][l]=='-')
  239. zamjena[i][j]='|';
  240. else if(predmet[k][l]=='|')
  241. zamjena[i][j]='-';
  242.  
  243.  
  244. }
  245. }
  246.  
  247.  
  248.  
  249. return zamjena;
  250. }
  251.  
  252.  
  253. char** r270(char** predmet, int n, int m){
  254. char **zamjena;
  255. char nesto[6][6]={{}};
  256. int i,j,l,k;
  257.  
  258.  
  259. zamjena=(char**)malloc(m*sizeof(char*));
  260. for(i=0;i<m;i++)
  261. *(zamjena+i)=(char*)malloc(n*sizeof(char));
  262.  
  263. for(i=0,l=0;i<m,l<m;i++,l++){
  264. for(j=0,k=0;j<n,k<n;j++,k++){
  265. zamjena[i][j]=predmet[k][l];
  266. nesto[i][j]=predmet[k][l];
  267. if(predmet[k][l]=='-')
  268. zamjena[i][j]='|';
  269. else if(predmet[k][l]=='|')
  270. zamjena[i][j]='-';
  271.  
  272.  
  273. }
  274. }
  275.  
  276. return zamjena;
  277.  
  278. }
  279.  
  280.  
  281. int locate(char** novamatrica, int n, int m, char** predmet, int pN, int pM){
  282.  
  283. int i=0,j=0,k=0,l=0,br=0,predmetbr=0,to=0;
  284.  
  285. char pp[10][10]={{}},mm[10][10]={{}};
  286.  
  287. for(i=0;i<n;i++){
  288. for(j=0;j<m;j++){
  289. pp[i][j]=novamatrica[i][j];
  290. }}
  291.  
  292. for(i=0;i<pN;i++){
  293. for(j=0;j<pM;j++){
  294. mm[i][j]=predmet[i][j];
  295. }}
  296.  
  297.  
  298. for(i=0;i<n;i++){
  299. for(j=0;j<m;j++){
  300. br=predmetbr=0;
  301. for(k=0;k<pN;k++){
  302. for(l=0;l<pM;l++){
  303. if(predmet[i][j]!='.'){
  304. br++;
  305. if(novamatrica[i+k][j+l]==predmet[k][l]){
  306. predmetbr++;
  307. }
  308. }
  309. }
  310. }
  311. }
  312. if(br==predmetbr)
  313. to++;
  314.  
  315. }
  316.  
  317. if(predmetbr==to)
  318. return 1;
  319. else return 0;
  320.  
  321.  
  322. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement