プログラミング実習II (2025) 課題

[E11] 第9章 構造体とユーザ定義型


(E11_1) [リスト 6.14]ではもっとも離れた席の組を探すプログラムを扱ったが,[リスト 9.5] はそれを構造体の配列を用いて書いたプログラムである.[リスト9.5]を入力せよ.さらに,以下の変更を施した上でコンパイル・実行せよ.

その上で,もっとも近い席の組を探すプログラムに書き換えて提出せよ.

(E11_2) 次の手順に沿って,構造体を用いた複素数の演算を行うプログラムを作成せよ.

  1. main 関数の外部で typedef により,以下のメンバを持つ構造体を complex_t 型として参照できるようにせよ.
  2. main 関数の内部で complex_t 型の変数 x および y を定義し,それぞれのメンバに適当な数値をセットせよ.
  3. 引数として complex_t 型の変数を 1 つ受け取り,その値を(i を虚数単位とする) のように表示する関数 complex_print を作成せよ.さらに,x を引数として main 関数から complex_print を呼び出せ.y についても同様.
  4. 2個の複素数を引数として,それらの加算を行った結果を戻り値とする関数 complex_add を作成せよ.
  5. 2個の複素数を引数として,それらの乗算を行った結果を戻り値とする関数 complex_mul を作成せよ.
  6. main 関数にて,x と y の加算と乗算の結果を関数 complex_print により表示するプログラムを作成せよ.

    たとえば,x = 1.5 + 2.1 i と y = 0.3 - 2.5 i の加算と乗算の結果はそれぞれ である.


#include <stdio.h>



void complex_print( complex_t a ){

	if( a.im >= 0.0 )
		printf(" %f + %f i \n", a.re, a.im);
	else
		printf(" %f - %f i \n", a.re, -a.im);

}


complex_t complex_add( complex_t a, complex_t b ){



}


complex_t complex_mul( complex_t a, complex_t b ){



}

int main ( void )
{
	complex_t x, y;










	return 0;
}


(E11_3) 教科書 9.4.2 項を読んだ上で,構造体へのポインタに関する以下の問題に解答せよ.

#include <stdio.h>



void complex_print( complex_t *a ){





}


int main ( void )
{
	complex_t data;
	complex_t *p;








	return 0;
}


(E11_4) 関数への変数や構造体の受け渡しに関するプログラムについて以下に解答せよ.(プログラム c を提出すること)

  1. 下記に示す(プログラムa)〜(プログラムd)を読んで,実行したときのそれぞれの表示を予想し,考察欄に記せ.
  2. コンパイル・実行し,結果を確認し,考察欄にて報告せよ.呼び出された関数 my_func( ) 中の代入は main( ) 中の変数 x,構造体変数 p および配列 array の値に影響を与えたか?各プログラムにおける関数の引数がどのようなものであり,それが結果にどのように影響したかを考察欄に記せ.
    矢印演算子 -> については 9.4.2項を参照のこと.






(E11_5*) 以下の通り,構造体の配列について計算を行うプログラムを作成せよ.



(E11_A) 「キックオフ C言語」の第10章 練習問題1(【構造体の関数渡し】167ページの…)を解答せよ.
作成した関数を利用し,動作が確認できるような C 言語のプログラムを作成して提出すること.

(E11_B) 「キックオフ C言語」の第10章 練習問題2(【構造体ポインタの関数渡し】171ページの…)を解答せよ.
作成した関数を利用し,動作が確認できるような C 言語のプログラムを作成して提出すること.

(E11_C) 「キックオフ C言語」の第10章 練習問題3(【メンバ変数の追加】171ページの…)を解答せよ.
作成した関数を利用し,動作が確認できるような C 言語のプログラムを作成して提出すること.

(E11_D) 「キックオフ C言語」の第10章 練習問題7(【構造体の関数群】2次方程式…)を解答せよ.
作成した関数を利用し,動作が確認できるような C 言語のプログラムを作成して提出すること.

(E11_E*) 「キックオフ C言語」の 12.1節 練習問題「 10 章」(struct tm get_current_time( void ) )を解答せよ.
作成した関数を利用し,動作が確認できるような C 言語のプログラムを作成して提出すること.