平成15年 春期 基本情報技術者 午後 問10
問10 C言語次の C プログラムの説明及びプログラムを読んで,設問に答えよ。 〔プログラムの説明〕 ある圧電センサ(加えた圧力の大きさに応じて電圧を発生する装置)の温度補正を 行うための温度補正係数を求めるプログラムを作成する。 この圧電センサは,周囲の温度によって出力特性が変化するので,出力値を補正する必要がある。 周囲の温度に対する圧電センサの出力値の変化を実験で調べたところ,表の結果が得られた。 この表は,0 ℃での出力値を 1.00 としたときの比率を表したものである。 表 周囲の温度とセンサ出力値比率
(1) 表のデータから温度補正テーブルを作成する。 温度補正テーブルは,構造体の配列で実現する。 typedef struct { int Temp; /* 温度 */ double Ratio; /* センサ出力値の比率(実測値) */ double Step; /* 1 ℃当たりの増分 */ } CURVE; (2) 温度補正テーブルを初期化する関数 SetupCurve と,
温度補正係数 K を求める関数 GetK を作成する。
(4) 主プログラムは,この二つの関数の動作を検証するため, −40 〜 50 ℃の温度補正係数 K を,1 ℃ 刻みで求めて表示するテストプログラムである。 表示例は,次のとおりである。
〔プログラム〕 #include <stdio.h> typedef struct { int Temp ; /* 温度 */ double Ratio ; /* センサ出力値の比率(実測値) */ double Step ; /* 1 ℃当たりの増分 */ } CURVE ; void SetupCurve( CURVE * , int ); double GetK ( int , CURVE * , int ); #define ITEMS 7 main() { int Degree ; double k ; CURVE Curve[ ITEMS ] = { { -40 , 0.20 , 0.0 },{ -20 , 0.60 , 0.0 }, { -10 , 0.80 , 0.0 },{ 0 , 1.00 , 0.0 }, { 10 , 1.17 , 0.0 },{ 30 , 1.50 , 0.0 }, { 50 , 1.80 , 0.0 } }; SetupCurve( Curve , ITEMS ); printf( " 温度 温度補正係数\n" ); for( Degree = -40 ; Degree <= 50 ; Degree++ ) { k = GetK( Degree , Curve , ITEMS ); printf( " %3d %4.2f \n" , Degree , k ); } } void SetupCurve( CURVE *p , int Points ) { /* 温度補正テーブルを初期化する */ int i ; for( i = 0 ; i < Points - 1 ; i++ , ){ p->Step = ( ) / ( (p+1)->Temp - p->Temp ); } } double GetK( int Temp , CURVE *p , int Points ) { /* 温度補正係数 K を返却値として返す */ int i,j,n ; i = 0 ; j = Points - 1 ; if ( ( Temp < p->Temp ) || ( Temp > (p+j)->Temp ) ) return 0.0; /* 温度範囲外のときは,0.0 を返す */ /* 温度補正テーブルの最後の要素の温度と一致した場合 */ if ( Temp == ( p+j )->Temp ) return 1.0 / ( p+j )->Ratio ; /* 温度補正テーブルを二分探索法で探索する */ while( 1 ) { n = ; if ( ( Temp >= ( p+n )->Temp ) && ( Temp < ( p+n+1 )->Temp ) ) break ; if ( Temp < ( p+n )->Temp ) j = n ; else ; } p += n ; return 1.0 / ( p->Ratio + p->Step * ( ) ); } 設問 プログラム中の に入れる正しい答えを, 解答群の中から選べ。
a に関する解答群 ア p-- イ p++ ウ p->Temp++ エ p += 3 オ p += 7 b に関する解答群 ア (p-1)->Ratio - p->Ratio イ (p-1)->Ratio - (p+1)->Ratio ウ p->Ratio - (p-1)->Ratio エ p->Ratio - ( p->Ratio - 1 ) オ (p+1)->Ratio - p->Ratio c に関する解答群 ア ( i + j ) / 2 イ ( i * j ) / 2 ウ ( i % j ) / 2 エ ( i + j ) * 2 オ ( i % j ) * 2 d に関する解答群 ア i = 0 イ i = n - 1 ウ i = n + 1 エ j = n オ j = n + 1 e に関する解答群 ア Temp - p->Step イ Temp - p->Temp ウ Temp + p->Temp エ p->Temp - n オ p->Temp - Temp
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| |||||||||||||||||