2017年度「アルゴリズムとデータ構造」のページ

例題

2017年11月9日分
  1. 配列に対して以下の操作を行うCの関数を書け。

    1. 配列の各要素の絶対値を計算して他の配列に代入する関数
      書式
      		      size_t vabs(int *y, const int *x, size_t n);
      		    
      動作
      yは十分な長さのintの配列の先頭を指すとする。 xは長さnのintの配列の先頭を指すとする。 配列xの各要素の絶対値を計算し、同じ添字のyの要素に代入する。
      返り値
      代入した個数を返す。これはnの値と等しくなる。
      解答例1
      添字を動かすプログラム例
      解答例2
      ポインタを動かすプログラム例

練習問題

2017年11月9日出題
  1. 配列に対して以下の操作を行うCの関数を書け。

    提出するプログラムは、本体の関数の定義、および、必要な#include命令などプロプロセッサ命令、(あれば)下請けの関数の定義や(あれば)大域変数の定義などのみを含み、その他のコードを含んではならない。

    1. 偶数を数える関数
      書式
      		      size_t count_even(const int *a, size_t n);
      		    
      動作
      aは長さnのintの配列の先頭を指すとする。 配列中の要素で値が偶数のものを数える。
      返り値
      配列の要素で値が偶数のものの個数を返す。 同じ値が複数回出現する場合も、別々に数える。
    2. 偶数をだけをコピーする関数
      書式
      		      size_t copy_if_even(const int *a, size_t n, int *b);
      		    
      動作
      aは長さnのintの配列の先頭を指すとする。 bは十分な長さのintの配列の先頭を指すとする。 配列aの要素のうち、値が偶数のものを配列bにコピーする。 コピー先での出現順はコピー元での出現順を保つ。 配列aに同じ偶数の値が複数出現しても、個々にコピーする。
      返り値
      コピーした要素の個数を返す。
    3. 素数を数える関数
      書式
      		      size_t count_prime(const int *a, size_t n);
      		    
      動作
      aは長さnのintの配列の先頭を指すとする。 配列中の要素で値が素数のものを数える。
      返り値
      配列の要素で値が素数のものの個数を返す。 同じ値が複数回出現する場合も、別々に数える。
    4. 素数をだけをコピーする関数
      書式
      		      size_t copy_if_prime(const int *a, size_t n, int *b);
      		    
      動作
      aは長さnのintの配列の先頭を指すとする。 bは十分な長さのintの配列の先頭を指すとする。 配列aの要素のうち、値が素数のものを配列bにコピーする。 コピー先での出現順はコピー元での出現順を保つ。 配列aに同じ素数の値が複数出現しても、個々にコピーする。
      返り値
      コピーした要素の個数を返す。
    1. 問題「如月素因数」を解け。これは「月曜土曜素因数」の類題である。
    2. 問題「Dragon's Cruller II」を解け。これは、ACM-ICPC 2013年アジア地区予選 問題E を著しく易しくしたものである。

戻る