Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct
- {unsigned char r,g,b;
- }pixel;
- int main()
- {
- pixel **matrice;
- int op,height,width,i,j;
- scanf("%d", &op);
- switch (op){
- case 0:
- exit(0);
- case 1:
- scanf("%d",&height);
- scanf("%d",&width);
- if(1<=height&&height<=1024&&1<=width&&width<=1024)
- {pixel **matrice=(pixel**)malloc(height*sizeof(pixel*));
- for(i=0;i<height;i++)
- matrice[i]=(pixel*)malloc(width*sizeof(pixel));
- for(i=0;i<height;i++)
- for(j=0;j<width;j++)
- scanf("%hhu%hhu%hhu", &matrice[i][j].r,&matrice[i][j].g,&matrice[i][j].b);
- }
- else {fprintf(stderr, "%d\n", EINVAL);
- exit(EXIT_FAILURE);
- }
- break;
- case 2:
- scanf("%d", &start_col);
- scanf("%d", &start_line);
- scanf("%d", &end_col);
- scanf("%d", &end_line);
- if(0<=start_line && start_line<=end_line && end_line<height && 0<=start_col && start_col<=end_col && end_col<width)
- {
- height2=end_line-start_line+1;
- width2=end_col-start_col+1;
- matrice=(pixel**)realloc(matrice,height2*sizeof(pixel));
- for(i=0;i<height2;i++)
- matrice[i]=(pixel*)realloc(matrice,width2*sizeof(pixel));
- height0=start_line;
- height=end_line+1;
- width0=start_col;
- width=end_col+1;
- }
- else
- {fprintf(stderr, "%d\n", EINVAL);
- exit(EXIT_FAILURE);
- }
- break;
- case 3:
- scanf("%d",&width3);
- scanf("%d",&height3);
- if(1<=height3 && height3<=1024 && 1<=width3 && width3<=1024)
- {
- matrice=(pixel**)realloc(matrice,height3*sizeof(pixel));
- for(i=0;i<height3;i++)
- matrice[i]=(pixel*)realloc(matrice,width3*sizeof(pixel));
- if (width3<width && height3>height)
- {
- for(i=height;i<height3;i++)
- for(j=0;j<width3;j++)
- {matrice[i][j].r=255;
- matrice[i][j].g=255;
- matrice[i][j].b=255;
- }
- }
- else if(width3>width && height3<height)
- {
- for(i=0;i<height3;i++)
- for(j=width;j<width3;j++)
- {matrice[i][j].r=255;
- matrice[i][j].g=255;
- matrice[i][j].b=255;
- }
- }
- else if(width3<width && height3>height)
- {
- for(i=height;i<height3;i++)
- for(j=width;j<width3;j++)
- {matrice[i][j].r=255;
- matrice[i][j].g=255;
- matrice[i][j].b=255;
- }
- }
- height0=0;
- width0=0;
- height=height3+1;
- width=width3+1;
- }
- else
- {fprintf(stderr, "%d\n", EINVAL);
- exit(EXIT_FAILURE);
- }
- break;
- case 2:
- scanf("%d", &start_col);
- scanf("%d", &start_line);
- scanf("%d", &end_col);
- scanf("%d", &end_line);
- if(0<=start_line && start_line<=end_line && end_line<height && 0<=start_col && start_col<=end_col && end_col<width)
- {
- height2=end_line-start_line+1;
- width2=end_col-start_col+1;
- matrice=(pixel**)realloc(matrice,height2*sizeof(pixel));
- for(i=0;i<height2;i++)
- matrice[i]=(pixel*)realloc(matrice,width2*sizeof(pixel));
- height0=start_line;
- height=end_line+1;
- width0=start_col;
- width=end_col+1;
- }
- else
- {fprintf(stderr, "%d\n", EINVAL);
- exit(EXIT_FAILURE);
- }
- break;
- case 3:
- scanf("%d",&width3);
- scanf("%d",&height3);
- if(1<=height3 && height3<=1024 && 1<=width3 && width3<=1024)
- {
- matrice=(pixel**)realloc(matrice,height3*sizeof(pixel));
- for(i=0;i<height3;i++)
- matrice[i]=(pixel*)realloc(matrice,width3*sizeof(pixel));
- if (width3<width && height3>height)
- {
- for(i=height;i<height3;i++)
- for(j=0;j<width3;j++)
- {matrice[i][j].r=255;
- matrice[i][j].g=255;
- matrice[i][j].b=255;
- }
- }
- else if(width3>width && height3<height)
- {
- for(i=0;i<height3;i++)
- for(j=width;j<width3;j++)
- {matrice[i][j].r=255;
- matrice[i][j].g=255;
- matrice[i][j].b=255;
- }
- }
- else if(width3<width && height3>height)
- {
- for(i=height;i<height3;i++)
- for(j=width;j<width3;j++)
- {matrice[i][j].r=255;
- matrice[i][j].g=255;
- matrice[i][j].b=255;
- }
- }
- height0=0;
- width0=0;
- height=height3+1;
- width=width3+1;
- }
- else
- {fprintf(stderr, "%d\n", EINVAL);
- exit(EXIT_FAILURE);
- }
- break;
- case 2:
- scanf("%d", &start_col);
- scanf("%d", &start_line);
- scanf("%d", &end_col);
- scanf("%d", &end_line);
- if(0<=start_line && start_line<=end_line && end_line<height && 0<=start_col && start_col<=end_col && end_col<width)
- {
- height2=end_line-start_line+1;
- width2=end_col-start_col+1;
- matrice=(pixel**)realloc(matrice,height2*sizeof(pixel));
- for(i=0;i<height2;i++)
- matrice[i]=(pixel*)realloc(matrice,width2*sizeof(pixel));
- height0=start_line;
- height=end_line+1;
- width0=start_col;
- width=end_col+1;
- }
- else
- {fprintf(stderr, "%d\n", EINVAL);
- exit(EXIT_FAILURE);
- }
- break;
- case 3:
- scanf("%d",&width3);
- scanf("%d",&height3);
- if(1<=height3 && height3<=1024 && 1<=width3 && width3<=1024)
- {
- matrice=(pixel**)realloc(matrice,height3*sizeof(pixel));
- for(i=0;i<height3;i++)
- matrice[i]=(pixel*)realloc(matrice,width3*sizeof(pixel));
- if (width3<width && height3>height)
- {
- for(i=height;i<height3;i++)
- for(j=0;j<width3;j++)
- {matrice[i][j].r=255;
- matrice[i][j].g=255;
- matrice[i][j].b=255;
- }
- }
- else if(width3>width && height3<height)
- {
- for(i=0;i<height3;i++)
- for(j=width;j<width3;j++)
- {matrice[i][j].r=255;
- matrice[i][j].g=255;
- matrice[i][j].b=255;
- }
- }
- else if(width3<width && height3>height)
- {
- for(i=height;i<height3;i++)
- for(j=width;j<width3;j++)
- {matrice[i][j].r=255;
- matrice[i][j].g=255;
- matrice[i][j].b=255;
- }
- }
- height0=0;
- width0=0;
- height=height3+1;
- width=width3+1;
- }
- else
- {fprintf(stderr, "%d\n", EINVAL);
- exit(EXIT_FAILURE);
- }
- break;
- case 4:
- scanf("%d",&start_col);
- scanf("%d",&start_line);
- scanf("%d",&end_col);
- scanf("%d",&end_line);
- scanf("%d", &r4);
- scanf("%d",&g4);
- scanf("%d",&b4);
- for(i=start_line;i<=end_line;i++)
- for(j=start_col;j<=end_col;j++)
- { matrice[i][j].r=r4;
- matrice[i][j].g=g4;
- matrice[i][j].b=b4;
- }
- break;
- case 5:
- matrice5=(pixel**)malloc(height*sizeof(pixel));
- for(i=0;i<height;i++)
- matrice5 [i]=(pixel*)malloc(width*sizeof(pixel));
- for(i=0;i<height;i++)
- for(j=0;j<width;j++)
- {matrice5[i][j].r=matrice[i][j].r;
- matrice5[i][j].b=matrice[i][j].b;
- matrice5[i][j].g=matrice[i][j].g;
- }
- printf("nr_iter=");
- scanf("%d", &nr_iter);
- for(i=1;i<=nr_iter;i++)
- {
- for(j=1;j<width-1;j++)
- {
- s_r=s_b=s_g=0;
- s_r=matrice[0][j-1].r+matrice[0][j+1].r+matrice[1][j].r;
- matrice5[0][j].r=s_r/3;
- s_g=matrice[0][j-1].g+matrice[0][j+1].g+matrice[1][j].g;
- matrice5[0][j].g=s_g/3;
- s_b=matrice[0][j-1].b+matrice[0][j+1].b+matrice[1][j].b;
- matrice5[0][j].b=s_b/3;
- }
- for(j=1;j<height-1;j++)
- {
- s_r=s_b=s_g=0;
- s_r=matrice[j-1][width-1].r+matrice[j][width-2].r+matrice[j+1][width-1].r;
- matrice5[j][width-1].r=s_r/3;
- s_g=matrice[j-1][width-1].g+matrice[j][width-2].g+matrice[j+1][width-1].g;
- matrice5[j][width-1].g=s_g/3;
- s_b=matrice[j-1][width-1].b+matrice[j][width-2].b+matrice[j+1][width-1].b;
- matrice5[j][width-1].b=s_b/3;
- }
- for(j=1;j<width-1;j++)
- {
- s_r=s_b=s_g=0;
- s_r=matrice[height-1][j-1].r+matrice[height-1][j+1].r+matrice[height-2][j].r;
- matrice5[height-1][j].r=s_r/3;
- s_g=matrice[height-1][j-1].g+matrice[height-1][j+1].g+matrice[height-2][j].g;
- matrice5[height-1][j].g=s_g/3;
- s_b=matrice[height-1][j-1].b+matrice[height-1][j+1].b+matrice[height-2][j].b;
- matrice5[height-1][j].b=s_b/3;
- }
- for(j=1;j<height-1;j++)
- {
- s_r=s_b=s_g=0;
- s_r=matrice[j-1][0].r+matrice[j+1][0].r+matrice[j][1].r;
- matrice5[j][0].r=s_r/3;
- s_g=matrice[j-1][0].g+matrice[j+1][0].g+matrice[j][1].g;
- matrice5[j][0].g=s_g/3;
- s_b=matrice[j-1][0].b+matrice[j+1][0].b+matrice[j][1].b;
- matrice5[j][0].b=s_b/3;
- }
- matrice5[0][0].r=(matrice[0][1].r+matrice[1][0].r)/2;
- matrice5[0][0].g=(matrice[0][1].g+matrice[1][0].g)/2;
- matrice5[0][0].b=(matrice[0][1].b+matrice[1][0].b)/2;
- matrice5[0][width-1].r=(matrice[0][width-2].r+matrice[1][width-1].r)/2;
- matrice5[0][width-1].g=(matrice[0][width-2].g+matrice[1][width-1].g)/2;
- matrice5[0][width-1].b=(matrice[0][width-2].b+matrice[1][width-1].b)/2;
- matrice5[height-1][width-1].r=(matrice[height-1][width-2].r+matrice[height-2][width-1].r)/2;
- matrice5[height-1][width-1].g=(matrice[height-1][width-2].g+matrice[height-2][width-1].g)/2;
- matrice5[height-1][width-1].b=(matrice[height-1][width-2].b+matrice[height-2][width-1].b)/2;
- matrice5[height-1][0].r=(matrice[height-1][1].r+matrice[height-2][0].r)/2;
- matrice5[height-1][0].g=(matrice[height-1][1].g+matrice[height-2][0].g)/2;
- matrice5[height-1][0].b=(matrice[height-1][1].b+matrice[height-2][0].b)/2;
- for(j=1;j<height-2;j++)
- for(k=1;k<width-2;k++)
- {
- 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;
- 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;
- 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;
- }
- }
- for(i=0;i<height;i++)
- for(j=0;j<width;j++)
- {matrice[i][j].r=matrice5[i][j].r;
- matrice[i][j].g=matrice[i][j].g;
- matrice[i][j].b=matrice[i][j].b;
- }
- break;
- case 6:
- scanf("%d",&num_rot);
- case 8:
- for(i=0;i<height;i++)
- {for(j=0;j<width;j++)
- printf("%hhu %hhu %hhu",matrice[i][j].r,matrice[i][j].g,matrice[i][j].b);
- printf("\n");
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement