关于数据结构的问题,用C语言描述

1. 设一函数 f(x,y)=(1+A*(e^B/cosθ)*(1+C*(cosψ)^2),其中θ=(π*x)/180,ψ=(π*y)/180,参数A=-0.5,B=-0.4,C=-0.1。x从0变化到89,步长为1,y从0变化到359,步长为1。采用一种数据结构,完成f(x,y)的存储。
2.上题的f(x,y)是实数值,请通过线性变化求出g(x,y),要求g(x,y)是整数,范围从0~255。设f(x,y)最小值fmin,min为下标,最大值fmax,max为下标,f(x,y)到g(x,y)的线性变化公式为 g(x,y)=|((f(x,y)-fmin)/(fmax-fmin))*255|,做不完不要紧,会做一点就行

下面是完整的程序,输出到一个文件中的,f(x,y)和g(x,y)放在一起对比
感觉满意请采纳
#include<stdio.h>
#include<math.h>
#define PI 3.1415926
double f[360][90];
unsigned char g[360][90];
main()
{
int x,y;
FILE *p;
double t,maxf=0,minf=1e10,d;
for(y=0;y<360;y++)
for(x=0;x<90;x++)
{
t=cos(PI*y/180);
t=(1-0.5*exp(-0.4*cos(PI*x/180)))*
(1-0.1*t*t);
f[y][x]=t;
if(t>maxf)
maxf=t;
if(t<minf)
minf=t;
}
d=255/(maxf-minf);
for(y=0;y<360;y++)
for(x=0;x<90;x++)
g[y][x]=(unsigned char)((f[y][x]-minf)*d);
if((p=fopen("out.txt","w"))==NULL)
{
puts("open file error");
getchar();
return;
}
for(y=0;y<360;y++)
for(x=0;x<90;x++)
fprintf(p,"%lf\t%u\n",f[y][x],g[y][x]);
fclose(p);
}
温馨提示:答案为网友推荐,仅供参考
相似回答