複数の立方体の数値データをメモリに格納、それらの数値データを”文章”にくみこんでコマンドプロンプト画面にprintf出力表示してみましょう

アレサ 「さて、さて


数値1をメモリに格納  


文章に組み込んでコマンドプロンプト画面にprintf出力表示し


さらに


数値1から10をメモリに格納


文章に組み込んでコマンドプロンプト画面にprintf出力表示し


そして


さらに


立方体cube1

縦1.0

横2.0

高さ3.0

の数値データをメモリに格納、


文章に組み込んでコマンドプロンプト画面にprintf出力表示してきました


素敵な4つの


      🌞 データ(数値、文字)のいれものさん 🌞


変数

配列

構造体

構造体の配列

さんたち  




今日のお題は・・・・・


      

              立方体cube1


               縦1.0

               横2.0

               高さ3.0


              立方体cube2

                

               縦4.0

               横5.0

               高さ6.0


              立方体cube3

                

               縦7.0

               横8.0

               高さ9.0



           の数値データをメモリに格納、


            その数値データを


              

          🍑🍑🍑文章に組み込んで🍑🍑🍑       



立方体cube1は縦1.0、横2.0、高さ3.0の大きさです

立方体cube2は縦4.0、横5.0、高さ6.0の大きさです

立方体cube3は縦7.0、横8.0、高さ9.0の大きさです


コマンドプロンプト画面に

printf出力表示していただきたいと思いま~す。😊」


ソーラー「いやぁ 壮観だね~」


アレサ「さあ


変数

配列

構造体

構造体の配列 さんでは


どのような 違いがプログラムにでてくるのでしょうか?


楽しみです」



配列「さあ、数値、こい~こい~」



アレサ「ふふふっ 配列さん、いつも元気ですの。


それでは 


1人目の方 変数さん、お願いします。」


変数「それでは、変数いきま~す。」


#include <stdio.h>


int main(void)

{

float a=1.0;

float b=2.0;

float c=3.0;

float d=4.0;

float e=5.0;

float f=6.0;

float g=7.0;

float h=8.0;

float i=9.0;

printf("立方体cube1は縦%f、横%f、高さ%fの大きさです\n",a,b,c);

printf("立方体cube2は縦%f、横%f、高さ%fの大きさです\n",d,e,f);

printf("立方体cube3は縦%f、横%f、高さ%fの大きさです\n",g,h,i);

return 0;

}


コンパイル結果


立方体cube1は縦1.000000、横2.0000000、高さ3.000000の大きさです

立方体cube2は縦4.000000、横5.0000000、高さ6.000000の大きさです

立方体cube3は縦7.000000、横8.0000000、高さ9.000000の大きさです


変数「どお~う いい感じ?」


アレサ「はいっ、変数さん、数値データの格納も


数値データを文章に組み込んでのprintf出力表示🍑もも


大変分かりやすいのですの


今日は 日頃のお働きに感謝して


私がお好み焼きを目の前で作ってまいります。」


変数 「あっ鉄板があらわれた。」


アレサ 「あつあつをお召し上がりください


その場でご賞味いただけます。


ごゆっくりとおくつろぎください。」


ごっついお好み焼きがジュージューと


音を立てながら焼きあがる。


変数 「お好み焼きをいただきま~す。はぐっはぐ


こんなお料理までたべさせてもらって~~~💖


し・あ・わ・せ😝」


アレサ「お次は


配列さ~ん、 お願いします。」


配列 「 数値、数値 数値、数値、数値、数値 」


#include <stdio.h>


int main(void)

{

float str[3];

str[0]=1.0;

str[1]=2.0;

str[2]=3.0;

float str1[3];

str1[0]=4.0;

str1[1]=5.0;

str1[2]=6.0;

float str2[3];

str2[0]=7.0;

str2[1]=8.0;

str2[2]=9.0;


/*このような簡略化表現もありますの

float str[]={1.0,2.0,3.0};

float str1[]={4.0,5.0,6.0};

float str2[]={7.0,8.0,9.0};

*/

printf("立方体cube1は縦%f、横%f、高さ%fの大きさです\n",str[0],str[1],str[2]);

printf("立方体cube2は縦%f、横%f、高さ%fの大きさです\n",str1[0],str1[1],str1[2]);

printf("立方体cube3は縦%f、横%f、高さ%fの大きさです\n",str2[0],str2[1],str2[2]);


return 0;

}

コンパイル結果


立方体cube1は縦1.000000、横2.0000000、高さ3.000000の大きさです

立方体cube2は縦4.000000、横5.0000000、高さ6.000000の大きさです

立方体cube3は縦7.000000、横8.0000000、高さ9.000000の大きさです


アレサ「お見事です


配列さん そんなあなたに今日は


ミートスパゲッティをお作りさせていただきました。」


配列 「あっありがと


つい数値を格納したくて先走ることがおおいんだけど・・・


検証たのしかったね。


くるくるっと


おっ美味しい~~」


アレサ

「ピザとサンドウィッチも手作りいたしました。


配列

ああ~


いい~


うう~


嬉しいです。💖」


アレサ「配列さん、ありがとう」


アレサ 「では次の方


構造体さん お願いします。」



構造体 「


今回のお題は


      

               立方体cube1


                縦1.0

                横2.0

                高さ3.0


               立方体cube2

                

                縦4.0

                横5.0

                高さ6.0


立方体cube3

                

                縦7.0

                横8.0

                高さ9.0



           の数値データを目盛りに格納、


              文章に組み込んで


      コマンドプロンプト画面にprintf出力表示するんだね。



おまかせ、(^_^)/おまかせ\(^o^)/



#include <stdio.h>


typedef struct SubetenosuutiData{

float a;

float b;

float c;

float d;

float e;

float f;

float g;

float h;

float i;

}SubetenosuutiData;


int main(void){

SubetenosuutiData subetenosuutiData;

subetenosuutiData.a=1.0;

subetenosuutiData.b=2.0;

subetenosuutiData.c=3.0;

subetenosuutiData.d=4.0;

subetenosuutiData.e=5.0;

subetenosuutiData.f=6.0;

subetenosuutiData.g=7.0;

subetenosuutiData.h=8.0;

subetenosuutiData.i=9.0;


/*この構造体変数subetenosuutiDataの初期化の簡略化表現は


SubetenosuutiData subetenosuutiData={1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0};


となります*/


printf("立方体cube1は縦%f、横%f、高さ%fの大きさです\n",subetenosuutiData.a,subetenosuutiData.b,subetenosuutiData.c);

printf("立方体cube2は縦%f、横%f、高さ%fの大きさです\n",subetenosuutiData.d,subetenosuutiData.e,subetenosuutiData.f);

printf("立方体cube3は縦%f、横%f、高さ%fの大きさです\n",subetenosuutiData.g,subetenosuutiData.h,subetenosuutiData.i);

return 0;

}


コンパイル結果


立方体cube1は縦1.000000、横2.0000000、高さ3.000000の大きさです

立方体cube2は縦4.000000、横5.0000000、高さ6.000000の大きさです

立方体cube3は縦7.000000、横8.0000000、高さ9.000000の大きさです



ソーラー「今度は

構造体SubetenosuutiDataに

変数宣言

float a;

float b;

float c;

float d;

float e;

float f;

float g;

float h;

float i;

を取り込んできんだね


これで、この構造体の構造体変数宣言

SubetenosuutiData subetenosuutiData;

をおこない


構造体変数

subetenosuutiData

を作製すると


構造体変数

subetenosuutiDataは

9つのメンバ変数

subetenosuutiData.a

subetenosuutiData.b

subetenosuutiData.c

subetenosuutiData.d

subetenosuutiData.e

subetenosuutiData.f

subetenosuutiData.g

subetenosuutiData.h

subetenosuutiData.i

をもつことになります。


ですので


9個の実数値を


構造体変数subetenosuutiDataの


メンバ変数に

subetenosuutiData.a=1.0;

subetenosuutiData.b=2.0;

subetenosuutiData.c=3.0;

subetenosuutiData.d=4.0;

subetenosuutiData.e=5.0;

subetenosuutiData.f=6.0;

subetenosuutiData.g=7.0;

subetenosuutiData.h=8.0;

subetenosuutiData.i=9.0;


と数値を


格納できるようになるんだね。」



アレサ「今回、構造体さんは、


構造体変数の9つのメンバ変数に格納された数値データを


9つの%f出力変換指定子をつかって


ひとつずつ文章に組み込んでprintf出力表示されました。」


構造体 「こんなんでよかったかな


僕はたくさんの変数をメンバ変数として格納しているけど


ようは変数をまとめてるだけで



メンバ変数に格納されている数値データを引き出すには


printf("立方体cube1は縦%f、横%f、高さ%fの大きさです\n",subetenosuutiData.a,subetenosuutiData.b,subetenosuutiData.c);

printf("立方体cube2は縦%f、横%f、高さ%fの大きさです\n",subetenosuutiData.d,subetenosuutiData.e,subetenosuutiData.f);

printf("立方体cube3は縦%f、横%f、高さ%fの大きさです\n",subetenosuutiData.g,subetenosuutiData.h,subetenosuutiData.i);

の命令文をみてもわかるように


ひとつずつ

構造体変数subetenosuutiDataの

メンバ変数に格納されている数値を%f出力変換指定子をつかって


printf出力表示しないといけない。


これは


普通のfloat型の変数に格納されている数値を

%f出力変換指定子をつかって

printf出力表示するときと


全く同じかな。


だから


構造体を作製し


構造体変数のメンバ変数に数値を格納しても


格納された数値を取り出す手間は


普通の変数から数値を取り出すときと変わらないんだ~」


アレサ「ありがとうございますの


構造体さん


今日は


熱々の麻婆豆腐とチャーハン


それにラーメンをおもちいたしました。」


構造体さん 「お寿司につづいて


この ラーメン んまいねえ。


どうやって こんなにおいしくつくったの


今まで食べたことない


麻婆豆腐もまるで違う


この料理のつくり方の方が数値格納より、


ずぅ~っと神秘なんじゃない?😊」


アレサ「喜んでいただけて 嬉しいですの」



アレサ「ではでは 


お次は構造体の配列さん、お願いします」



構造体の配列さん

立方体cube1


立方体cube2


立方体cube3・・・か・・・


ついにきた\(^o^)/・・・


今度は


構造体の配列宣言で


構造体型の配列変数を3つ作りますよ~


#include <stdio.h>


typedef struct SubetenosuutiData {

float a;

float b;

float c;

}SubetenosuutiData ;


int main(void)

{


SubetenosuutiData str[3];


/*構造体SubetenosuutiData型の配列変数str[0],str[1],str[2]を作製しました。


⇩そしてstr[0],str[1],str[2]の各メンバ変数に立方体cube1,cube2,cube3の数値データを格納していきます*/


str[0].a=1.0;

str[0].b=2.0;

str[0].c=3.0;

str[1].a=4.0;

str[1].b=5.0;

str[1].c=6.0;

str[2].a=7.0;

str[2].b=8.0;

str[2].c=9.0;

/*この初期化の簡略化表現は


SubetenosuutiData str[]={{1.0,2.0,3.0},{4.0,5.0,6.0},{7.0,8.0,9.0}};


となります。


str[0]、str[1]、str[2]のメンバ変数に格納される数値ごとに{}が{}の中に


入れ子になっていますね*/



int i=0;

for(i=0;i<3;i++)

printf("立方体cube%dは縦%f、横%f、高さ%fの大きさです\n",i+1,str[i].a,str[i].b,str[i].c);


return 0;

}


コンパイル結果


立方体cube1は縦1.000000、横2.0000000、高さ3.000000の大きさです

立方体cube2は縦4.000000、横5.0000000、高さ6.000000の大きさです

立方体cube3は縦7.000000、横8.0000000、高さ9.000000の大きさです


アレサ「構造体型の配列さんは


構造体型の配列宣言


Suutinoiremono str[3];


により


構造体型の配列変数


str[0],str[1],str[2]を作りだし


str[0],str[1],str[2]のなかの


各メンバ変数

str[0].a

str[0].b

str[0].c

str[1].a

str[1].b

str[1].c

str[2].a

str[2].b

str[2].c


str[0].a=1.0;

str[0].b=2.0;

str[0].c=3.0;

str[1].a=4.0;

str[1].b=5.0;

str[1].c=6.0;

str[2].a=7.0;

str[2].b=8.0;

str[2].c=9.0;

立方体cube1,cube2,cube3の数値データを格納、


そして


 

   🐎for文をつかってprintf文を簡単にまとめて記述をおこない🐎



    格納された数値データをprintf出力表示をされたのです。」


ソーラー「ついにきた。

変数

配列

構造体

までは

格納された数値は

printf出力表示は似たような方法で同じくらい


手間をかけて行われていたけど


        🌰構造体型の配列🌰


ここで

格納された数値のprintf出力表示方法に違いがでてきた。でてきた。


これなら


たとえ立方体が100000個あっても


100000個すべての数値データを格納後


for文をつかって


int i=0;

for(i=0;i<100000;i++)

printf("立方体cube%dは縦%f、横%f、高さ%fの大きさです\n",i+1,str[i].a,str[i].b,str[i].c);


のように


たった3行で


立方体100000個すべての

高さ

数値データを”文章に組み込んで”


コマンドプロンプト画面にprintf出力表示するプログラムを


作製できる。


便利だね。やったね。」


アレサ「構造体の配列さん、


素晴らしい技術をみせていただき、ありがとうございました。


今日は3日かけて煮込んだカレーをおもちいたしました。


サラダもご用意いたしております。


さあ、どうぞ」


山盛りごはんにカレーをよそうアレサ。


構造体の配列「いっただきま~~す


カレーをたべることができるなんて・・・


満足、満足 」


アレサ 「構造体の配列さん いつも 


お働き下さりありがとうございます。


ささやかなお礼でしたの。」