STEP1~STEP4
#include <stdio.h>
void read(float *V,int *T)
{
int i;
FILE *fp;
fp=fopen("ktype.txt","r");
if(fp==NULL){
printf("ファイルを開くことができません¥n");
return;
}
for(i=0;i<21;i++){
fscanf(fp,"%f",V+i);
*(T+i) = 10*i;
}
}
void output(float *V,int *T)
{
int i;
for(i=0;i<21;i++){
printf("[%d]¥t%.3f %d¥n",i,*(V+i),*(T+i));
}
}
void input(float *E)
{
printf("入力電圧[mV]:");scanf("%f",E);
}
void search_number(float *V,int *T,float E,float *V0,float *V1,int *T0,int *T1)
{
int i;
for(i=0;i<21;i++){
if(*(V+i)<=E && E<*(V+i+1)){
*V0=*(V+i);
*V1=*(V+i+1);
*T0=*(T+i);
*T1=*(T+i+1);
printf("入力電圧は%d番目と%d番目の間の電圧値です.¥n",i,i+1);
}
}
}
float linear_interpolation(float E,float V0,float V1,int T0,int T1)
{
float T;
T = T0+(E-V0)/(V1-V0)*(T1-T0);
return T;
}
void main()
{
int T[21],T0,T1;
float V[21],E,V0,V1;
read(V,T);
output(V,T);
input(&E);
search_number(V,T,E,&V0,&V1,&T0,&T1);
printf("温度は%f",linear_interpolation(E,V0,V1,T0,T1));
}
STEP5
#include <stdio.h>
#include "mogla.f"
void read(float *V,int *T)
{
int i;
FILE *fp;
fp=fopen("ktype.txt","r");
if(fp==NULL){
printf("ファイルを開くことができません¥n");
return;
}
for(i=0;i<21;i++){
fscanf(fp,"%f",V+i);
*(T+i) = 10*i;
}
}
void graphic(void)
{
int T[21],i;
float V[21];
read(V,T);
gl_clearbuffer();
for(i=0;i<20;i++){
pset(V[i]*25,T[i],12); /* プロット表示 */
line(V[i]*25,T[i],V[i+1]*25,T[i+1],14);
}
line(-320,0,320,0,10);
line(0,240,0,-240,10);
gl_flush();
}
void main()
{
gl_int(640, 480); /* 640*480ピクセルのウインドウを開く */
gl_displayfunc(graphic); /* 描画関数の呼び出し */
gl_loop(); /* 再描画処理 */
}