【初月無料キャンペーン中】gooドクター

急ぎでお願いします

質問者からの補足コメント

  • C言語の練習問題を作りたいです。

    課題を出された先生にはは「答えのプログラムはもちろんだけど、問題文と答えのプログラムについての解説も付けてね。」と言われました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/09/18 21:51
gooドクター

A 回答 (4件)

問: 引数に整数を取る関数ポインタと配列の長さnと整数の配列を引数に受け取り、与えられた配列に関数ポインタで与えられた関数を適用した配列を返す関数mapを作成せよ。



解:

#include <stdbool.h>

int* map(int (* func)(int), size_t size, int* array) {
 for (size_t i = 0; i < size; i++) {
  array[i] = func(array[i]);
 }
 return array;
}

解説: C++やJavaではマッピング関数と言うモノが実装され提供されているので、曲がりなりにもそれを真似して実装してみようとする問題。
(C++ではtransform関数、JavaではStreamクラスでmapメソッドがある)
結局、定形パターンで頻出する「配列に対する繰り返し」を関数で抽象化可能か否か、と言うのがポイント。
    • good
    • 0

練習問題を作るって事かな?


paizaラーニングのスキルチェックとか
他にもいろいろあると思いますが。

お題を一つ
static int foo[2][2] = {{1,2,},{3,4}};
のポインタを返す関数を作る。
(返却は return foo; になります)
返却値を使って、変数の値を表示する。

表示は、初級程度、関数は中級程度かな。
    • good
    • 0

何が問題か(質問の内容)示してください。

この回答への補足あり
    • good
    • 0

こちらはどうでしょうか。


https://oshiete.goo.ne.jp/qa/12577959.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング