高度プログラミング演習 (07).

Slides:



Advertisements
Similar presentations
知能情報工学演習 I 第 12 回( C 言語第6 回) 課題の回答 岩村雅一
Advertisements

プログラミング演習( 2 組) 第 9 回
7/10 if 文課題 力作が多くて感心! 演習1:キーボードから2つの整数を入力し、小さい方の数字を 表示せよ。
コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力
計算技術研究会 C言語講座 第3回 Loops (for文 while文).
解答 1 複素数を構造体として定義し、二つの複素数の積(結果は複素数)を返す 関数 を定義せよ。
第10回関数2 (関数の利用と変数のスコープ).
文字配列の課題1 解説 /* a */ #include <stdio.h> main( ) { int i;
2009/10/9 良いアルゴリズムとは 第2講: 平成21年10月9日 (金) 4限 E252教室 コンピュータアルゴリズム.
プログラミング演習(2組) 第12回
プログラミング論 I 関数の再帰呼び出し
C言語講座 第4回 ポインタ.
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
問題 1 キーボードから入力した数の合計を計算するプログラムを 作成せよ。最初に、何個の数を入力するかその数を入力 するようにする。
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月6日、H.16(‘04)] 今日のメニュー 1 前回の課題の復習
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
プログラミング入門2 第2回 複合文、繰り返し 情報工学科 篠埜 功.
演習問題の答え #include #include #define NUM 5 typedef struct { // 構造体の定義 float shincho; // 身長 float taiju; // 体重 } shintai; void hyouji(shintai.
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング2 関数
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
繰り返し計算 while文, for文.
関数の定義.
第10回関数 Ⅱ (ローカル変数とスコープ).
プログラミング2 関数の再帰呼び出し
高度プログラミング演習 (03).
知能情報工学演習I 第12回(後半第6回) 課題の回答
今までの練習問題の復習.
講義では、Cプログラミングの基本を学び 演習では、やや実践的なプログラミングを通して学ぶ
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
高度プログラミング演習 (02).
高度プログラミング演習 (08).
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
高度プログラミング演習 (05).
高度プログラミング演習 (05).
関数の再帰呼び出しとは ハノイの塔 リダイレクト レポート課題
関数への道.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
演習0 func0, func1, func2を作成せよ. main()関数の中で,func0()を呼び出しを実行せよ.
演習07-0 “Hello\n” “World!\n”と
Cプログラミング演習資料.
プログラミング序論演習.
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
知能情報工学演習I 第11回( C言語第5回) 課題の回答
高度プログラミング演習 (09).
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
高度プログラミング演習 (11).
第2章 printf(“変数と入力”); scanf(“%d”,&num);
ループだよ!難しいよ! 第5章 while(ループ);.
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
演習00-0 “Hello\n” “World!\n”と
プログラミング2 関数の再帰呼び出し
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
知能情報工学演習I 第12回( C言語第6回) 課題の回答
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
関数と再帰 教科書13章 電子1(木曜クラス) 2005/06/22(Thu.).
プログラミング演習I 2003年6月11日(第9回) 木村巌.
モバイルプログラミング第2回 C言語の基礎 (1).
第10回 関数と再帰.
知能情報工学演習I 第11回(後半第5回) 課題の回答
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
プログラミング演習I 補講用課題
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
プログラミング 3 ポインタ(1).
高度プログラミング演習 (10).
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
ファーストイヤー・セミナーⅡ 第10回 if文による選択処理(2).
Presentation transcript:

高度プログラミング演習 (07)

演習問題 月と日を入力して、それが1月1日から何一目であるか表示するプログラムを作成せよ。(ただし閏年は考慮しないこととする。) 入力された2つの月日を求めるプログラムを作成せよ。(ただし、閏年は考慮しないこととする。)

#include<stdio.h> int md(int m,int d) { switch (m) case 12: d = d + 30; case 11: d = d + 31; case 10: case 9: case 8: case 7: case 6: main() { int m0,d0,m1,d1; scanf("%d %d %d %d",&m0,&d0,&m1,&d1); printf("%d\n",md(m1,d1)-md(m0,d0)); } case 5: d = d + 30; case 4: d = d + 31; case 3: d = d + 28; case 2: case 1: d = d; } return d;

関数の中で引数を変更する #include <stdio.h> void foo3(int x, int y) { x=3; } void foo4(int *x, int *y) { *x=6; *y=8; } void main() int a=0,b=0; foo3(a,b); printf(“%d %d\n”,a,b); foo4(&a,&b);

問題 数の並び替えをしてみよう。 4,1,2,3,6 を小さい順に並び替える。

4 1 2 3 6 1 4 2 3 6 1 2 4 3 6 1 2 3 4 6 手順 最小値を見つけ、これを左端にもってくる。 二番目に小さい値を見つけ、これを左から二番目におく。 三番目に。。。 4 1 2 3 6 最小値を見つけ、これを左端にもってくる。 for(i=1;i<n;i++){ もし data[i] が data[0] よりも小さければ入れ替える。 } 2つの数字を入れ替える関数を作れば便利。 my_swap(&a,&b) 2番目、3番目に小さい数字に対して、「最小値を見つけ、これを左端にもってくる。 」ような処理をするには、どうすればいいか? 1 4 2 3 6 1 2 4 3 6 1 2 3 4 6

#include <stdio.h> void my_swap(int *a,*b) { } void my_sort() void main() 並び替えるデータを乱数で作成する。; /* 並び替えをする関数を呼び出す。 */ my_sort(); 並び替えた結果を出力する。;

再帰関数 再帰 再帰関数 動作の対象が動作主そのもの。 彼は自分のことが好きだ。 He loves himself. 主語 = 目的語 彼は自分のことが好きだ。 He loves himself. 再帰関数 自分の中で自分自身を呼び出している関数。 void foo() { ………… foo(); }

再帰関数を使う例(1) n の階乗 n! = n × n-1 × n-2 …. × 1 f(n) f(n-1) f(n-2) f(0) 1*1 include <stdio.h> int fact(int n) { if(n==0) return 1;    else return n * fact(n-1); } main() { int n; scanf("%d",&n); printf("%d ! = %d\n",n,fact(n)); }

再帰関数を使う例(2) 10進表記の数 num を x進法表記するプログラム。 num を x で割ったあまり桁の数字になる。 一番最初のあまりが一番小さい桁 num が x よりも小さくなればそれが一番大きな桁になる。

10進表記 → 2進表記 #include <stdio.h> void d2x(int num,int x) { 10進表記 → 2進表記 #include <stdio.h> void d2x(int num,int x) { if(num<x){ printf("%d",num); return; } d2x(num/x,x); printf("%d",num%x); void main() int num,x; scanf("%d %d",&num,&x); d2x(num,x); printf("\n"); 1. num 2. num は 2 よりも大きい 5. num を表示する 3. num を 2 で割る 4. num % 2 を表示する 1. 2. 3. 2. 3. … 5. 2. 3. 4. 3. 4

練習問題 与えられた2数のべき乗を計算する関数を再帰関数を用いて作成せよ。

演習問題 ユークリッドの互除法を用いて最大公約数を求める関数を作成せよ。 ヒント:24と64の最大公約数 64%24 → 16 64%24 → 16 24%16 → 8 16%8 → 0