アプリ版:「スタンプのみでお礼する」機能のリリースについて

低レベルな質問ですいません。
先日大学の授業で
『n人の身長を入力したあとその合計を計算するプログラムを配列を用いて作成しなさい、なおnは100を超えないものとする』
という課題が出たのですがさっぱりわかりません。親切な方教えてください。
define文の授業なのでdefine文を使ったやり方でお願いします。

A 回答 (2件)

こんにちは。



ここは、C/C++のカテゴリーですので、C/C++の話として解釈させて戴きます。
※的外れだった場合は、すみません。

■まず、「define」について

#1の方も書かれているように、質問者さんの仰っている「define文」というのは、
「プリプロセッサ・ディレクティブ」の「#define」のことでしょうか?

だとした場合、#defineは、C言語の「if文」や「for文」などのような、プログラムの
実際の実行時に実行される文とは違って、
これは、ソースコードのコンパイルの際に、コンパイラの動作を制御するために、
コンパイラに指示する「コマンド」のような意味合いで使用されるものだと思います。

また、#defineは、「マクロ」と呼ばれることもあります。

#defineは、以下のような構文になります。

  #define マクロ名 文字シーケンス

これは、コンパイラに対して、
  ソースコード中に表れた、「マクロ名」を、「文字シーケンス」に置き換える
という指示を与えます。

 <例>
     :
  #define NINZU_MAX 100       /* 人数の最大数 */
     :
  int main(void)
  {
    double dShincho[NINZU_MAX];  /* 人数分の身長を格納するdouble型の配列 */
        :

 ※上記の場合、コンパイル実行時に、実際のコンパイル(ソースコードを実際の
  オブジェクトコードに変換する作業)に先立って、
    double dShincho[NINZU_MAX];
  の部分が、
    double dShincho[100];
  に置き換えられた後、コンパイルされます。

■本題の件について

 作成するプログラムは、CUIベース(コマンドプロンプト上で実行&操作する
 コンソールアプリケーション)のものと仮定します。

 ◎プログラムの流れ(※以下は一例です。)
  注)#defineの使い方は、下記の例以外にも、いろいろと考えられると思います。

 1)人数分の「身長」を格納するための配列と、「人数」及び「合計値」を格納
   するための変数を用意する。
   ・人数の最大数(=100)は、「#define」により定義しておく。
   ・配列は、予め静的変数または自動変数の配列として確保しておくか、
    実行時に動的(malloc関数など使用)に確保するようにする。
   ・動的に確保した際は、確保できなかった場合のエラー処理を行う。
    また、作業完了後は確保した領域を解放(free関数など)しておく。

 2)コンソール経由でユーザーから、「人数」を入力(scanf関数、fgets関数など)
   し、「人数」用の変数に格納する。
   ・必要に応じて、入力された数値(もしくは数字文字列)に関して、規定外、
    範囲オーバー(下限未満、上限超過)などのエラー処理等を行う。
    ※ここで、#define定義の「最大人数」を判定値として参照する。

 3)ループ処理(for文、while文など)で、コンソール経由でユーザーから、
   入力された「人数」分の「身長」を、順次入力(scanf関数、fgets関数など)し、
   用意した配列に順次格納する。
   ・必要に応じて、入力された数値(もしくは数字文字列)に関して、規定外、
    範囲オーバー(下限未満、上限超過)などのエラー処理等を行う。

 4)ループ処理(for文、while文など)で、「人数」分、配列内の「身長」を順次
   取り出して、その「合計値」を計算(合計値用の変数に足しこんでいく)する。

 5)結果の「合計値」などをコンソール等へ出力(printf関数など)する。

 6)確保したメモリの解放などの後処理を行い、プログラムを終了する。

 以上のような、プログラムを作成すれば良いのではないかと思います。

 数値入力、ループ処理、計算処理などは、C言語または、C++の標準的な命令、
 及び、関数(ライブラリ関数)などを使用すれば、十分可能かと思います。

■補足(というか蛇足になりますが。。。)
素朴な疑問なのですが、

> 『n人の身長を入力したあとその合計を計算するプログラム・・・・・・

この課題の『合計』ですが、もしかして、『平均』の間違いではないでしょうか?
※人数分の身長の『合計値』を求めても、あまり意味は無いように思われますが。。。
※ただし、もちろん『平均値』を算出するための前処理として、まず『合計値』を
 求めておく、という作業は当然のこととしての話とします。

以上です。参考になれば幸いです。
    • good
    • 0

#define MAX_ARRAY_SIZE 100



はい、続きを補足にどうぞ。
    • good
    • 0

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