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