Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.38 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct
  4. {unsigned char r,g,b;
  5. }pixel;
  6. int main()
  7. {
  8. pixel **matrice;
  9. int op,height,width,i,j;
  10.  
  11. scanf("%d", &op);
  12. switch (op){
  13. case 0:
  14. exit(0);
  15.  
  16. case 1:
  17. scanf("%d",&height);
  18. scanf("%d",&width);
  19. if(1<=height&&height<=1024&&1<=width&&width<=1024)
  20. {pixel **matrice=(pixel**)malloc(height*sizeof(pixel*));
  21. for(i=0;i<height;i++)
  22. matrice[i]=(pixel*)malloc(width*sizeof(pixel));
  23.  
  24. for(i=0;i<height;i++)
  25. for(j=0;j<width;j++)
  26. scanf("%hhu%hhu%hhu", &matrice[i][j].r,&matrice[i][j].g,&matrice[i][j].b);
  27. }
  28. else {fprintf(stderr, "%d\n", EINVAL);
  29. exit(EXIT_FAILURE);
  30. }
  31. break;
  32. case 2:
  33.  
  34. scanf("%d", &start_col);
  35. scanf("%d", &start_line);
  36. scanf("%d", &end_col);
  37. scanf("%d", &end_line);
  38.  
  39. if(0<=start_line && start_line<=end_line && end_line<height && 0<=start_col && start_col<=end_col && end_col<width)
  40. {
  41. height2=end_line-start_line+1;
  42. width2=end_col-start_col+1;
  43. matrice=(pixel**)realloc(matrice,height2*sizeof(pixel));
  44. for(i=0;i<height2;i++)
  45. matrice[i]=(pixel*)realloc(matrice,width2*sizeof(pixel));
  46.  
  47. height0=start_line;
  48. height=end_line+1;
  49. width0=start_col;
  50. width=end_col+1;
  51. }
  52. else
  53. {fprintf(stderr, "%d\n", EINVAL);
  54. exit(EXIT_FAILURE);
  55. }
  56. break;
  57.  
  58. case 3:
  59. scanf("%d",&width3);
  60. scanf("%d",&height3);
  61.  
  62. if(1<=height3 && height3<=1024 && 1<=width3 && width3<=1024)
  63. {
  64. matrice=(pixel**)realloc(matrice,height3*sizeof(pixel));
  65. for(i=0;i<height3;i++)
  66. matrice[i]=(pixel*)realloc(matrice,width3*sizeof(pixel));
  67.  
  68.  
  69. if (width3<width && height3>height)
  70. {
  71. for(i=height;i<height3;i++)
  72. for(j=0;j<width3;j++)
  73. {matrice[i][j].r=255;
  74. matrice[i][j].g=255;
  75. matrice[i][j].b=255;
  76. }
  77.  
  78. }
  79.  
  80. else if(width3>width && height3<height)
  81. {
  82. for(i=0;i<height3;i++)
  83. for(j=width;j<width3;j++)
  84. {matrice[i][j].r=255;
  85. matrice[i][j].g=255;
  86. matrice[i][j].b=255;
  87. }
  88. }
  89.  
  90. else if(width3<width && height3>height)
  91. {
  92. for(i=height;i<height3;i++)
  93. for(j=width;j<width3;j++)
  94. {matrice[i][j].r=255;
  95. matrice[i][j].g=255;
  96. matrice[i][j].b=255;
  97. }
  98. }
  99.  
  100. height0=0;
  101. width0=0;
  102. height=height3+1;
  103. width=width3+1;
  104. }
  105. else
  106. {fprintf(stderr, "%d\n", EINVAL);
  107. exit(EXIT_FAILURE);
  108. }
  109. break;
  110.  
  111. case 2:
  112.  
  113. scanf("%d", &start_col);
  114. scanf("%d", &start_line);
  115. scanf("%d", &end_col);
  116. scanf("%d", &end_line);
  117.  
  118. if(0<=start_line && start_line<=end_line && end_line<height && 0<=start_col && start_col<=end_col && end_col<width)
  119. {
  120. height2=end_line-start_line+1;
  121. width2=end_col-start_col+1;
  122. matrice=(pixel**)realloc(matrice,height2*sizeof(pixel));
  123. for(i=0;i<height2;i++)
  124. matrice[i]=(pixel*)realloc(matrice,width2*sizeof(pixel));
  125.  
  126. height0=start_line;
  127. height=end_line+1;
  128. width0=start_col;
  129. width=end_col+1;
  130. }
  131. else
  132. {fprintf(stderr, "%d\n", EINVAL);
  133. exit(EXIT_FAILURE);
  134. }
  135. break;
  136.  
  137. case 3:
  138. scanf("%d",&width3);
  139. scanf("%d",&height3);
  140.  
  141. if(1<=height3 && height3<=1024 && 1<=width3 && width3<=1024)
  142. {
  143. matrice=(pixel**)realloc(matrice,height3*sizeof(pixel));
  144. for(i=0;i<height3;i++)
  145. matrice[i]=(pixel*)realloc(matrice,width3*sizeof(pixel));
  146.  
  147.  
  148. if (width3<width && height3>height)
  149. {
  150. for(i=height;i<height3;i++)
  151. for(j=0;j<width3;j++)
  152. {matrice[i][j].r=255;
  153. matrice[i][j].g=255;
  154. matrice[i][j].b=255;
  155. }
  156.  
  157. }
  158.  
  159. else if(width3>width && height3<height)
  160. {
  161. for(i=0;i<height3;i++)
  162. for(j=width;j<width3;j++)
  163. {matrice[i][j].r=255;
  164. matrice[i][j].g=255;
  165. matrice[i][j].b=255;
  166. }
  167. }
  168.  
  169. else if(width3<width && height3>height)
  170. {
  171. for(i=height;i<height3;i++)
  172. for(j=width;j<width3;j++)
  173. {matrice[i][j].r=255;
  174. matrice[i][j].g=255;
  175. matrice[i][j].b=255;
  176. }
  177. }
  178.  
  179. height0=0;
  180. width0=0;
  181. height=height3+1;
  182. width=width3+1;
  183. }
  184. else
  185. {fprintf(stderr, "%d\n", EINVAL);
  186. exit(EXIT_FAILURE);
  187. }
  188. break;
  189. case 2:
  190.  
  191. scanf("%d", &start_col);
  192. scanf("%d", &start_line);
  193. scanf("%d", &end_col);
  194. scanf("%d", &end_line);
  195.  
  196. if(0<=start_line && start_line<=end_line && end_line<height && 0<=start_col && start_col<=end_col && end_col<width)
  197. {
  198. height2=end_line-start_line+1;
  199. width2=end_col-start_col+1;
  200. matrice=(pixel**)realloc(matrice,height2*sizeof(pixel));
  201. for(i=0;i<height2;i++)
  202. matrice[i]=(pixel*)realloc(matrice,width2*sizeof(pixel));
  203.  
  204. height0=start_line;
  205. height=end_line+1;
  206. width0=start_col;
  207. width=end_col+1;
  208. }
  209. else
  210. {fprintf(stderr, "%d\n", EINVAL);
  211. exit(EXIT_FAILURE);
  212. }
  213. break;
  214.  
  215. case 3:
  216. scanf("%d",&width3);
  217. scanf("%d",&height3);
  218.  
  219. if(1<=height3 && height3<=1024 && 1<=width3 && width3<=1024)
  220. {
  221. matrice=(pixel**)realloc(matrice,height3*sizeof(pixel));
  222. for(i=0;i<height3;i++)
  223. matrice[i]=(pixel*)realloc(matrice,width3*sizeof(pixel));
  224.  
  225.  
  226. if (width3<width && height3>height)
  227. {
  228. for(i=height;i<height3;i++)
  229. for(j=0;j<width3;j++)
  230. {matrice[i][j].r=255;
  231. matrice[i][j].g=255;
  232. matrice[i][j].b=255;
  233. }
  234.  
  235. }
  236.  
  237. else if(width3>width && height3<height)
  238. {
  239. for(i=0;i<height3;i++)
  240. for(j=width;j<width3;j++)
  241. {matrice[i][j].r=255;
  242. matrice[i][j].g=255;
  243. matrice[i][j].b=255;
  244. }
  245. }
  246.  
  247. else if(width3<width && height3>height)
  248. {
  249. for(i=height;i<height3;i++)
  250. for(j=width;j<width3;j++)
  251. {matrice[i][j].r=255;
  252. matrice[i][j].g=255;
  253. matrice[i][j].b=255;
  254. }
  255. }
  256.  
  257. height0=0;
  258. width0=0;
  259. height=height3+1;
  260. width=width3+1;
  261. }
  262. else
  263. {fprintf(stderr, "%d\n", EINVAL);
  264. exit(EXIT_FAILURE);
  265. }
  266. break;
  267.  
  268. case 4:
  269.  
  270.  
  271.  
  272. scanf("%d",&start_col);
  273. scanf("%d",&start_line);
  274. scanf("%d",&end_col);
  275. scanf("%d",&end_line);
  276. scanf("%d", &r4);
  277. scanf("%d",&g4);
  278. scanf("%d",&b4);
  279.  
  280.  
  281. for(i=start_line;i<=end_line;i++)
  282. for(j=start_col;j<=end_col;j++)
  283. { matrice[i][j].r=r4;
  284. matrice[i][j].g=g4;
  285. matrice[i][j].b=b4;
  286. }
  287.  
  288. break;
  289. case 5:
  290. matrice5=(pixel**)malloc(height*sizeof(pixel));
  291. for(i=0;i<height;i++)
  292. matrice5 [i]=(pixel*)malloc(width*sizeof(pixel));
  293.  
  294. for(i=0;i<height;i++)
  295. for(j=0;j<width;j++)
  296. {matrice5[i][j].r=matrice[i][j].r;
  297. matrice5[i][j].b=matrice[i][j].b;
  298. matrice5[i][j].g=matrice[i][j].g;
  299. }
  300. printf("nr_iter=");
  301. scanf("%d", &nr_iter);
  302. for(i=1;i<=nr_iter;i++)
  303. {
  304. for(j=1;j<width-1;j++)
  305. {
  306. s_r=s_b=s_g=0;
  307. s_r=matrice[0][j-1].r+matrice[0][j+1].r+matrice[1][j].r;
  308. matrice5[0][j].r=s_r/3;
  309. s_g=matrice[0][j-1].g+matrice[0][j+1].g+matrice[1][j].g;
  310. matrice5[0][j].g=s_g/3;
  311. s_b=matrice[0][j-1].b+matrice[0][j+1].b+matrice[1][j].b;
  312. matrice5[0][j].b=s_b/3;
  313.  
  314. }
  315. for(j=1;j<height-1;j++)
  316. {
  317. s_r=s_b=s_g=0;
  318. s_r=matrice[j-1][width-1].r+matrice[j][width-2].r+matrice[j+1][width-1].r;
  319. matrice5[j][width-1].r=s_r/3;
  320. s_g=matrice[j-1][width-1].g+matrice[j][width-2].g+matrice[j+1][width-1].g;
  321. matrice5[j][width-1].g=s_g/3;
  322. s_b=matrice[j-1][width-1].b+matrice[j][width-2].b+matrice[j+1][width-1].b;
  323. matrice5[j][width-1].b=s_b/3;
  324.  
  325. }
  326.  
  327. for(j=1;j<width-1;j++)
  328. {
  329. s_r=s_b=s_g=0;
  330. s_r=matrice[height-1][j-1].r+matrice[height-1][j+1].r+matrice[height-2][j].r;
  331. matrice5[height-1][j].r=s_r/3;
  332. s_g=matrice[height-1][j-1].g+matrice[height-1][j+1].g+matrice[height-2][j].g;
  333. matrice5[height-1][j].g=s_g/3;
  334. s_b=matrice[height-1][j-1].b+matrice[height-1][j+1].b+matrice[height-2][j].b;
  335. matrice5[height-1][j].b=s_b/3;
  336. }
  337. for(j=1;j<height-1;j++)
  338. {
  339. s_r=s_b=s_g=0;
  340. s_r=matrice[j-1][0].r+matrice[j+1][0].r+matrice[j][1].r;
  341. matrice5[j][0].r=s_r/3;
  342. s_g=matrice[j-1][0].g+matrice[j+1][0].g+matrice[j][1].g;
  343. matrice5[j][0].g=s_g/3;
  344. s_b=matrice[j-1][0].b+matrice[j+1][0].b+matrice[j][1].b;
  345. matrice5[j][0].b=s_b/3;
  346. }
  347. matrice5[0][0].r=(matrice[0][1].r+matrice[1][0].r)/2;
  348. matrice5[0][0].g=(matrice[0][1].g+matrice[1][0].g)/2;
  349. matrice5[0][0].b=(matrice[0][1].b+matrice[1][0].b)/2;
  350.  
  351. matrice5[0][width-1].r=(matrice[0][width-2].r+matrice[1][width-1].r)/2;
  352. matrice5[0][width-1].g=(matrice[0][width-2].g+matrice[1][width-1].g)/2;
  353. matrice5[0][width-1].b=(matrice[0][width-2].b+matrice[1][width-1].b)/2;
  354.  
  355. matrice5[height-1][width-1].r=(matrice[height-1][width-2].r+matrice[height-2][width-1].r)/2;
  356. matrice5[height-1][width-1].g=(matrice[height-1][width-2].g+matrice[height-2][width-1].g)/2;
  357. matrice5[height-1][width-1].b=(matrice[height-1][width-2].b+matrice[height-2][width-1].b)/2;
  358.  
  359. matrice5[height-1][0].r=(matrice[height-1][1].r+matrice[height-2][0].r)/2;
  360. matrice5[height-1][0].g=(matrice[height-1][1].g+matrice[height-2][0].g)/2;
  361. matrice5[height-1][0].b=(matrice[height-1][1].b+matrice[height-2][0].b)/2;
  362.  
  363. for(j=1;j<height-2;j++)
  364. for(k=1;k<width-2;k++)
  365. {
  366. matrice5[j][k].r=(matrice[j-1][k].r+matrice[j+1][k].r+matrice[j][k-1].r+matrice[j][k+1].r)/4;
  367. matrice5[j][k].g=(matrice[j-1][k].g+matrice[j+1][k].g+matrice[j][k-1].g+matrice[j][k+1].g)/4;
  368. matrice5[j][k].b=(matrice[j-1][k].b+matrice[j+1][k].b+matrice[j][k-1].b+matrice[j][k+1].b)/4;
  369.  
  370. }
  371. }
  372.  
  373. for(i=0;i<height;i++)
  374. for(j=0;j<width;j++)
  375. {matrice[i][j].r=matrice5[i][j].r;
  376. matrice[i][j].g=matrice[i][j].g;
  377. matrice[i][j].b=matrice[i][j].b;
  378. }
  379.  
  380.  
  381. break;
  382.  
  383. case 6:
  384. scanf("%d",&num_rot);
  385.  
  386.  
  387. case 8:
  388. for(i=0;i<height;i++)
  389. {for(j=0;j<width;j++)
  390. printf("%hhu %hhu %hhu",matrice[i][j].r,matrice[i][j].g,matrice[i][j].b);
  391. printf("\n");
  392. }
  393. }
  394. return 0;
  395. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement