プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

Similar documents
プログラミング基礎

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

PowerPoint プレゼンテーション

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

Microsoft Word - no12.doc

Microsoft PowerPoint - lec10.ppt

Prog1_15th

Microsoft Word - no15.docx

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do

演算増幅器

PowerPoint Template

Prog1_6th

PowerPoint プレゼンテーション

プログラミング基礎

プログラミング基礎

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

プログラミングI第10回

Taro-リストⅠ(公開版).jtd

Microsoft PowerPoint - kougi9.ppt

memo

memo

Prog1_10th

PowerPoint プレゼンテーション

program7app.ppt

Microsoft Word - no206.docx

Prog1_12th

Microsoft Word - Cプログラミング演習(8)

PowerPoint プレゼンテーション

kiso2-09.key

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

PowerPoint プレゼンテーション

Microsoft Word - no13.docx

プログラミング実習I

情報処理演習 B8クラス

Microsoft PowerPoint - 説明2_演算と型(C_guide2)【2015新教材対応確認済み】.pptx

Microsoft Word - Cプログラミング演習(12)

Microsoft Word - Cプログラミング演習(11)

2006年10月5日(木)実施

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

Taro-ポインタ変数Ⅰ(公開版).j

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

演習課題No12

Microsoft PowerPoint - 13th.ppt [互換モード]

Microsoft Word - no202.docx

Microsoft Word - Cプログラミング演習(9)

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

PowerPoint プレゼンテーション

PowerPoint Presentation

スライド 1

gengo1-11

Microsoft Word - Cプログラミング演習(10)

Cプログラミング1(再) 第2回

新・明解C言語 ポインタ完全攻略

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

memo

Microsoft PowerPoint - 計算機言語 第7回.ppt

C¥×¥í¥°¥é¥ß¥ó¥° ÆþÌç

ポインタ変数

memo

Microsoft PowerPoint - program.ppt [互換モード]

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

1. 入力した正の整数を降順に並べ換えて出力するプログラムを作成せよ プログラムは個別にコンパイルし make コマンドで実行すること 入力データは 50 以下とし 以下の数が混在しているとする 16 進数 : 先頭 1 文字が x または X( エックスの小文字か大文字 ) 8 進数 : 先頭 1

PowerPoint Presentation

Microsoft Word - no103.docx

Microsoft PowerPoint - 12.ppt [互換モード]

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

Microsoft PowerPoint - 05.pptx

プログラミング基礎

<4D F736F F D20438CBE8CEA8D758DC03389F0939A82C282AB2E646F63>

Microsoft PowerPoint pptx

PowerPoint プレゼンテーション

memo

Microsoft Word - no204.docx

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

第1回 プログラミング演習3 センサーアプリケーション

gengo1-2

PowerPoint プレゼンテーション

Microsoft PowerPoint - 説明3_if文switch文(C_guide3)【2015新教材対応確認済み】.pptx

Microsoft PowerPoint - 13.ppt [互換モード]

‚æ4›ñ

C言語入門

Taro-スタック(公開版).jtd

Microsoft PowerPoint - 説柔5_間勊+C_guide5ï¼›2015ã•’2015æŒ°æŁŽæš’å¯¾å¿œç¢ºèª“æ¸‹ã†¿ã•‚.pptx

02: 変数と標準入出力

C 言語講座 Vol 年 5 月 29 日 CISC

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

講習No.12

kiso2-06.key

02: 変数と標準入出力

Microsoft PowerPoint - 12.ppt [互換モード]

Taro-リストⅢ(公開版).jtd

ファイル入出力

Microsoft Word - 3new.doc

計算機プログラミング

ファイル入出力

Microsoft PowerPoint - prog04.ppt

Transcription:

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; Point; 問題 18. 問題 17 の Point を用いて 2 点の座標を入力するとその 2 点間の距 離を表示するプログラムを作成せよ 平方根は sqrt() を用いて計算する #include <math.h> Point p[2]; int i; for (i = 0; i < 2; i++){ scanf("%lf %lf", (a) ); printf("%f n", sqrt( (b) ); return 0; 問題 19. 長方形のデータを保持する構造体 Rect を作成せよ Rect には左上 の x 座標 y 座標 横の長さ width 縦の長さ height がある データは全て double 型である typedef struct { (a) ; (b) ; (c) ; (d) ; Rect;

問題 20. 次のプログラムは学生 3 名の年齢 身長 体重をキーボードから入力し それを画面に出力するプログラムである 空白部分を埋めてプログラムを完成 せよ #include <stdlib.h> #define MAX_NUMBER ( (a) ) /* 学生の人数 */ typedef struct{ int age; /* 年齢 */ double height; /* 身長 */ double weight; /* 体重 */ Student; Student s[max_number]; int i; for (i = 0; i < MAX_NUMBER; i++){ scanf("%d %lf %lf", (b) ); for (i = 0; i < (c) ; i++){ printf("%d 番目の学生の年齢 =%d, 身長 =%f, 体重 =%f です n", (d) ); return EXIT_SUCCESS; 問題 21. 2 つの整数を入れ替える swap 関数を作成せよ void swap( int *a, int *b ){ int temp = (a) ; (b) ; (c) ;

問題 22. 問題 17 の Point 型変数の a の内容を Point 型変数 b に代入する関 数 copypoint() を作成せよ void copypoint(point *a, Point *b){ (a) ; 問題 23. トランプゲームを作成したい スートと数を保持する構造体 Card を作成せよ 但し クラブは 0 ダイヤは 1 ハートは 2 スペードは 3 というように int 型を使って表現することとする Card 配列にクラブ A からスペード K までの 52 枚のカードデータを代入するプログラムを作成せよ #define CARD_MAX (52) typedef struct { int number; /* 数 */ int suit; /* スート */ Card; int i; Card c[card_max]; for (i = 0; i < CARD_MAX; i++){ (a) = i%13 + 1; (b) = i/13;

問題 24. 5 人の学籍番号と点数を入力し 60 点以上の点数を持つ学籍番号の みを画面に表示するプログラムを作成せよ #define NUMBER ( (a) ) typedef struct { int number; /* 学籍番号 */ int score; /* 点数 */ Student; int i; Student s[number]; for (i = 0; i < (b) ; i++){ scanf("%d %d", (c) ); for (i = 0; i < NUMBER; i++){ if ( (d) >= 60){ return 0; printf("%d n", (e) ); 問題 25. 名前の文字数を入力し それを記憶するために必要最小限なメモリを malloc() で確保した後 そのメモリに名前を記録するプログラムを作成せよ int n; char (a) ; scanf("%d", &n); /* 文字数を入力 */ p = (b) ; /* 文字列の領域を確保 */ scanf( (c) ); /* 文字列の入力 */ return 0;

問題 26. キーボードから入力された一行の文字列を s[] に格納し その長さを返す関数 getline() を作成せよ 但し s[] の配列の大きさは limit である 入力する一列の文字列は改行文字または EOF で終了している s[] の最後には改行文字がある場合は改行文字を含むこと また終端には必ずナル文字を入れること int getline( char s[], int limit){ int c, i; for (i=0; i<limit-1 && (c=getchar())!= && c!= (b) ; i++){ (c) = c; if ( c == ' n'){ s[i] = c; i++; s[i] = (d) ; return (e) ; (a) 問題 27. 問題 21 の swap() 関数を用いて number 個の要素を持つ int 配列に 入っている数値を小さい順から並べ替える関数 mysort() を作成せよ void mysort(int data[], int number){ int i,j; for (j = (a) ; j > 0; j--){ for (i = 0; (b) ; i++){ if (data[i] > data[j]){ swap( (c) );

問題 28. 10 人の学籍番号と点数を入力すると画面に学籍番号と点数を点数の 低い順から表示するプログラムを作成せよ ( 教科書 p.308-321 旧 268-283) typedef struct{ int number; int score; Student; void swap( (a), (b) ){ Student temp = *a; *a = *b; *b = temp; void sort( (c), int limit){ int i, j; for (i = 0; i < limit - 1; i++){ for (j = 1; j <= limit - 1; j++){ if (a[j-1].score > a[j].score){ swap( (d), (e) ); Student s[10]; int i; for (i = 0; i < 10; i++){ scanf("%d %d", (f), (g) ; sort( (h), (i) ); for (i = 0; i < 10; i++){ printf("%d %d n", s[i].number, s[i].score); return 0;

問題 29. int 型のデータを保持するリスト構造を実現する構造体 List を作成 せよ typedef struct List_tag{ int data; /* データ */ (a) *next; /* 次の List 構造体へのポインタ */ List; 問題 30. Point 構造体を引数として渡すと キーボードから入力した二つの数 値を x 座標 y 座標としてセットする関数を作成せよ typedef struct { Point; double x; double y; void setpoint(point *p){ scanf("%lf %lf", (a), (b) ); 問題 31. 長方形 (Rect) 構造体の縦と横の長さを mlt 倍する関数 resize() を 作成せよ typedef struct { double x; /* 左上の x 座標 */ double y; /* 左上の y 座標 */ double w; /* 横幅 */ double h; /* 縦幅 */ Rect; void resize(rect *r, double mlt){ (a) (b) *= mlt; *= mlt;

問題 32. 関数 strcmp(const char*s1, const char *s2) は文字列 s1 と文字列 s2 が一致していれば 0 を, 違う場合は 0 以外を返す関数である strcmp() を用いて キーボードから入力したパスワードが "mypasswd" なら 正しい と表示するプログラムを作成せよ char pass[] = "mypasswd"; char in[100]; scanf("%s", (a) ); if (strcmp( (b) ) == 0){ return 0; printf(" 正しい n"); 問題 33. 問題 29 の List 構造体を用いて 任意の回数だけ数字を入力したあ と 入力した順に数字を表示するプログラムを作成せよ #include <stdlib.h> void add(list *top){ List *p; if (top == NULL){ top = malloc( (a) ); top->next = (b) ; printf(" 番号を入力してください >"); scanf("%d", &top->data ); return; for (p = top; p->next!= NULL; p = p->next){ ; p->next = malloc( (a) と同じ ); p->next->next = (b) と同じ ; printf(" 番号を入力してください >"); scanf("%d", (c) ); ( 次のページにつづく )

( 問題 33 のつづき ) void printlist(list *top){ List *p; printf(" 入力した番号を順に表示します n"); for (p = top; p!= NULL; p = p->next){ printf("%d n", (d) ); int main(void){ int flag = 1; List *top = NULL; int command; while (flag){ printf(" 入力なら 1 を 終了なら 0 を入力してください >"); scanf("%d", &command); switch (command) { case 1: case 0: default: add(top); break; flag = (e) ; break; printlist(top); return EXIT_SUCCESS; fprintf(stderr," 入力番号エラー n");

問題 34. 問題 33 を拡張して任意の回数だけ数字を入力したあと 入力した番 号が存在すればその順番を表示する search() 関数を作成せよ void search(list *top){ List *p; int key; printf(" 検索したい番号を入力してください n"); scanf("%d",&key); for ( (a) ){ if ( (b) ){ printf(" 存在します n"); return; printf(" みつかりませんでした n"); int main(void){ int flag = 1; List *top = NULL; int command; while (flag){ ( 次のページにつづく ) printf(" 入力なら 1 を 全部表示なら 2 を n"); printf(" 検索なら 3 を 終了なら 0 を入力してください >"); scanf("%d", &command); switch (command) { case 1: case 2: case 3: add(top); break; printlist(top); break; search(top); break;

( 問題 34 のつづき ) case 0: default: printlist(top); return EXIT_SUCCESS; flag = 問題 33(e) と同じ ; break; fprintf(stderr," 入力番号エラー n");

問題 35. 問題 34 を拡張して入力した番号と一致するデータがあれば削除する delete() 関数を作成せよ void delete(list *top){ List *temp; List *p; int key; printf(" 削除したい番号を入力してください n"); scanf("%d",&key); if(*top == NULL){ printf(" データはありません n); return; if (top->data == key){ temp = (a) ; (a) = (b) ; free( (c) ); return; for ( p = top; p->next!= NULL ;p = p->next){ if (p->next->data == key){ temp = (d) ; (d) = (e) ; free( (f) ); return; printf(" 入力した番号はみつかりませんでした n");

最終アンケート ( プログラミング方法論 II 第 14 回 ) 15 回は本日と同様に演習を行ないます 1. 本講義 プログラミング方法論 II について 総合的な感想 悪かった点 ( 特に来年度は是 非改善すべき点 ) 良かった点 ( 特に来年も続けるべきだと考えられる点 ) について率直な意見を お願いします