Advertisement
Guest User

Untitled

a guest
Dec 8th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.48 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct pixel
  5. {
  6. unsigned char r,g,b;
  7. } pixel;
  8.  
  9.  
  10.  
  11. int main()
  12. {
  13. pixel **matrice;
  14. pixel **matrice4;
  15. pixel **matrice5;
  16. int i,j,k,height,width,op;
  17. int start_col,start_line,end_col,end_line;
  18. int height3,width3;
  19. int r4,g4,b4;
  20. int nr_iter, s_r,s_g,s_b;
  21. do
  22. {
  23. scanf ("%d",&op);
  24. switch(op){
  25. case 1:
  26. printf("nr.linii=");
  27. scanf("%d",&height);
  28. printf("nr.coloane=");
  29. scanf("%d",&width);
  30.  
  31. matrice=(pixel**)malloc(height*sizeof(pixel));
  32. for(i=0;i<height;i++)
  33. matrice[i]=(pixel*)malloc(width*sizeof(pixel));
  34.  
  35. for(i=0;i<height;i++)
  36. for(j=0;j<width;j++)
  37. {
  38. scanf("%d %d %d", &matrice[i][j].r,&matrice[i][j].g,&matrice[i][j].b);
  39. }
  40. break;
  41.  
  42. case 2:
  43.  
  44. printf("start_col=");
  45. scanf("%d", &start_col);
  46. printf("start_line=");
  47. scanf("%d", &start_line);
  48. printf("end_col=");
  49. scanf("%d", &end_col);
  50. printf("end_line=");
  51. scanf("%d",&end_line);
  52. for(i=start_line;i<=end_line;i++)
  53. {for(j=start_col;j<=end_col;j++)
  54. printf("%d %d %d ", matrice[i][j].r, matrice[i][j].g,matrice[i][j].b);
  55. printf("\n");
  56. }
  57.  
  58. break;
  59.  
  60. case 3:
  61. { printf("width=");
  62. scanf("%d", &width3);
  63. printf("height=");
  64. scanf("%d",&height3);
  65. if(1<=height&&height<=1024&&1<=width&&width<=1024)
  66. {
  67. if(width3<width&&height3<height)
  68. {
  69. for(i=0;i<width3;i++)
  70. {for(j=0;j<height3;j++)
  71. printf("(%d, %d, %d) ",matrice[i][j].r,matrice[i][j].g,matrice[i][j].b);
  72. printf("\n");
  73. }
  74. }
  75. else if (width3<width&&height3>height)
  76. {
  77. for(i=0;i<height;i++)
  78. {for(j=0;j<width3;j++)
  79. printf("(%d, %d, %d) ",matrice[i][j].r,matrice[i][j].g,matrice[i][j].b);
  80. printf("\n");
  81. }
  82. for(i=height;i<height3;i++)
  83. { for(j=0;j<width3;j++)
  84. printf("(255, 255, 255) ");
  85. printf("\n");
  86. }
  87. }
  88.  
  89. else if(width3>width&&height3<height)
  90. {
  91. for(i=0;i<height;i++)
  92. {
  93. for(j=0;j<width3;j++)
  94. if(j<width)
  95. printf("(%d, %d, %d) ",matrice[i][j].r,matrice[i][j].g,matrice[i][j].b);
  96. else printf("(255, 255, 255) ");
  97. printf("\n");
  98. }
  99. }
  100. else if(width3>width&&height3>height)
  101. {
  102. for(i=0;i<height;i++)
  103. {for(j=0;j<width;j++)
  104. if(j<width)
  105. printf("(%d, %d, %d) ",matrice[i][j].r,matrice[i][j].g,matrice[i][j].b);
  106. else printf("(255, 255, 255) ");
  107. printf("\n");
  108. }
  109. for(i=height;i<height3;i++)
  110. {for(j=0;j<width3;j++)
  111. printf("(255, 255, 255) ");
  112. printf("\n");
  113. }
  114.  
  115.  
  116. }
  117.  
  118. }
  119.  
  120. }
  121. break;
  122.  
  123. case 4:
  124.  
  125. matrice4=(pixel**)malloc(height*sizeof(pixel));
  126. for(i=0;i<height;i++)
  127. matrice4[i]=(pixel*)malloc(width*sizeof(pixel));
  128. printf("start_col=");
  129. scanf("%d",&start_col);
  130. printf("start_line=");
  131. scanf("%d",&start_line);
  132. printf("end_col=");
  133. scanf("%d",&end_col);
  134. printf("end_line=");
  135. scanf("%d",&end_line);
  136. printf("r=");
  137. scanf("%d", &r4);
  138. printf("g=");
  139. scanf("%d",&g4);
  140. printf("b=");
  141. scanf("%d",&b4);
  142.  
  143. for(i=0;i<=end_line;i++)
  144. for(j=0;j<start_col;j++)
  145. {matrice4[i][j].r=matrice[i][j].r;
  146. matrice4[i][j].g=matrice[i][j].g;
  147. matrice4[i][j].b=matrice[i][j].b;
  148. }
  149.  
  150. for(i=start_line;i<=end_line;i++)
  151. for(j=0;j<start_col;j++)
  152. {
  153. matrice4[i][j].r=matrice[i][j].r;
  154. matrice4[i][j].g=matrice[i][j].g;
  155. matrice4[i][j].b=matrice[i][j].b;
  156. }
  157. for(i=start_line;i<=end_line;i++)
  158. for(j=end_col+1;j<width;j++)
  159. {
  160. matrice4[i][j].r=matrice[i][j].r;
  161. matrice4[i][j].g=matrice[i][j].g;
  162. matrice4[i][j].b=matrice[i][j].b;
  163. }
  164.  
  165. for(i=0;i<start_line;i++)
  166. for(j=0;j<width;j++)
  167. {
  168. matrice4[i][j].r=matrice[i][j].r;
  169. matrice4[i][j].g=matrice[i][j].g;
  170. matrice4[i][j].b=matrice[i][j].b;
  171. }
  172.  
  173. for (i=end_line+1;i<height;i++)
  174. for(j=0;j<width;j++)
  175. {
  176. matrice4[i][j].r=matrice[i][j].r;
  177. matrice4[i][j].g=matrice[i][j].g;
  178. matrice4[i][j].b=matrice[i][j].b;
  179. }
  180. for(i=start_line;i<=end_line;i++)
  181. for(j=start_col;j<=end_col;j++)
  182. {
  183. matrice4[i][j].r=r4;
  184. matrice4[i][j].g=g4;
  185. matrice4[i][j].b=b4;
  186. }
  187.  
  188. for(i=0;i<height;i++)
  189. {for(j=0;j<width;j++)
  190. printf("(%d, %d, %d) ", matrice4[i][j].r,matrice4[i][j].g,matrice4[i][j].b);
  191. printf("\n");
  192. }
  193. free(matrice4);
  194. break;
  195.  
  196.  
  197. case 5:
  198. matrice4=(pixel**)malloc(height*sizeof(pixel));
  199. for(i=0;i<height;i++)
  200. matrice4[i]=(pixel*)malloc(width*sizeof(pixel));
  201. printf("nr_iter=");
  202. scanf("%d", &nr_iter);
  203. for(i=1;i<=nr_iter;i++)
  204. {
  205. for(j=1;j<width-1;j++)
  206. {
  207. s_r=s_b=s_g=0;
  208. s_r=matrice[0][j-1].r+matrice[0][j+1].r+matrice[1][j].r;
  209. matrice5[0][j].r=s_r/3;
  210. s_g=matrice[0][j-1].g+matrice[0][j+1].g+matrice[1][j].g;
  211. matrice5[0][j].g=s_g/3;
  212. s_b=matrice[0][j-1].b+matrice[0][j+1].b+matrice[1][j].b;
  213. matrice5[0][j].b=s_b/3;
  214.  
  215. }
  216. for(j=1;j<height-1;j++)
  217. {
  218. s_r=s_b=s_g=0;
  219. s_r=matrice[j-1][width-1].r+matrice[j][width-2].r+matrice[j+1][width-1].r;
  220. matrice5[j][width-1].r=s_r/3;
  221. s_g=matrice[j-1][width-1].g+matrice[j][width-2].g+matrice[j+1][width-1].g;
  222. matrice5[j][width-1].g=s_g/3;
  223. s_b=matrice[j-1][width-1].b+matrice[j][width-2].b+matrice[j+1][width-1].b;
  224. matrice5[j][width-1].b=s_b/3;
  225.  
  226. }
  227.  
  228. for(j=1;j<width-1;j++)
  229. {
  230. s_r=s_b=s_g=0;
  231. s_r=matrice[height-1][j-1].r+matrice[height-1][j+1].r+matrice[height-2][j].r;
  232. matrice5[height-1][j].r=s_r/3;
  233. s_g=matrice[height-1][j-1].g+matrice[height-1][j+1].g+matrice[height-2][j].g;
  234. matrice5[height-1][j].g=s_g/3;
  235. s_b=matrice[height-1][j-1].b+matrice[height-1][j+1].b+matrice[height-2][j].b;
  236. matrice5[height-1][j].b=s_b/3;
  237. }
  238. for(j=1;j<height-1;j++)
  239. {
  240. s_r=s_b=s_g=0;
  241. s_r=matrice[j-1][0].r+matrice[j+1][0].r+matrice[j][1].r;
  242. matrice5[j][0].r=s_r/3;
  243. s_g=matrice[j-1][0].g+matrice[j+1][0].g+matrice[j][1].g;
  244. matrice5[j][0].g=s_g/3;
  245. s_b=matrice[j-1][0].b+matrice[j+1][0].b+matrice[j][1].b;
  246. matrice5[j][0].b=s_b/3;
  247. }
  248. matrice5[0][0].r=(matrice[0][1].r+matrice[1][0].r)/2;
  249. matrice5[0][0].g=(matrice[0][1].g+matrice[1][0].g)/2;
  250. matrice5[0][0].b=(matrice[0][1].b+matrice[1][0].b)/2;
  251.  
  252. matrice5[0][width-1].r=(matrice[0][width-2].r+matrice[1][width-1].r)/2;
  253. matrice5[0][width-1].g=(matrice[0][width-2].g+matrice[1][width-1].g)/2;
  254. matrice5[0][width-1].b=(matrice[0][width-2].b+matrice[1][width-1].b)/2;
  255.  
  256. matrice5[height-1][width-1].r=(matrice[height-1][width-2].r+matrice[height-2][width-1].r)/2;
  257. matrice5[height-1][width-1].g=(matrice[height-1][width-2].g+matrice[height-2][width-1].g)/2;
  258. matrice5[height-1][width-1].b=(matrice[height-1][width-2].b+matrice[height-2][width-1].b)/2;
  259.  
  260. matrice5[height-1][0].r=(matrice[height-1][1].r+matrice[height-2][0].r)/2;
  261. matrice5[height-1][0].g=(matrice[height-1][1].g+matrice[height-2][0].g)/2;
  262. matrice5[height-1][0].b=(matrice[height-1][1].b+matrice[height-2][0].b)/2;
  263.  
  264. for(j=1;j<height-2;j++)
  265. for(k=1;k<width-2;k++)
  266. {
  267. 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;
  268. 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;
  269. 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;
  270.  
  271. }
  272. }
  273. for(i=0;i<height;i++)
  274. {for(j=0;j<width;j++)
  275. printf("(%d, %d, %d) ", matrice5[i][j].r, matrice5[i][j].g, matrice5[i][j].b);
  276. printf("\n");
  277. }
  278. break;
  279.  
  280. default: op=0;
  281. }
  282. }while(op);
  283. return 0;
  284. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement