#12551: 若x<0或y<0或任何一個像素的r,g,b值超過255或小於0,則它不是圖片檔


d2513850 (林勇智)

學校 : 崑山科技大學
編號 : 5102
來源 : [106.64.64.73]
最後登入時間 :
2024-01-07 20:24:26
b459. 圖片的直方圖 | From: [111.185.187.71] | 發表日期 : 2017-08-11 12:39

#include<stdio.h>
#include<math.h>
int main(void){
	int eo=0,x,xx,y,yy,r,g,b,zz,rt[256]={0},gt[256]={0},bt[256]={0},att[256]={0},i;
	double z;
	while(scanf("%d %d",&x,&y)!=EOF){
		if(x>0&&y>0){/*x<0||y<0:不是圖片*/
			for(yy=0;yy<y;yy++){
				for(xx=0;xx<x;xx++){
					scanf("%d %d %d",&r,&g,&b);
					if(0<=r&&r<=255){/*r<0||r>255:不是圖片*/
						if(0<=g&&g<=255){/*g<0||g>255:不是圖片*/
							if(0<=b&&b<=255){/*b<0||b>255:不是圖片*/
								z=(double)r+(double)g+(double)b;/*先轉成double*/
								z=z/3.0f;
								z=round(z);
								rt[r]++;
								gt[g]++;
								bt[b]++;
								zz=(int)z;/*再轉成int*/
								att[zz]++;
							}else{
								eo=1;
							}
						}else{
							eo=1;
						}
                	}else{
						eo=1;
                	}
				}
			}
		}else{
			eo=1;
        }
		if(eo==0){
			for(i=0;i<256;i++){
					printf("%d ",rt[i]);
					rt[i]=0;
			}
			printf("\n");
			for(i=0;i<256;i++){
					printf("%d ",gt[i]);
					gt[i]=0;
			}
			printf("\n");
			for(i=0;i<256;i++){
					printf("%d ",bt[i]);
					bt[i]=0;
			}
			printf("\n");
			for(i=0;i<256;i++){
					printf("%d ",att[i]);
					att[0]=0;
			}
			printf("\n");
		}else{
			for(i=0;i<256;i++){
				att[i]=0;
				rt[i]=0;
				gt[i]=0;
				bt[i]=0;
			}
			printf("不是圖片\n");/*若x<0||y<0||r<0||r>255||g<0||g>255||b<0||b>255:表示此檔案可能不是圖片檔或它是特殊格式的圖片檔*/
        }
	}
	return 0;
}
 
ZeroJudge Forum