A 回答 (2件)
- 最新から表示
- 回答順に表示
No.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人の身長を入力したあとその合計を計算するプログラム・・・・・・
この課題の『合計』ですが、もしかして、『平均』の間違いではないでしょうか?
※人数分の身長の『合計値』を求めても、あまり意味は無いように思われますが。。。
※ただし、もちろん『平均値』を算出するための前処理として、まず『合計値』を
求めておく、という作業は当然のこととしての話とします。
以上です。参考になれば幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムが書けません。 6 2023/01/22 22:58
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Java Java モンスターブリーダー 1 2023/02/05 09:44
- 大学・短大 これは大学の総合選抜用に書いた学習計画書で、事前に塾の先生から宿題として作成してくるよう出されていた 3 2023/07/17 19:52
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- その他(プログラミング・Web制作) VBA 1 2023/01/19 16:19
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
配列で格納したものをmsgboxで...
-
C++ vectorに配列をプッシュしたい
-
VB.NET 構造体の配列の検索機能...
-
VBAでバイナリとして配列の一部...
-
C# Listを使わずに2次元配列の...
-
CSVファイルのデータを2次元配...
-
C# 配列の変数宣言について。
-
配列の参照渡しで型が一致しま...
-
テキストファイルから文字列を...
-
VBAで配列からbmp画像を出力す...
-
C言語で特定列だけを抽出して配...
-
char型配列をString型にしたい
-
メモリの初期値
-
パスカルの三角形
-
配列をEraseしてもメモリが開放...
-
現在、C/C++ で作成したプログ...
-
VB.netでRadioButtonを配列にし...
-
【速いブラインドタッチ】手を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
先頭アドレスとは何ですか?
-
配列で格納したものをmsgboxで...
-
C# Listを使わずに2次元配列の...
-
C# 配列の変数宣言について。
-
テキストファイルから文字列を...
-
配列の参照渡しで型が一致しま...
-
ExcelVBAで質問です。離れた二...
-
unsigned char配列への入力の仕方
-
VBで構造体の配列を関数に渡す...
-
C++ vectorに配列をプッシュしたい
-
C言語で特定列だけを抽出して配...
-
Excel、VBAのユーザーフォーム...
-
複数の選択範囲の行番号を個別...
-
配列をEraseしてもメモリが開放...
-
配列を含む構造体の初期値について
-
【速いブラインドタッチ】手を...
-
C言語 配列の再初期化
-
Redimした動的配列はEraseする...
おすすめ情報