用C语言计算各色油墨的灰度、色偏、色效率
用彩色密度计由C、M、Y三色滤色片对一原色油墨的知实地以块进行测量,将会得到大、中、小三个数值道,分别用Dh、Dm、Dl表示,计算公式如下:色偏Eh=(Dm-Dl) /( Dh-Dl) X100%,灰度Gr=Dl/Dh X100%,色效率CE=1-(Dm+Dl)/(2 X Dh)X 100%
我们先把数据按上图顺序保存在文本文档,然后读入到一个数组中,再对数组每行大到小排序,这样便于后面的计算。
源代码如下:
#include <stdlib.h>
#include<stdio.h>
float bijiao(float a[9][3]);//排序函数
float jisuan(float a[9][3]);//计算函数
int main()
{int i, j;float date;float date_storage[9][3];FILE *fp;if ((fp = fopen("zuoye.txt", "r")) == NULL){printf("error");}printf("排序前\n");for (i = 0; i < 9; i++){for (j = 0; j < 3; j++){fscanf(fp, "%f", &date);date_storage[i][j] = date;printf("%f\t", date_storage[i][j]);}printf("\n");}printf("\n");printf("排序后\n");bijiao(date_storage);//从大到小排序for (i = 0; i < 9; i++){for (j = 0; j < 3; j++){printf("%f\t", date_storage[i][j]);}printf("\n");}printf("\n");jisuan(date_storage);}
float bijiao(float a[9][3])
{int i, j,x;float t;for (i = 0; i < 9; i++){//a[i][0],a[i][1].a[i][2]for (j = 0; j < 2;j++){for (x = j+1; x < 3; x++){if (a[i][j] < a[i][x]){t = a[i][j];a[i][j] = a[i][x];a[i][x] = t;}}}}return 0;
}
float jisuan(float a[9][3])//计算函数
{int i;float S, H, X;for (i = 0; i < 9; i++){S=(a[i][1] - a[i][2]) / (a[i][0] - a[i][2]);H = a[i][2] / a[i][0];X = 1 - (a[i][1] + a[i][2]) / (2 * a[i][0]);printf("色偏=%4.2f%%,灰度=%4.2f%%,色效率=%4.2f%%",100*S,100*H,100*X);printf("\n");}return 0;
}
运行结果如下: