C 言語講座第 5 回 構造体. 構造体とは ... 異なる型の値をまとめて新しい型とする 機能がある . つまり , 複数の変数を 1 つのまとまりにできる . 配列と違って同じ型でデータをまとめるのではな く違った型のデータをまとめられる .

Slides:



Advertisements
Similar presentations
構造体 構造体とは? 複数のデータをパックしたもの。 新しい “ 型 “ として使用できる. 構造体 キーワード struct strcut は構造体を宣言する命令。 struct { double x,y; }a,b,c; ↑ ここまでが宣 言 ← この形式で、構造体 a,b,c, を定 義.
Advertisements

第 10 回 宿題 出題日: 12 月 14 日 締切日: 12 月 21 日. 提出について 以下の場合は、出題日の出席を欠席とする 締切日を過ぎた場合 正解率が 7 割未満の場合 提出は、 PDF ファイルを印刷して、それに答 えを書いて提出すること。
プログラミング入門2 芝浦工業大学情報工学科青木 義満 第11回構造体. プログラミング入門2 2 構造体 5 人分のサッカー選手データ 全てのデータを関数に渡して,処理する場合 char name[5][256]; int assist[5]; int score[5]; void func( char.
知能情報工学演習 I 第 12 回( C 言語第6 回) 課題の回答 岩村雅一
C 言語講座 第 7 回 ポインター. メモリとアドレス(ポインターの前 に) コンピュータのメモリには 1 バイトずつ 0 番地、 1 番地、 2 番地・・・というように 住所が割り当てられている この住所をアドレスという。 メモリはデータをしまうもので それを引き出すためには メモリに番号(アドレス)を振っておけばよいな.
アルゴリズムとデータ構造 第2回 線形リスト(復習).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
プログラミング基礎I(再) 山元進.
第2章 数値の入力と変数 scanfと変数をやります.
第12回新しい型と構造体.
第13回構造体.
第12回構造体.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
基礎プログラミングおよび演習 第9回
基礎プログラミングおよび演習 第8回.
C言語講座 第4回 ポインタ.
第5回C言語講座 ~ポインタと配列.
第6章 2重ループ&配列 2重ループと配列をやります.
構造体.
演習問題の答え #include #include #define NUM 5 typedef struct { // 構造体の定義 float shincho; // 身長 float taiju; // 体重 } shintai; void hyouji(shintai.
第3回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
プログラミング 3 構造体(1).
第10回 プログラミングⅡ 第10回
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
C言語講座 第3回 ポインタ、配列.
プログラミング2 関数
プログラミング応用 printfと変数.
第11回 宿題 出題日:12月21日 締切日:1月7日(木).
Cプログラミング演習 第7回 メモリ内でのデータの配置.
精密工学科プログラミング基礎 第10回資料 (12/18実施)
プログラミング 4 記憶の割り付け.
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
知能情報工学演習I 第9回( C言語第3回) 課題の回答
プログラミング 3 構造体(2).
indentについて forやifの「中身」を右に寄せる. forやifの「外枠」は右に寄せない. int x; x = 3;
第11回 プログラミングⅡ 第11回
ゲームプログラミング講習  第3章 ゲーム作成 ブロック崩しを作ります ゲームプログラミング講習 第3章 ゲーム作成.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
疑似乱数, モンテカルロ法によるシミュレーション
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
C言語 はじめに 2016年 吉田研究室.
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
ネットワーク・プログラミング Cプログラミングの基礎.
高度プログラミング演習 (11).
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
ループだよ!難しいよ! 第5章 while(ループ);.
標準入出力、変数、演算子、エスケープシーケンス
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
知能情報工学演習I 第8回(後半第2回) 課題の回答
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
プログラミング演習II 2003年12月10日(第7回) 木村巌.
プログラミング入門2 第5回 配列 変数宣言、初期化について
第4回 配列.
情報処理Ⅱ 小テスト 2005年2月1日(火).
第2章 数値の入力と変数 scanfと変数をやります.
知能情報工学演習I 第9回(後半第3回) 課題の回答
C言語講座第5回 2017 構造体.
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
第5回 配列.
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
第1章 文字の表示と計算 printfと演算子をやります.
第13章 構造体 講習最後だよ!.
Presentation transcript:

C 言語講座第 5 回 構造体

構造体とは ... 異なる型の値をまとめて新しい型とする 機能がある . つまり , 複数の変数を 1 つのまとまりにできる . 配列と違って同じ型でデータをまとめるのではな く違った型のデータをまとめられる .

車のナンバー (int) やガソリン (double) といっ た異なる型のものをまとめ , 車という新しい 型を表せる . 例えば , 車という 構造体 … (構造体の要素) ナンバ -(int) ガソリン (double) 車種 (char)

構造体の書き方 struct 構造体の名前 { メンバ変数 ( 作りたい型の中身 ) };  main の外で定義する . ( 大抵 main の上 )  構造体の名前は何でもよいが , 最初の文字は大文 字でかく .  セミコロンをつける .

構造体の例 struct Car{ int num; // 車のナンバー double gas; // 車のガソリン }; int main(){ struct Car benz; benz.num=3421; benz.gas=18.5; struct Car audi; audi.num=5786; audi.gas=23.4; } ここで実際に Car 型の benz とい う構造体を作っている. ドット演算子というものを使う と,構造体の各要素にアクセス できる. 構造体変数名. メンバ 構造体を使うと,このように同じよ うなものを簡単に作れる. ※

※ 前ページの ※ において , 毎回 struct を書くのがたいへ んなので , typedef struct car Car; のように書くと , struct を省略できます .

演習 1 名前 (char) , 歳 (int) , 体重 (int) , 身長 (double) の要素をもった構造体を作成し , その値を乱 数で三人分表示させるプログラムを作成しな さい . ( 名前は a,b,c さんでよいので , for 文で回す際 には n=‘a’; としてやるとよい . また , 小数点以 下の乱数表示は , RAND_MAX を用いる .)

実行結果 このような実行結果にし てください. ただし,乱数なので値は 毎回変わりますが,値の 範囲などは自由に設定し て OK です.

解答例 #include #define N 3 struct perfect_human{ char name; int age; int weight; double height; }; int main() { struct perfect_human nakata[N]; perfect_human x = { 'a', 0, 0, 0 }; int a, w, i; char n; double h; srand((unsigned int)time(NULL)); for (i = 0; i < N; i++){ n = 'a'; a = rand() % 101; w = rand() % ; h = (double)80 * rand() / RAND_MAX; nakata[i] = { n + i, a, w, h }; printf("%c さん,%d 歳,%dkg,%.1lfcm\n", nakata[i].name, nakata[i].age, nakata[i].weight, nakata[i].height); } }

演習 2 演習 1 で作成したプログラムを利用し , 一番 背の高い人を調べる関数を作成して main 文で 表示させなさい .

実行結果

解答例 #include #define N 3 struct perfect_human{ char name; int age; int weight; double height; }; void tall(perfect_human *p, perfect_human *max); int main() { ・ ・ ( 演習 1 と同じのため略 ) ・ printf("\n"); tall(nakata,&x); printf(" 一番背が高いのは , %c さん,%d 歳,%dkg,%.1lfcm\n", x.name, x.age, x.weight, x.height); } void tall(perfect_human *p,perfect_human *max){ (*max).height = 0; for (int i=0; i < N; i++) { if ((*max).height < p[i].height){ *max = p[i]; } } }

今回 visual studio でコードを作ったのですが , ファイ ルを C++ のもので作ってしまい , struct を書かなくて も通る , 配列をそのまま書いているなど , C 言語では エラーが出てしまう解答例になってしまいました . すみません !!! ( 実行してみたい場合は cpp ファイルで実行してみて ください )

お疲れさまでした !!!