Taro-プログラミングの基礎Ⅱ(公
|
|
|
- れいな たけはな
- 6 years ago
- Views:
Transcription
1 0. 目次 2. プログラムの作成 2. 1 コラッツ問題 自然数 n から出発して n が偶数ならば 2 で割り n が奇数ならば 3 倍して 1 を足す操作を行う この操作を繰り返すと最後に 1 になると予想されている 問題 1 自然数 aの操作回数を求めよ 問題 2 自然数 aから bまでのなかで 最大操作回数となる自然数を求めよ 2. 2 耐久数 正整数の各桁の数字を掛け 得られた結果についても同様の操作を繰り返す すると 最後は 1 桁の数になる たとえば 77 -> 49 -> 36 -> 18 -> 8 より 操作回数は 4 となる この操作回数を耐久数という 問題 1 正整数 n を複数個読み込み それぞれの耐久数を求めよ ただし データの終わりは 0 とする 問題 2 正整数 b( 10) 以下の耐久数を求めよ 2. 3 ピタゴラス数 正整数 a,b,c について a 2 + b 2 = c 2 ( 1 a b c) とする ( このような正整数 a,b,c をピタゴラス数という ) 問題 1 c 2 n を満たすピタゴラス数をすべて求めよ 桁の正整数 n において 各桁の数字を大きい順に並べ替えた数から小さい順に並べ替えた数を引く この操作を繰り返すと 同じ数字からなる 4 桁の数以外の正整数から始めると 6174 になることが知られている 正整数をいくつか読込み それぞれについて 6174 になるまでの回数を求めよ たとえば で 3 回となる ただし データの最後は 0 とする - 1 -
2 2. プログラムの作成 2. 1 コラッツ問題 自然数 n から出発して n が偶数ならば 2 で割り n が奇数ならば 3 倍して 1 を足す操作を行う この操作を繰り返すと最後に 1 になると予想されている たとえば 操作回数 7 回で 1 となる 自然数 (1 n 100) の操作回数 n 回数 n 回数 n 回数 n 回数 n 回数 n=97 の場合
3 問題 1 自然数 a の操作回数を求めよ 考え方 定義通り プログラム (a211.c) 1 /* << a211.c >> */ 2 #include <stdio.h> 3 #include <stdlib.h> 4 #define INTMAX /* 最大正整数 */ 5 6 int main() { 7 int a, /* 自然数 a */ 8 count, /* 操作回数 */ 9 t; /* 自然数 aの読み込み */ 12 scanf("%d",&a); /* 初期設定 */ 15 count = 0; /* 自然数 aの操作回数 countを求める */ 18 t = a; 19 while( t!= 1 ) { 20 count++; 21 if( t%2 == 0 ) { 22 t = t/2; 23 } else { 24 /* オーバーフロー処理 */ 25 if( t > (INTMAX-1)/3 ) { 26 printf(" オーバーフロー \n"); exit(1); 27 } 28 t = 3*t+1; 29 } 30 } /* 結果出力 */ 33 printf("a=%d count=%d\n",a,count); 34 } 実行結果 % cc a211.c 101 a=101 count= a= count= オーバーフロー - 3 -
4 問題 2 自然数 a から b までのなかで 最大操作回数となる自然数を求めよ 考え方 1 定義通り プログラム (a212a.c) 1 /* << a212a.c >> */ 2 #include <stdio.h> 3 #include <stdlib.h> 4 #define INTMAX /* 最大正整数 */ 5 6 int main() { 7 int a,b, /* 自然数 a,b */ 8 count, /* 操作回数 */ 9 m, /* 最大操作回数となる自然数 */ 10 max, /* 最大操作回数 */ 11 n, /* 自然数 */ 12 t; /* 自然数 a,bの読み込み */ 15 scanf("%d%d",&a,&b); /* 初期設定 */ 18 max = 0; /* 自然数 a 以上 b 以下の最大操作回数を求める */ 21 for( n=a; n<=b; n++ ) { 22 /* 自然数 nの操作回数 countを求める */ 23 t = n; 24 count = 0; 25 while( t!= 1 ) { 26 count++; 27 if( t%2 == 0 ) { 28 t = t/2; 29 } else { 30 /* オーバーフロー処理 */ 31 if( t > (INTMAX-1)/3 ) { 32 printf("%d オーバーフロー \n",t); exit(1); 33 } 34 t = 3*t+1; 35 } 36 } /* 最大操作回数の更新 mは最大操作回数となる自然数 */ 39 if( count > max ) { 40 max = count; m = n; 41 } - 4 -
5 42 } /* 結果出力 */ 45 printf("%d~ %dにおいて %dで最大操作回数 %d\n",a,b,m,max); 46 } 実行結果 % cc a212a.c ~ 100 において 97 で最大操作回数 ~ 1000 において 871 で最大操作回数 ~ において 6171 で最大操作回数 オーバーフロー 実行時間 % cc a212a.c % time./a.out ~ において で最大操作回数 u 0.002s 0: % 0+0k 0+0io 0pf+0w - 5 -
6 考え方 2 考え方 1 を改良して すでに得られた操作回数を配列に保存し 他の自然数の操作回数を求めるときに利用する プログラム (a212b.c) 1 /* << a212b.c >> */ 2 #include <stdio.h> 3 #include <stdlib.h> 4 #define INTMAX /* 最大正整数 */ 5 #define MAX 1000 /* 配列の最大要素数 */ 6 7 int main() { 8 int a,b, /* 自然数 a,b */ 9 c[max+1], /* 1 n MAXについて操作回数を保存する配列 */ 10 count, /* 操作回数 */ 11 m, /* 最大操作回数となる自然数 */ 12 max, /* 最大操作回数 */ 13 n, /* 自然数 */ 14 t; /* 自然数 a,bの読み込み */ 17 scanf("%d%d",&a,&b); /* 初期設定 */ 20 for( n=1; n<=max; n++ ) { c[n] = 0; } 21 max = 0; /* 自然数 a 以上 b 以下の最大操作回数を求める */ 24 for( n=a; n<=b; n++ ) { 25 /* 自然数 nの操作回数 countを求める */ 26 t = n; count = 0; 27 while( t!= 1 ) { 28 count++; 29 if( t%2 == 0 ) { 30 t = t/2; 31 } else { 32 /* オーバーフロー処理 */ 33 if( t > (INTMAX-1)/3 ) { 34 printf("%d オーバーフロー \n",t); exit(1); 35 } 36 t = 3*t+1; 37 } /* すでに得られた結果を利用する */ 40 if( t <=MAX ) { 41 if( c[t] > 0 ) { 42 count = count + c[t]; break; 43 } - 6 -
7 44 } 45 } 46 if( n <= MAX ) { c[n] = count; } /* 最大操作回数の更新 */ 49 if( count > max ) { 50 max = count; m = n; 51 } 52 } /* 結果出力 */ 55 printf("%d~ %dにおいて %dで最大操作回数 %d\n",a,b,m,max); 56 } 実行結果 % cc a212b.c ~ 1000 において 871 で最大操作回数 ~ において 6171 で最大操作回数 ~ において で最大操作回数 350 実行時間 % cc a212a.c % time./a.out ~ において で最大操作回数 u 0.000s 0: % 0+0k 0+0io 0pf+0w - 7 -
8 2. 2 耐久数 正整数の各桁の数字を掛け 得られた結果についても同様の操作を繰り返す すると 最後は 1 桁の数になる たとえば 77 -> 49 -> 36 -> 18 -> 8 より 操作回数は 4 となる この操作回数を耐久数という 77 --> 7 7 = > 4 9 = > 3 6 = > 1 8 = 8 問題 1 正整数 a を複数個読み込み それぞれの耐久数を求めよ ただし データの終わりは 0 とする プログラム (a221.c) 1 /* << a221.c >> */ 2 #include <stdio.h> 3 4 int main() { 5 int a, /* 正整数 a */ 6 d, /* 正整数 nの各桁の数字 */ 7 m, /* 各桁の積 */ 8 count; /* 操作回数 */ 9 10 while( 1 ) { 11 /* 正整数 aの読み込み */ 12 scanf("%d",&a); 13 if( a <= 0 ) { break; } /* 初期設定 */ 16 count = 0; /* 耐久数の計算 */ 19 printf("%10d の ",a); 20 while( a > 9 ) { 21 /* 整数 aの各桁の積 mを求める */ 22 m = 1; 23 while( a > 0 ) { 24 d = a%10; 25 m = m*d; 26 a = a/10; 27 } 28 count++; 29 a = m; 30 } /* 結果出力 */ 33 printf(" 耐久数 : %d \n",count); 34 } 35 } - 8 -
9 実行結果 % cc a221.c の耐久数 : の耐久数 : の耐久数 : の耐久数 : の耐久数 : の耐久数 : の耐久数 : の耐久数 : の耐久数 : 9 0 ( 考察 ) 正整数 n の各桁の数字を掛け 得られた結果を m とすると n > m つ したがって 耐久数を求める手順は 必ず終了する が成り立 2 桁の場合 10a + b - ab = a(10 - b) + b > 0 3 桁の場合 100a + 10b + c - abc = 10(10a + b) + c - abc > 10(ab) + c - abc = ab(10 - c) + c > 0 4 桁の場合 1000a + 100b + 10c + d - abcd = 10(100a + 10b + c) + d - abcd > 10(abc) + d - abcd = abc(10 - d) + d > 0 k 桁の場合も同様に示すことができる - 9 -
10 問題 2 正整数 b 以下の耐久数をすべて求めよ 正整数 n の各桁の数字の積を m とし その耐久数を s[m] とする 考察から 正整数 n の耐久数 s[n] を求める場合 正整数 m の耐久数 s[m] から s[n] = s[m] + 1 で求められる ひとつずつ 耐久数を求めるより 効率がよい プログラム (a222.c) 1 /* << a222.c>> */ 2 #include <stdio.h> 3 #include <stdlib.h> 4 #define N 9999 /* 耐久数を保存する配列要素の最大値 */ 5 6 int main() { 7 int b, /* 正整数 b */ 8 d, /* 正整数の桁の数字 */ 9 m, /* 正整数の各桁の積 */ 10 n, /* 正整数 n */ 11 t, 12 s[n+1]; /* s[n]: 正整数 nの耐久数 */ /* 正整数 bの読み込み */ 15 scanf("%d",&b); 16 if( (b <= 0) (b > N) ) { exit(0); } /* 初期設定 */ 19 for( n=0; n<=9; n++ ) { s[n] = 0; } /* 耐久数の計算 */ 22 for( n=10; n<=b; n++ ) { 23 t = n; 24 m = 1; /* 整数 tの各桁の積 mを求める */ 27 while( t > 0 ) { 28 d = t%10; 29 m = m*d; 30 t = t/10; 31 } 32 s[n] = s[m] + 1; 33 } /* 結果出力 */ 36 for( n=1; n<=b; n++ ) { 37 printf("%5d:%2d",n,s[n]); 38 if( n%8 == 0 ) { printf("\n"); } 39 } 40 printf("\n"); 41 }
11 実行結果 % cc a222.c 200 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 7: 0 8: 0 9: 0 10: 1 11: 1 12: 1 13: 1 14: 1 15: 1 16: 1 17: 1 18: 1 19: 1 20: 1 21: 1 22: 1 23: 1 24: 1 25: 2 26: 2 27: 2 28: 2 29: 2 30: 1 31: 1 32: 1 33: 1 34: 2 35: 2 36: 2 37: 2 38: 2 39: 3 40: 1 41: 1 42: 1 43: 2 44: 2 45: 2 46: 2 47: 3 48: 2 49: 3 50: 1 51: 1 52: 2 53: 2 54: 2 55: 3 56: 2 57: 3 58: 2 59: 3 60: 1 61: 1 62: 2 63: 2 64: 2 65: 2 66: 3 67: 2 68: 3 69: 3 70: 1 71: 1 72: 2 73: 2 74: 3 75: 3 76: 2 77: 4 78: 3 79: 3 80: 1 81: 1 82: 2 83: 2 84: 2 85: 2 86: 3 87: 3 88: 3 89: 3 90: 1 91: 1 92: 2 93: 3 94: 3 95: 3 96: 3 97: 3 98: 3 99: 2 100: 1 101: 1 102: 1 103: 1 104: 1 105: 1 106: 1 107: 1 108: 1 109: 1 110: 1 111: 1 112: 1 113: 1 114: 1 115: 1 116: 1 117: 1 118: 1 119: 1 120: 1 121: 1 122: 1 123: 1 124: 1 125: 2 126: 2 127: 2 128: 2 129: 2 130: 1 131: 1 132: 1 133: 1 134: 2 135: 2 136: 2 137: 2 138: 2 139: 3 140: 1 141: 1 142: 1 143: 2 144: 2 145: 2 146: 2 147: 3 148: 2 149: 3 150: 1 151: 1 152: 2 153: 2 154: 2 155: 3 156: 2 157: 3 158: 2 159: 3 160: 1 161: 1 162: 2 163: 2 164: 2 165: 2 166: 3 167: 2 168: 3 169: 3 170: 1 171: 1 172: 2 173: 2 174: 3 175: 3 176: 2 177: 4 178: 3 179: 3 180: 1 181: 1 182: 2 183: 2 184: 2 185: 2 186: 3 187: 3 188: 3 189: 3 190: 1 191: 1 192: 2 193: 3 194: 3 195: 3 196: 3 197: 3 198: 3 199: 2 200:
12 2. 3 ピタゴラス数 正整数 a,b,c について a 2 + b 2 = c 2 ( 1 a b c) とする ( このような正整数 a,b,c をピタゴラス数という ) a,b が互いに素なピタゴラス数を既約なピタゴラス数という 規約なピタゴラス数をいくつか示す a b c a b c a b c c 2 n を満たすピタゴラス数の個数を示す n ピタゴラス数の個数
13 問題 1 c 2 n を満たすピタゴラス数をすべて求めよ 考え方 1 整数 a,b を少しずつ大きくして a 2 + b 2 = c 2 が成り立つかどうか調べていく 1 a b c より 2a 2 c 2 が成り立つ プログラム (a231a.c) 1 /* << a231a.c >> */ 2 #include <stdio.h> 3 4 int main () { 5 int a,b,c, 6 count, /* ピタゴラス数の個数 */ 7 n, /* nの値 */ 8 w; 9 10 /* 整数 nの読み込み */ 11 scanf("%d",&n); /* 初期設定 */ 14 count = 0; /* ピタゴラス数を求める */ 17 c = 1; 18 while( c*c <= n ) { 19 for( a=1; 2*a*a<=c*c; a++ ) { 20 for( b=a; b<=c; b++ ) { 21 w = a*a + b*b - c*c; 22 if( w > 0 ) { 23 break; 24 } 25 if( w == 0 ) { 26 count++; printf("%d: %d %d %d\n",count,a,b,c); 27 } 28 } 29 } 30 c++; 31 } /* 結果出力 */ 34 printf("%d 以下のピタゴラス数は %d 個 \n",n,count); 35 }
14 (0,c) b (c,c) a (0,0) (c,0) 実行結果 % cc a231a.c : : : : : : : : : : : 以下のピタゴラス数は 11 個
15 実行時間 ( 出力時間は除く ) % cc a231a.c % time./a.out 以下のピタゴラス数は 881 個 0.640u 0.000s 0: % 0+0k 0+8io 0pf+0w % time./a.out 以下のピタゴラス数は 3371 個 u 0.001s 0: % 0+0k 0+0io 0pf+0w 考え方 2 c 2 nを満たすピタゴラス数 ( a 2 + b 2 = c 2 a,b,c( a b c) は正整数 ) の求 め方を考察する cの値が与えられたとする ピタゴラス数は格子点 (0,0) と格子点 (c,c) を結ぶ対 角線より上側の 4 分円 a 2 +b 2 =c 2 (0 a c,0 b c) 上に存在する 平面の格子点 (a,b) を 4 分円に沿って見落としがないようにたどっていくと 効率よくピタゴラ ス数をさがすことができる 二重線に注目してほしい (0,c) b (c,c) a (0,0) (c,0)
16 プログラム (a231b.c) 1 /* << a231b.c >> */ 2 #include <stdio.h> 3 4 int main () { 5 int a,b,c, 6 count, /* ピタゴラス数の個数 */ 7 n, /* nの値 */ 8 w; 9 10 /* 整数 nの読み込み */ 11 scanf("%d",&n); /* 初期設定 */ 14 count = 0; /* ピタゴラス数を求める */ 17 c = 1; 18 while( c*c <= n ) { 19 a = 1; 20 b = c; 21 while( a <= b ) { 22 w = a*a + b*b - c*c; 23 if( w > 0 ) { 24 b--; continue; 25 } 26 if( w == 0 ) { 27 count++; printf("%d: %d %d %d\n",count,a,b,c); 28 } 29 a++; 30 } 31 c++; 32 } /* 結果出力 */ 35 printf("%d 以下のピタゴラス数は %d 個 \n",n,count); 36 }
17 実行結果 % cc a231b.c : : : : : : : : : : : 以下のピタゴラス数は 11 個 実行時間 ( 出力時間は除く ) % cc a231b.c % time./a.out 以下のピタゴラス数は 881 個 0.002u 0.000s 0: % 0+0k 0+0io 0pf+0w [email protected][63]:!! % time./a.out 以下のピタゴラス数は 3371 個 0.030u 0.000s 0: % 0+0k 0+0io 0pf+0w [email protected][64]:!! % time./a.out 以下のピタゴラス数は 個 0.269u 0.000s 0: % 0+0k 0+0io 0pf+0w [email protected][65]:!! % time./a.out 以下のピタゴラス数は 個 2.686u 0.002s 0: % 0+0k 0+0io 0pf+0w
18 桁の正整数 n において 各桁の数字を大きい順に並べ替えた数から小さい順に並べ替えた数を引く この操作を繰り返すと 同じ数字からなる 4 桁の数以外の正整数から始めると 6174 になることが知られている 正整数をいくつか読込み それぞれについて 6174 になるまでの回数を求めよ ただし データの最後は 0 とする たとえば で 3 回となる 考え方 = = = = 6174 正整数 n を各桁に分解し 数字の出現頻度を配列 d[*] に保存する 配列 d[*] を使って 最大数と最小数を求める プログラム (a241a.c) 1 /* << a241a.c >> */ 2 #include <stdio.h> 3 4 int main() { 5 int count, /* 操作回数 */ 6 d[10], /* d[i] は数字 iの出現回数を意味する */ 7 i,j, 8 k, /* 桁数 */ 9 max, /* 最大数 */ 10 min, /* 最小数 */ 11 n, /* 4 桁の正整数 */ 12 t; while( 1 ) { 15 /* 4 桁正整数の読み込み */ 16 scanf("%d",&n); 17 if( n <= 0 ) { break; } /* 初期設定 */ 20 count = 0; /* 処理操作 */ 23 t = n; 24 while( t!= 6174 ) { 25 /* 整数 nを各桁に分解する kは桁数 d[i] は数字 iが d[i] 回 26 現れたことを意味する */ 27 for( i=0; i<=9; i++ ) { d[i] = 0; }
19 28 k = 0; 29 while( t > 0 ) { 30 k++; 31 d[t%10]++; 32 t = t/10; 33 } /* 数字 0 を見落とさない処理 */ 36 while( k < 4 ) { k++; d[0]++; } /* 最大数 max を求める */ 39 max = 0; /* 最小数 min を求める */ 47 min = 0; count++; 54 t = max - min; 55 } /* 結果出力 */ 58 printf("%d の操作回数は %d\n",n,count); 59 } 60 } 実行結果 % cc a241a.c の操作回数は の操作回数は
20 考え方 2 正整数 n を各桁に分解し 数字を昇順に並べ替え 最大数と最小数を求める プログラム (a241b.c) 1 /* << a241b.c >> */ 2 #include <stdio.h> 3 4 int main() { 5 int count, /* 操作回数 */ 6 d[5], /* 正整数の各桁を保存する配列 */ 7 i,j, 8 k, /* 桁数 */ 9 max, /* 最大数 */ 10 min, /* 最小数 */ 11 n, /* 4 桁の正整数 */ 12 t; while( 1 ) { 15 /* 4 桁正整数の読み込み */ 16 scanf("%d",&n); 17 if( n <= 0 ) { break; } /* 初期設定 */ 20 count = 0; /* 処理操作 */ 23 t = n; 24 while( t!= 6174 ) { 25 /* 整数 nを各桁に分解し 配列 d[*] に保存 kは桁数 */ 26 k = 0; 27 while( t > 0 ) { 28 k++; 29 d[k] = t%10; 30 t = t/10; 31 } /* 数字 0を見落とさない処理 */ 34 while( k < 4 ) { k++; d[k] = 0; } /* 配列 d[*] の要素を昇順に並べる */ 37 for( i=k; i>1; i-- ) { 38 for( j=1; j<i; j++ ) { 39 if( d[j] > d[j+1] ) { 40 t = d[j]; d[j] = d[j+1]; d[j+1] = t; 41 } 42 } 43 }
21 45 /* 最大数を求める */ 46 max = 0; /* 最小数を求める */ 52 min = 0; count++; 57 t = max - min; 58 } /* 結果出力 */ 61 printf("%d の操作回数は %d\n",n,count); 62 } 63 } 実行結果 % cc a241b.c の操作回数は の操作回数は
Taro-再帰関数Ⅲ(公開版).jtd
0. 目次 1 1. ソート 1 1. 1 挿入ソート 1 1. 2 クイックソート 1 1. 3 マージソート - 1 - 1 1. ソート 1 1. 1 挿入ソート 挿入ソートを再帰関数 isort を用いて書く 整列しているデータ (a[1] から a[n-1] まで ) に a[n] を挿入する操作を繰り返す 再帰的定義 isort(a[1],,a[n]) = insert(isort(a[1],,a[n-1]),a[n])
Taro-再帰関数Ⅰ(公開版).jtd
再帰関数 Ⅰ 0. 目次 1. 階乗関数 2. 基本演算 2. 1 乗算 2. 2 除算 2. 3 剰余 3. 最大公約数. フィボナッチ関数 5. べき乗関数 5. 1 解法 1 5. 2 解法 2-1 - 1. 階乗関数 再帰関数は 関数の中で自分自身を呼び出す関数をいう 関数を簡潔に定義することができる 階乗関数 f(n) (n 0) を明示的に書くとつぎのようになる 再帰的定義 f(n) =
Taro-スタック(公開版).jtd
0. 目次 1. 1. 1 配列によるの実現 1. 2 再帰的なデータ構造によるの実現 1. 3 地図情報処理 1. 4 問題 問題 1 グラフ探索問題 - 1 - 1. は データの出し入れが一カ所で行われ 操作は追加と削除ができるデータ構造をいう 出入口 追加 削除 操作 最初 111 追加 111 222 追加 111 222 333 追加 111 222 333 444 追加 111 222
Taro-ビット処理(公開版).jtd
0. 目次 1. ビット演算 1. 1 論理積 論理和 排他的論理和 1. 2 左シフト 右シフト 2. ビット列操作 2. 1 char 型変数の表示 2. 2 int 型変数の表示 2. 3 int 型変数のビット数 2. 4 ビット単位の設定 3. 課題 3. 1 文字の詰め込みと取り出し 3. 2 ビット反転 3. 3 巡回シフト - 1 - 1. ビット演算 つぎのビット演算を使って ビット単位の処理ができる
Microsoft PowerPoint - 説明3_if文switch文(C_guide3)【2015新教材対応確認済み】.pptx
情報ネットワーク導入ユニット Ⅰ C 言語 if 文 switch 文 3 章 : プログラムの流れの分岐 if 文 if( 条件 ) 条件が成立すれば実行 if( 条件 ) ~ else 場合分け ( 成立, 不成立 ) if( 条件 A) ~ else if( 条件 B) ~ else if( 条件 C) ~ else 場合分け ( 複数の条件での場合分け ) 等価演算子 : == ( 等しい
Taro-ファイル処理(公開版).jtd
ファイル処理 0. 目次 1. はじめに 2. ファイル内容の表示 3. ファイル内容の複写 3. 1 文字単位 3. 2 行単位 4. 書式付き入出力 5. 文字配列への入出力 6. 課題 6. 1 課題 1 ( ファイル圧縮 復元 ) - 1 - 1. はじめに ファイル処理プログラムの形は次のようになる #include main() { FILE *fp1,*fp2; ファイルポインタの宣言
Taro-2分探索木Ⅰ(公開版).jtd
2 分探索木 Ⅰ 0. 目次 1. 2 分探索木とは 2. 2 分探索木の作成 3. 2 分探索木の走査 3. 1 前走査 3. 2 中走査 3. 3 問題 問題 1 問題 2 後走査 4. 2 分探索木の表示 - 1 - 1. 2 分探索木とは 木はいくつかの節点と節点同士を結ぶ辺から構成される 2 つの節点 u,v が直接辺で結ばれているとき 一方を親節点 他方を子節点という ある節点の親節点は高々
PowerPoint Presentation
p.130 p.198 p.208 2 double weight[num]; double min, max; min = max = weight[0]; for( i= 1; i i < NUM; i++ ) ) if if ( weight[i] > max ) max = weight[i]: if if ( weight[i] < min ) min = weight[i]: weight
kiso2-06.key
座席指定があります Linux を起動して下さい 第6回 計算機基礎実習II 計算機基礎実習II 2018 のウェブページか ら 以下の課題に自力で取り組んで下さい 第5回の復習課題(rev05) 第6回の基本課題(base06) 第5回課題の回答例 ex05-2.c 1. キーボードから整数値 a を入力すると a*a*a の値を出力することを繰り返すプログラムを作成しなさい 2. ただし 入力された
‚æ2›ñ C„¾„ê‡Ìš|
I 8 10 10 I ( 6 ) 10 10 1 / 23 1 C ( ) getchar(), gets(), scanf() ( ) putchar(), puts(), printf() 1 getchar(), putchar() 1 I ( 6 ) 10 10 2 / 23 1 (getchar 1 1) 1 #include 2 void main(void){ 3 int
東邦大学理学部情報科学科 2014 年度 卒業研究論文 コラッツ予想の変形について 提出日 2015 年 1 月 30 日 ( 金 ) 指導教員白柳潔 提出者 山中陽子
東邦大学理学部情報科学科 2014 年度 卒業研究論文 コラッツ予想の変形について 提出日 2015 年 1 月 30 日 ( 金 ) 指導教員白柳潔 提出者 山中陽子 2014 年度東邦大学理学部情報科学科卒業研究 コラッツ予想の変形について 学籍番号 5511104 氏名山中陽子 要旨 コラッツ予想というのは 任意の 0 でない自然数 n をとり n が偶数の場合 n を 2 で割り n が奇数の場合
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき
新・明解C言語で学ぶアルゴリズムとデータ構造
第 1 章 基本的 1 n 141 1-1 三値 最大値 algorithm List 1-1 a, b, c max /* */ #include int main(void) { int a, b, c; int max; /* */ List 1-1 printf("\n"); printf("a"); scanf("%d", &a); printf("b"); scanf("%d",
Taro-数値計算の基礎Ⅱ(公開版)
0. 目次 1. 2 分法 2. はさみうち法 3. 割線法 4. 割線法 ( 2 次曲線近似 ) 5. ニュートン法 ( 接線近似 ) - 1 - 1. 2 分法 区間 [x0,x1] にある関数 f(x) の根を求める 区間 [x0,x1] を xm=(x0+x1)/2 で 2 等分し 区間 [x0,xm],[xm,x1] に分割する f(xm) の絶対値が十分小さい値 eps より小さいとき
P06.ppt
p.130 p.198 p.208 2 1 double weight[num]; double min, max; min = max = weight[0]; for( i= 1; i < NUM; i++ ) if ( weight[i] > max ) max = weight[i]: if ( weight[i] < min ) min = weight[i]: weight 3 maxof(a,
P02.ppt
int If 2 1 ,,, 3 a + b ab a - b ab a * b ab a / b ab a % b ab a + b 4 2 list0201.c /, % /*/ int vx, vy; puts(""); printf("vx"); scanf("%d", &vx); printf("vy"); scanf("%d", &vy); printf("vx + vy = %d\n",
今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること
C プログラミング演習 1( 再 ) 4 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順
情報処理演習 B8クラス
予定スケジュール ( 全 15 回 ) 1 1. 終了 プログラミング言語の基礎 2. 終了 演算と型 3. 終了 プログラムの流れの分岐 (if 文,switch 文など ) 4. 終了 プログラムの流れの繰返し (do, while, for 文など ) 5. 終了 中間レポート1 6. 終了 配列 7. 終了 関数 8. 終了 文字列 ( 文字列の配列, 文字列の操作 ) 9. 終了 ポインタ
次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1
4. ソート ( 教科書 p.205-p.273) 整列すなわちソートは アプリケーションを作成する際には良く使われる基本的な操作であり 今までに数多くのソートのアルゴリズムが考えられてきた 今回はこれらソートのアルゴリズムについて学習していく ソートとはソートとは与えられたデータの集合をキーとなる項目の値の大小関係に基づき 一定の順序で並べ替える操作である ソートには図 1 に示すように キーの値の小さいデータを先頭に並べる
II ( ) prog8-1.c s1542h017%./prog8-1 1 => 35 Hiroshi 2 => 23 Koji 3 => 67 Satoshi 4 => 87 Junko 5 => 64 Ichiro 6 => 89 Mari 7 => 73 D
II 8 2003 11 12 1 6 ( ) prog8-1.c s1542h017%./prog8-1 1 => 35 Hiroshi 2 => 23 Koji 3 => 67 Satoshi 4 => 87 Junko 5 => 64 Ichiro 6 => 89 Mari 7 => 73 Daisuke 8 =>. 73 Daisuke 35 Hiroshi 64 Ichiro 87 Junko
本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(C 言語 ) サンプル問題 知識科目 第 1 問 (
本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(C 言語 ) サンプル問題 知識科目 第 1 問 ( 知識 4 択 :20 問 ) 1.C 言語ソースプログラムの拡張子は何か 1 c 2 obj 3 exe
Microsoft Word - Cプログラミング演習(10)
第 10 回 (6/25) 3. ファイルとその応用 (3) ファイルの更新 シーケンシャルファイルの更新 シーケンシャルファイルでは, 各レコードが可変長で連続して格納されており, その中の特定のレコードを変更することができない そこで一般的には, マスタファイルからデータを取り出し, 更新処理を行ったあとに新マスタファイルに書き込む 注 ) マスタファイル : 主ファイル, 基本ファイルと呼ばれるファイルで内容は比較的固定的であり,
Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]
if 文 (a と b の大きい方を表示 ) C 言語 Ⅰ の復習 条件判定 (if, 条件式 ) ループ (for[ 二重まで ], while, do) 配列 ( 次元 次元 ) トレース int a, b; printf( 整数 a: ); scanf( %d, &a); printf( 整数 b: ); scanf( %d, &b); //つのif 文で表現する場合間違えやすい どっちに =
C 2 / 21 1 y = x 1.1 lagrange.c 1 / Laglange / 2 #include <stdio.h> 3 #include <math.h> 4 int main() 5 { 6 float x[10], y[10]; 7 float xx, pn, p; 8 in
C 1 / 21 C 2005 A * 1 2 1.1......................................... 2 1.2 *.......................................... 3 2 4 2.1.............................................. 4 2.2..............................................
I. Backus-Naur BNF S + S S * S S x S +, *, x BNF S (parse tree) : * x + x x S * S x + S S S x x (1) * x x * x (2) * + x x x (3) + x * x + x x (4) * *
2015 2015 07 30 10:30 12:00 I. I VI II. III. IV. a d V. VI. 80 100 60 1 I. Backus-Naur BNF S + S S * S S x S +, *, x BNF S (parse tree) : * x + x x S * S x + S S S x x (1) * x x * x (2) * + x x x (3) +
Microsoft Word - no15.docx
7. ファイルいままでは プログラムを実行したとき その結果を画面で確認していました 簡単なものならそれでもいいのですか 複雑な結果は画面で見るだけでなく ファイルに保存できればよいでしょう ここでは このファイルについて説明します 使う関数のプロトタイプは次のとおりです FILE *fopen(const char *filename, const char *mode); ファイルを読み書きできるようにする
Microsoft PowerPoint - 説明2_演算と型(C_guide2)【2015新教材対応確認済み】.pptx
情報ネットワーク導入ユニット Ⅰ C 言語 演算と型 演算 代入 演算と型 +,-,*,/,% = C 言語では 代入 の意味 vx = a + b; //a+b の結果を vx に代入 型 : int 型 ( 整数 ) double 型 ( 実数 ) 演算での型変換 ( 整数, 実数の混在 ) キャスト演算子 型を一時的に変更 書式指定 :printf("%6d n", a); 加減, 剰余演算
Microsoft PowerPoint - program.ppt [互換モード]
プログラミング演習 バージョン 1 担当教員 : 綴木馴 プログラムの決まりについて学ぶ おすすめする参考書 ザ C 戸川隼人サイエンス社 本日の予定 1. 授業の説明. 2. コンパイラーのインストール. プログラムの決まりについて学ぶ,P31 /* The most in C */ /* hello.c */ printf("hello,world n"); プログラムの決まり ( コメント )
printf("5つの整数を入力して下さい \n"); /* データ入力 */ for( /*** 02 ***/ ){ printf("%dつ目の入力 :",i+1); scanf("%d", /*** 03 ***/ ); sum=dat[0]; /* 合計値の初期設定 */ n_max= 0
電子情報競技会ソフトウェア課題 1 Question_1 プロジェクト内のソースプログラムの /*** XX ***/ に適当な語句 式等を入れ プログラムを完成させなさい ここで 同じ番号の /*** XX ***/ には同じ語句 式等が入る /*** XX ***/ の部分以外は書き換えてはならないが 別のソースファイルにてテストしてもかまわない [ プログラムの説明 ] 1. 処理内容 2 桁の整数データ
PowerPoint プレゼンテーション
プログラミング初級 第 7 回 2017 年 5 月 29 日 配列 ( 復習 )~ 文字列 1 配列とは 2 配列 : 複数の変数をグループとしてまとめて扱うもの 配列 変数 int data[10]; 整数型の配列 同種のデータ型を連続して確保したものを配列とよぶ = 整数がそれぞれにひとつずつ入る箱を 10 個用意したようなもの int data; 整数型の変数 = 整数がひとつ入る dataという名前の箱を用意したようなもの
Microsoft PowerPoint - å®�æ−•試é¨fi3ㆮ対ç�Œ.pptx
C言語の繰り返し処理 for文と while文と do文 臼杵 潤 0) 準備 変数の加減算 int a, b=10; // a= a = 0; a = a+1; // a= a += 1; // a= // a= a ++; a = a + b; // a= a += b; // a= // a= a --; 下を1行ずつ実行すると それぞれ aの値はどう変わるか 0 1 2 3 13 23 22
cp-7. 配列
cp-7. 配列 (C プログラムの書き方を, パソコン演習で学ぶシリーズ ) https://www.kkaneko.jp/cc/adp/index.html 金子邦彦 1 本日の内容 例題 1. 月の日数配列とは. 配列の宣言. 配列の添え字. 例題 2. ベクトルの内積例題 3. 合計点と平均点例題 4. 棒グラフを描く配列と繰り返し計算の関係例題 5. 行列の和 2 次元配列 2 今日の到達目標
C のコード例 (Z80 と同機能 ) int main(void) { int i,sum=0; for (i=1; i<=10; i++) sum=sum + i; printf ("sum=%d n",sum); 2
アセンブラ (Z80) の例 ORG 100H LD B,10 SUB A LOOP: ADD A,B DEC B JR NZ,LOOP LD (SUM),A HALT ORG 200H SUM: DEFS 1 END 1 C のコード例 (Z80 と同機能 ) int main(void) { int i,sum=0; for (i=1; i
4-4 while 文 for 文と同様 ある処理を繰り返し実行するためのものだが for 文と違うのは while 文で指定するのは 継続条件のみであるということ for 文で書かれた左のプログラムを while 文で書き換えると右のようになる /* 読込んだ正の整数値までカウントアップ (for
4-4 while 文 for 文と同様 ある処理を繰り返し実行するためのものだが for 文と違うのは while 文で指定するのは 継続条件のみであるということ for 文で書かれた左のプログラムを while 文で書き換えると右のようになる /* 読込んだ正の整数値までカウントアップ (for 文 ) */ int i, no; for (i = 0; i
PowerPoint プレゼンテーション
プログラミング応用 第 15 回 知的情報システム学科張 暁華 プログラミング応用 1 授業のマナー ------ 人の話を聞くときの社会常識 1. 欠席者のかわりに登録を行わない 倫理に反することをやらない あなたの信を問われている蟻の穴から堤防が決壊 2. 私語しないこと : 質問 意見は手を挙げて大きな声ではっきりと意思表示 3. 授業以外のことをしない : 携帯をカバンにいれ イヤホンを使って音楽等を聞かない授業中ゲームを遊ばない
76 3 B m n AB P m n AP : PB = m : n A P B P AB m : n m < n n AB Q Q m A B AQ : QB = m : n (m n) m > n m n Q AB m : n A B Q P AB Q AB 3. 3 A(1) B(3) C(
3 3.1 3.1.1 1 1 A P a 1 a P a P P(a) a P(a) a P(a) a a 0 a = a a < 0 a = a a < b a > b A a b a B b B b a b A a 3.1 A() B(5) AB = 5 = 3 A(3) B(1) AB = 3 1 = A(a) B(b) AB AB = b a 3.1 (1) A(6) B(1) () A(
C言語によるアルゴリズムとデータ構造
Algorithms and Data Structures in C 4 algorithm List - /* */ #include List - int main(void) { int a, b, c; int max; /* */ Ÿ 3Ÿ 2Ÿ 3 printf(""); printf(""); printf(""); scanf("%d", &a); scanf("%d",
2014年度 千葉大・医系数学
04 千葉大学 ( 医系 ) 前期日程問題 解答解説のページへ 袋の中に, 赤玉が 3 個, 白玉が 7 個が入っている 袋から玉を無作為に つ取り出し, 色を確認してから, 再び袋に戻すという試行を行う この試行を N 回繰り返したときに, 赤玉を A 回 ( ただし 0 A N) 取り出す確率を p( N, A) とする このとき, 以下の問いに答えよ () 確率 p( N, A) を N と
PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU
1. 1.1. 1.2. 1 PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU 2. 2.1. 2 1 2 C a b N: PC BC c 3C ac b 3 4 a F7 b Y c 6 5 a ctrl+f5) 4 2.2. main 2.3. main 2.4. 3 4 5 6 7 printf printf
A(6, 13) B(1, 1) 65 y C 2 A(2, 1) B( 3, 2) C 66 x + 2y 1 = 0 2 A(1, 1) B(3, 0) P 67 3 A(3, 3) B(1, 2) C(4, 0) (1) ABC G (2) 3 A B C P 6
1 1 1.1 64 A6, 1) B1, 1) 65 C A, 1) B, ) C 66 + 1 = 0 A1, 1) B, 0) P 67 A, ) B1, ) C4, 0) 1) ABC G ) A B C P 64 A 1, 1) B, ) AB AB = 1) + 1) A 1, 1) 1 B, ) 1 65 66 65 C0, k) 66 1 p, p) 1 1 A B AB A 67
PowerPoint Presentation
工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 7 回 2010 年 11 月 18 日 1 今回のテーマ 1: ポインタ 変数に値を代入 = 記憶プログラムの記憶領域として使用されるものがメモリ ( パソコンの仕様書における 512 MB RAM などの記述はこのメモリの量 ) RAM は多数のコンデンサの集合体 : 電荷がたまっている (1)/ いない
2015-2018年度 2次数学セレクション(整数と数列)解答解説
015 次数学セレクション問題 1 [ 千葉大 文 ] k, m, n を自然数とする 以下の問いに答えよ (1) k を 7 で割った余りが 4 であるとする このとき, k を 3 で割った余りは であることを示せ () 4m+ 5nが 3 で割り切れるとする このとき, mn を 7 で割った余りは 4 ではないことを示せ -1- 015 次数学セレクション問題 [ 九州大 理 ] 以下の問いに答えよ
:30 12:00 I. I VI II. III. IV. a d V. VI
2018 2018 08 02 10:30 12:00 I. I VI II. III. IV. a d V. VI. 80 100 60 1 I. Backus-Naur BNF N N y N x N xy yx : yxxyxy N N x, y N (parse tree) (1) yxyyx (2) xyxyxy (3) yxxyxyy (4) yxxxyxxy N y N x N yx
第 章 Q-1 3 int a =,b =,c = ; printf("%d\t%d\t%d",a,b,c); Q-2 3 int a = -; double b =.2; char c = 'G'; printf("%d\t%.2f\t%c",a,b,c); Q-3 3 int a = 0,b =
楽しく学べる C 言語 演習問題解答 第 1 章 ( 要点のみ ) Q1-1 コンパイラ型はプログラムの実行速度が速いが, インタプリタ型は実行速度が遅い. しかし, プログラムに対して改変を行うような場合には, コンパイラ型よりもインタプリタ型の方が手軽にできる. Q1-2 exe ファイルは 0 と 1 の機械語で書かれているファイルであり, その実行のためにはライブラリファイルを要することもある.
AHPを用いた大相撲の新しい番付編成
5304050 2008/2/15 1 2008/2/15 2 42 2008/2/15 3 2008/2/15 4 195 2008/2/15 5 2008/2/15 6 i j ij >1 ij ij1/>1 i j i 1 ji 1/ j ij 2008/2/15 7 1 =2.01/=0.5 =1.51/=0.67 2008/2/15 8 1 2008/2/15 9 () u ) i i i
I ASCII ( ) NUL 16 DLE SP P p 1 SOH 17 DC1! 1 A Q a q STX 2 18 DC2 " 2 B R b
I 4 003 4 30 1 ASCII ( ) 0 17 0 NUL 16 DLE SP 0 @ P 3 48 64 80 96 11 p 1 SOH 17 DC1! 1 A Q a 33 49 65 81 97 113 q STX 18 DC " B R b 34 50 66 8 98 114 r 3 ETX 19 DC3 # 3 C S c 35 51 67 83 99 115 s 4 EOT
Javaによるアルゴリズムとデータ構造
1 algorithm List 1-1 a, b, c List 1-1 // import java.util.scanner; class Max3 { public static void main(string[] args) { Scanner stdin = new Scanner(System.in); int a, b, c; int max; // Chap01/Max3.java
行列代数2010A
a ij i j 1) i +j i, j) ij ij 1 j a i1 a ij a i a 1 a j a ij 1) i +j 1,j 1,j +1 a i1,1 a i1,j 1 a i1,j +1 a i1, a i +1,1 a i +1.j 1 a i +1,j +1 a i +1, a 1 a,j 1 a,j +1 a, ij i j 1,j 1,j +1 ij 1) i +j a
Microsoft Word - lec_student-chp3_1-representative
1. はじめに この節でのテーマ データ分布の中心位置を数値で表す 可視化でとらえた分布の中心位置を数量化する 平均値とメジアン, 幾何平均 この節での到達目標 1 平均値 メジアン 幾何平均の定義を書ける 2 平均値とメジアン, 幾何平均の特徴と使える状況を説明できる. 3 平均値 メジアン 幾何平均を計算できる 2. 特性値 集めたデータを度数分布表やヒストグラムに整理する ( 可視化する )
) 9 81
4 4.0 2000 ) 9 81 10 4.1 natural numbers 1, 2, 3, 4, 4.2, 3, 2, 1, 0, 1, 2, 3, integral numbers integers 1, 2, 3,, 3, 2, 1 1 4.3 4.3.1 ( ) m, n m 0 n m 82 rational numbers m 1 ( ) 3 = 3 1 4.3.2 3 5 = 2
2
問題 次の設問に答えよ 設問. Java のソースコードをコンパイルするコマンドはどれか a) java b) javac c) javadoc d) javaw 設問. Java のバイトコード ( コンパイル結果 ) を実行するコマンドはどれか a) java b) javac c) javadoc d).jar 設問. Java のソースコードの拡張子はどれか a).c b).java c).class
140 120 100 80 60 40 20 0 115 107 102 99 95 97 95 97 98 100 64 72 37 60 50 53 50 36 32 18 H18 H19 H20 H21 H22 H23 H24 H25 H26 H27 1 100 () 80 60 40 20 0 1 19 16 10 11 6 8 9 5 10 35 76 83 73 68 46 44 H11
memo
数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int
Taro-ポインタ変数Ⅰ(公開版).j
0. 目次 1. ポインタ変数と変数 2. ポインタ変数と配列 3. ポインタ変数と構造体 4. ポインタ変数と線形リスト 5. 問題 問題 1 問題 2-1 - 1. ポインタ変数と変数 ポインタ変数には 記憶領域の番地が格納されている 通常の変数にはデータが格納されている 宣言 int *a; float *b; char *c; 意味ポインタ変数 aは 整数型データが保存されている番地を格納している
Taro-数値計算の誤差(公開版)
0. 目次 1. 情報落ち 計算のルールを 10 進 4 桁 切り捨て と仮定する 2 つの数の加算では まず小数点が合わされ 大きい数が優先される したがって 12.34 + 0.005678 は 12.34 と計算される このように 絶対値の小さい数を絶対値の大きい数に加えてもほとんど影響を与えない現象を情報落ちという 2. オーバーフロー アンダーフロー 計算結果の絶対値がコンピュータの処理できる最大の数を越えてしまう現象をオーバーフローという
æœ•å¤§å–¬ç´—æŁ°,æœ•å°‘å–¬å•“æŁ°,ã…¦ã…¼ã‡¯ã…ªã……ã…›ã†®äº™éŽ¤æ³Ł
最大公約数, 最小公倍数, ユークリッドの互除法 最大公約数, 最小公倍数とは つ以上の正の整数に共通な約数 ( 公約数 ) のうち最大のものを最大公約数といいます. と 8 の公約数は,,,,6 で, 6 が最大公約数 つ以上の正の整数の共通な倍数 ( 公倍数 ) のうち最小のものを最小公倍数といいます. と の公倍数は, 6,,8,,... で, 6 が最小公倍数 最大公約数, 最小公倍数の求め方
