
No.3ベストアンサー
- 回答日時:
がるです。
> このような場合、関数の呼び出しと関数内部ではどのようなプログラムにすれば良いのでしょうか。初心者でわからないのでよろしくお願いします。
んっと…どのあたりが分からないのでしょうか?
基本的には「ここまで分かる」部分を提示していただけると、以降のお話がしやすくなるのですが。
ただまぁ、今回の場合概ね予測はできるのですが。多分「構造体の配列の作り方」と「受け取った関数でどうやって"構造体の配列"から"構造体"を取り出すか」の2点だと思われます。
構造体の配列は、「事前にデータ量が明確に分かっている」場合、
構造体名 構造体配列[サイズ];
で固定的に宣言が可能です。
で、もうちょっと高度な手法ですと、
構造体名 *構造体配列; // これは「ポインタ用の変数」を規定します
構造体配列 = (構造体名 *)malloc( sizeof(構造体名) * サイズ );
// または
構造体配列 = (構造体名 *)calloc( sizeof(構造体名), サイズ );
で、動的にサイズを確保します。
アクセス自体は
int i;
for(i = 0; i < サイズ; i ++) {
構造体配列[i].数学の点数 = XX;
}
みたいな感じでOKです。
で、前述の「nullつかって最後をあらわす」場合。
まず構造体の確保サイズを「サイズ+1」にして、後はデータを全部入れた後に
構造体配列[サイズ] = null;
としておくと、判定が楽かと思います。
で、call先の関数内では、
int i;
for(; 構造体配列[i] != null; i++) {
構造体配列[i].数学の点数
}
とかって感じのループにするとよろしいかと。
かな~り大雑把にはしょってますが、欠けている部分は少し調べれば色々出てくるかと思います。
また分からなくなったら質問してください ^^
No.2
- 回答日時:
がると申します。
こういったものには色々なパターンがあるので。#1さんが提示された「以外」の方法をひとつ。
typedef struct {
名前
数学の点数
英語の点数
理科の点数
} 一人分のデータ;
typedef struct {
数学の平均点数
英語の平均点数
理科の平均点数
} 平均結果用;
int 処理関数( 一人分のデータの配列へのポインタ, 平均結果用へのポインタ)
まぁ大して変わってませんが。配列のポインタの、最後にnullを入れて置くようにすると、簡単にfor文でまわせます。
ちなみに、C++でやっている場合ですと、構造体よりもクラスにして、配列はvectorで処理(iteratorを使う)と、より楽に作成できるかと思います。
この回答への補足
typedef struct {
名前
数学の点数
英語の点数
理科の点数
} 一人分のデータ;
ご回答ありがとうございます。さらに教えていただきたいのですが、構造体を上記のもの1つだけ使用して作っています。
このような場合、関数の呼び出しと関数内部ではどのようなプログラムにすれば良いのでしょうか。初心者でわからないのでよろしくお願いします。
No.1
- 回答日時:
double ave(*構造体の配列(の先頭)のポインタ, int データ数, double *数学の平均を返すポインタ, dou
ble *英語の平均を返すポインタ, double *理科の平均を返すポインタ)お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- 統計学 テストの順位についてです 今回のテストの順位を知りたいのですが、できますでしょうか?今回は僕の学年は 4 2022/11/30 19:15
- 高校受験 夏休み、本気で勉強を頑張りたい 2 2022/07/03 16:33
- 中学校 理科だけが極端に苦手 5 2022/09/10 14:18
- 高校受験 高校受験まで2週間/未だに理社が平均点以下 理社の点数が未だに平均点以下から上がらず困っています… 1 2023/01/29 18:24
- 高校受験 英語科に行くのはアリかナシか 5 2022/11/01 23:41
- 中学校 理科で点数をあげる方法。 4 2022/06/28 23:54
- Excel(エクセル) Excelで全クラスのランキング表を作成したい 4 2022/05/24 15:28
- 中学校 模試で、得意な教科の点数は全体平均より20点高い(100点近い)苦手な教科の点数は平均点以下(1、2 1 2022/11/21 22:43
- その他(コンピューター・テクノロジー) Pythonについて a = [[a, [1,2,3,4,5],3], ....(50人ほど続く)] 3 2022/05/16 01:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 配列の長さの上限
-
C# Listを使わずに2次元配列の...
-
構造体とポインタ配列
-
C# 配列の変数宣言について。
-
先頭アドレスとは何ですか?
-
配列を含む構造体の初期値について
-
mallocの確保要素数の限界は?
-
VBで構造体の配列を関数に渡す...
-
配列を使わずに、変数名を動的...
-
配列をEraseしてもメモリが開放...
-
テキストファイルから文字列を...
-
C言語でのカンマ区切りについて
-
複数の選択範囲の行番号を個別...
-
構造体や配列へのポインタにつ...
-
if文で「配列a[i]が小数ならば...
-
C言語でcharの足し算
-
メモリの初期値
-
unsigned char配列への入力の仕方
-
VBAで配列からbmp画像を出力す...
-
MATLAB の配列の添え字について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
C# Listを使わずに2次元配列の...
-
【速いブラインドタッチ】手を...
-
配列をEraseしてもメモリが開放...
-
テキストファイルから文字列を...
-
先頭アドレスとは何ですか?
-
配列で格納したものをmsgboxで...
-
複数の選択範囲の行番号を個別...
-
C# 配列の変数宣言について。
-
C++ vectorに配列をプッシュしたい
-
配列を含む構造体の初期値について
-
VBで構造体の配列を関数に渡す...
-
C言語で特定列だけを抽出して配...
-
キーボードのキー配列について
-
ExcelVBAで質問です。離れた二...
-
2次元配列を戻り値とする関数?
-
unsigned char配列への入力の仕方
-
【C言語】配列の中に配列を入れ...
-
Redimした動的配列はEraseする...
おすすめ情報