C言語教室 第16回 - 構造体あれこれ(回答提出)
こちらの記事の課題回答です。
ではさっそく。
課題
いつもいつも課題の何かが抜けるので、箇条書きにしてみました。
・商品コードと価格をメンバ変数に持つ構造体を定義する。
・この構造体の配列を作成する。
・適当な内容を設定する。
・この構造体配列の内容を出力する。
・そのような関数を書きなさい。
よし!
プログラム
#include <stdio.h>
#include <limits.h>
struct strProduct
{
unsigned int code;
unsigned int price;
};
int LoadProducts(struct strProduct Products[])
{
Products[0].code = 1;
Products[0].price = 98;
Products[1].code = 2;
Products[1].price = 128;
Products[2].code = 3;
Products[2].price = 258;
Products[3].code = 4;
Products[3].price = 998;
Products[4].code = 5;
Products[4].price = 1098;
Products[5].code = 6;
Products[5].price = 1398;
Products[6].code = 7;
Products[6].price = 10998;
Products[7].code = 8;
Products[7].price = 1150000;
Products[8].code = 9;
Products[8].price = 50000000;
Products[9].code = UINT_MAX;
Products[9].price = UINT_MAX;
return 10;
}
void ShowProducts(const struct strProduct Products[], int number)
{
int i;
printf(" code price\n");
for (i = 0; i < number; i++)
{
printf("%10u ¥%u-\n",
Products[i].code,
Products[i].price);
}
}
void funcProduct(void)
{
struct strProduct Products[32] = {0};
int number = LoadProducts(Products);
ShowProducts(Products, number);
}
int main()
{
funcProduct();
return 0;
}
実行結果
code price
1 ¥98- 2 ¥128-
3 ¥258- 4 ¥998-
5 ¥1098-
6 ¥1398-
7 ¥10998-
8 ¥1150000-
9 ¥50000000-
4294967295 ¥4294967295-
コメント
本当に、シンボルにはいつも悩まされます。
今回のケースでは「Product」だらけになりそうだったので、構造体のシンボルは「strProduct」にしました。「str」は「struct」の意。
データのシンボルは「Product」。
構造体のシンボルは「strProduct」。
商品コードと価格はデータの性質上、負値も小数もあり得ないので、型は「unsigned int」。
関数「LoadProducts」は、通常ならファイルから読み込んだりするのでしょうけど、今回は練習プログラムなので固定値を設定。