構造体型の配列の簡単な初期化法と格納した数値データを効率よくprintf出力表示する方法について考察してみます
アレサ
「構造体型の配列宣言を行い
複数(今の場合2つ)の構造体変数のメンバ変数に
格納されている数値データを
構造体型の配列の配列変数に格納することができました。」
ソーラー 「やった、アレサ
ようやく理解できた。
さきほどのエピソードタイトル
格納した数値データを効率よくprintf表示する
構造体型の配列宣言を行い 構造体の配列を作製して
複数の構造体変数のメンバ変数に格納された数値をデータを
構造体型の配列の配列変数に格納する方法
意味fm明だったから あせったよ
」
アレサ「ソーラーさん、まだまだこれからです。(*´▽`*)
先程のプログラム⇩は
#include <stdio.h>
typedef struct Cube{
int no;
float tate;
float yoko;
float takasa;
}Cube;
int main(void)
{
Cube str[2];
str[0].no=1;
str[0].tate=2.0;
str[0].yoko=3.0;
str[0].takasa=4.0;
str[1].no=2;
str[1].tate=4.0;
str[1].yoko=5.0;
str[1].takasa=6.0;
printf("%d\n" ,str[0].no);
printf("%f\n" ,str[0].tate);
printf("%f\n" ,str[0].yoko);
printf("%f\n" ,str[0].takasa);
printf("%d\n" ,str[1].no);
printf("%f\n" ,str[1].tate);
printf("%f\n" ,str[1].yoko);
printf("%f\n" ,str[1].takasa);
return 0;
}
コンパイル結果
1
2.000000
3.000000
4.000000
2
4.000000
5.000000
6.000000
🍊for文を用いて🍊
以下のプログラムのように
#include <stdio.h>
typedef struct Cube{
int no;
float tate;
float yoko;
float takasa;
}Cube;
int main(void)
{
Cube str[2];
str[0].no=1;
str[0].tate=2.0;
str[0].yoko=3.0;
str[0].takasa=4.0;
str[1].no=2;
str[1].tate=4.0;
str[1].yoko=5.0;
str[1].takasa=6.0;
int i;
for(i=0;i<2;i++){
printf("%d\n" ,str[i].no);
printf("%f\n" ,str[i].tate);
printf("%f\n" ,str[i].yoko);
printf("%f\n" ,str[i].takasa);
/*ここの部分ですね
for文を用いてprintf表示の命令文の簡略化に成功しました。*/
}
return 0;
}
コンパイル結果
1
2.000000
3.000000
4.000000
2
4.000000
5.000000
6.000000
🍓printf出力表示の命令文を簡略化することができました 🍓
ソーラー「
str[0].no=1;
str[0].tate=2.0;
str[0].yoko=3.0;
str[0].takasa=4.0;
str[1].no=2;
str[1].tate=4.0;
str[1].yoko=5.0;
str[1].takasa=6.0;
この部分は簡略化できないかな?」
アレサ「確かに
str[0].no=1;
str[0].tate=2.0;
str[0].yoko=3.0;
str[0].takasa=4.0;
str[1].no=2;
str[1].tate=4.0;
str[1].yoko=5.0;
str[1].takasa=6.0;
のように
立方体cube1の数値データ
立方体cube1の数値データ
NO 1
縦 2.0
横 3.0
高さ 4.0
立方体cube2の数値データ
NO 2
縦 4.0
横 5.0
高さ 6.0
を格納していくのは
手間ですね
そうなんです。簡略化表記する方法はあるのです。
Cube str[2];
str[0].no=1;
str[0].tate=2.0;
str[0].yoko=3.0;
str[0].takasa=4.0;
str[1].no=2;
str[1].tate=4.0;
str[1].yoko=5.0;
str[1].takasa=6.0;
の部分を
簡略化して
Cube str[2]={{1,2.0,3.0,4.0},{2,4.0,5.0,6.0}};
と表記することができます。
このように表記した場合でも
Cube str[2]により
生成される
配列変数
str[0].no
str[0].tate
str[0].yoko
str[0].takasa
str[1].no
str[1].tate
str[1].yoko
str[1].takasa
に数値データを格納することができます。
そして
{{1,2.0,3.0,4.0},{2,4.0,5.0,6.0}}
の中の
{1,2.0,3.0,4.0}
の
1
2.0
3.0
4.0
は
str[0]のメンバ変数
str[0].no
str[0].tate
str[0].yoko
str[0].takasa
に格納され
{2,4.0,5.0,6.0}
の
2
4.0
5.0
6.0
は
str[1]のメンバ変数
str[1].no
str[1].tate
str[1].yoko
str[1].takasa
に格納されます。
さらに
構造体Cube型の配列
Cube str[2]の[]のなかの要素数2は省略して
Cube str[]={{1,2.0,3.0,4.0},{2,4.0,5.0,6.0}};
と表記することができます。
{{1,2.0,3.0,4.0},{2,4.0,5.0,6.0}}のなかの
{1,2.0,3.0,4.0}👈1
{2,4.0,5.0,6.0}👈2
の数にあわせて
str[]の要素数は2と自動的に設定されます。
この表記法をもちいてプログラムをシンプルに書き換えると
#include <stdio.h>
typedef struct Cube{
int no;
float tate;
float yoko;
float takasa;
}Cube;
int main(void)
{
Cube str[]={{1,2.0,3.0,4.0},{2,4.0,5.0,6.0}};
int i;
for(i=0;i<2;i++){
printf("%d\n" ,str[i].no);
printf("%f\n" ,str[i].tate);
printf("%f\n" ,str[i].yoko);
printf("%f\n" ,str[i].takasa);
}
return 0;
}
コンパイル結果
1
2.000000
3.000000
4.000000
2
4.000000
5.000000
6.000000
ソーラー 「めっちゃ😺、プログラムが短くなった。」
アレサ「ほんとうですね。
この構造体型の配列に数値データを格納する方法は
大変重宝するとおもわれますの。
では
再びfor文の部分にもどります。
格納した全てのデータを
int i;
for(i=0;i<2;i++){
printf("%d\n" ,str[i].no);
printf("%f\n" ,str[i].tate);
printf("%f\n" ,str[i].yoko);
printf("%f\n" ,str[i].takasa);
この7行で表示できるのは
大変効率がよいのです。
立方体が
cube1
cube2
cube3
.
.
.
.
.
cube1000000
と1000000個あっても
全ての立方体の
NO
縦
横
高さ
のデータを表示するのに
次の命令文
int i;
for(i=0;i<100000;i++){
printf("%d\n" ,str[i].no);
printf("%f\n" ,str[i].tate);
printf("%f\n" ,str[i].yoko);
printf("%f\n" ,str[i].takasa);
の
7行で済んでしまうのです。
🍒このように
🍓簡単に多種類の整数値や実数値データをメモリに格納し🍓
🍊簡単に格納された数値データをprintf表示できる🍊
これこそが さきのエピソードでものべましたように
(*´▽`*)😊(*´▽`*)😊(*´▽`*)😊(*´▽`*)😊(*´▽`*)😊
構造体型の配列宣言を行い
構造体の配列を作製して
複数の構造体変数のメンバ変数に格納された数値データを
構造体型の配列に格納する
(*´▽`*)😊(*´▽`*)😊(*´▽`*)😊(*´▽`*)😊(*´▽`*)😊
理由なのです。🍒
構造体の配列をつかえば
コンピュータに格納された
市の 'すべての住人' の生年月日などの数値データも
わずかな命令文ですべて表示することができます。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます