プログラミング実習II知機2022
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* [[プログラミング実習II知能・機械:https://am.kwansei.ac....
『キックオフC言語 2022年度用』のサポートページです。
#contents
>アンケートを実施しているので、回答にご協力をお願いします。
&br;https://docs.google.com/forms/d/e/1FAIpQLScdTwgxEu8ho...
** 配布物 [#ge8fc588]
製本した印刷物は、授業の初回で配布します。A5版以外に、少...
PDF は以下で公開します。
- [[閲覧用:https://cs.kwansei.ac.jp/~tutimura/debug/KickO...
-- ページ番号が、ページの上と下の2ヶ所にあるので、ページ...
-- リンク部分の文字の色が「赤」です。
- [[印刷用:https://cs.kwansei.ac.jp/~tutimura/debug/KickO...
-- ページ端に、章ごとの帯のような印(ツメ)があります。
-- リンク部分の文字の色が「黒」です。
-- B5用紙の中にA5の領域の版面があるので、裁断できるのなら...
- [[ソースコード閲覧:https://cs.kwansei.ac.jp/~tutimura/d...
-- [[全ファイルダウンロード:https://cs.kwansei.ac.jp/~tut...
** 正誤表 [#o4cc021b]
*** 多数 [#jba28e2e]
// 04/14 37021623 福田 壮一朗
『自動''清''算』→『自動''精''算』
*** まえがき [#A00]
:p.iv 下から6行目|『チーティング』→『ティーチング』
*** 3章 [#A03]
:p.50 問題6.と7.|難易度順的には、6.と7.を入れ替えておくべ...
:p.50 問題7.タイトル部分|『関数の''再利用と''信頼性』→『...
:p.50 問題8.|指示を追加します。『εはマクロ名をEPSとして定...
#define EPS 0.000001
*** 4章 [#A04]
:p.54 脚注*3|『単純に 2 つの if を並べるだけだと、 printf...
:p.69 問題2.|指示を追加します。%%『if文1つで判定せよ。』...
:p.69 問題4.|指示を追加します。『1≦m≦6 あるいは 1≦n≦3 の...
:p.69 問題6.|辺の長さをintに限定するメリットは特にないの...
:p.70 問題7.|『x は 10 以上 990 以下の 10 の倍数』これは...
*** 5章 [#A05]
:p.86 問題0.|誤植ではありませんが、問題を追加します。
&br;『次のプログラムの無駄を省いて、単純にせよ。(34ペー...
#include <stdio.h>
int main(void) {
int a;
for (int i=1; i<=5; i++) {
a = i * 10;
}
printf("%d\n", a);
return 0;
}
:p.86 問題8.|余力のある人向けに、以下を追加します。提出は...
&br;『整数 y,m について定義される T(y,m) の値を表示してみ...
T(y,m) = (y + y/4 - y/100 + y/400 + 13*(m+1)/5) % 7
そして、現実の y年m月1日の曜日との関係で、気づいたことを...
*** 6章 [#A06]
:p102 問題6.と問題7.|誤植ではありませんが、以下のように問...
~6. ''[ある?ない?]''
&br;ソースコード 6.5 の is_prime3() を利用して、次の関数...
~• int is_sum_of_2primes(int n) は、 n が 2 つの素数の和...
~そして main() 関数で、2 から 100 までの整数のうち、素数...
~7. ''廃止''
:p102 問題9.|[[12章>#A12]] の6章部分を参照してください。
*** 7章 [#A07]
:p.112 コラムのすぐ上の行|『''場合''には』→『''変数''には...
:p.117 問題0.|以下を追加します。『 問題0.[仮引数のスコー...
>3.5節での説明は不十分でした。仮引数のスコープはその関数...
<
:p.117 問題A.|復習の問題を追加します。『問題A. [論理型の...
#include <stdio.h>
/* 点(x,y)が、原点を中心とする半径rの円の内側なら、論理...
そうでなければ FALSE を返す */
int is_in_circle(double x, double y, double r) {
return (x * x + y * y <= r * r);
}
void print_is_in_circle(double x, double y, double r) {
printf("(%g,%g)は、原点を中心とする半径 %g の円の", ...
if ( /* ここを埋めよ */ ) {
printf("内側\n");
} else {
printf("外側\n");
}
}
int main(void) {
print_is_in_circle(1.0, 1.0, 1.4142); // 外
print_is_in_circle(1.0, 1.0, 1.4143); // 内
print_is_in_circle(11, 4, 12); // 内
print_is_in_circle(11, 5, 12); // 外
return 0;
}
:p.117 下から1行目|ユークリッドの互除法を説明していません...
:p.118 問題4.|''指示''を追加します。『4つの関数のプロトタ...
#include <stdio.h>
int main(void) {
set_year(0); // 無効
set_month(0); // 無効
printf("year = %d, month = %d\n", get_year(), get_mo...
set_year(2022);
set_month(6);
printf("year = %d, month = %d\n", get_year(), get_mo...
return 0;
}
*** 8章 [#A08]
:p.129 ソースコード8.5の18--19行目|配列要素数を num とい...
:p.138 問題3.|main()関数を例示しておきます。
int main(void) {
int d = 31;
for (int i=0; i<=13; i++) {
if (! is_valid_date(i, d)) {
printf("%d月%d日は存在しません\n", i, d);
}
}
return 0;
}
:p.138 問題7.|訂正ではありません。オプションの問題を追加...
東京 品川 新横浜 名古屋 京都 新大阪
0.0 6.8 28.8 366.0 513.6 552.6
である。この距離を''1次元配列''に格納し、以下の表のよう...
&br;・実行結果の、()内の駅名はヒントであるので、''数値部...
&br;・数値は "%8.1f" で表示すると、桁が揃いやすい。
&br;・絶対値を返す数学関数 fabs(x) を用いてよい。
実行結果
( 東京)( 品川)(新横浜)(名古屋)( 京都)(新大阪)
( 東京) 0.0 6.8 28.8 366.0 513.6 552.6
( 品川) 6.8 0.0 22.0 359.2 506.8 545.8
(新横浜) 28.8 22.0 0.0 337.2 484.8 523.8
(名古屋) 366.0 359.2 337.2 0.0 147.6 186.6
( 京都) 513.6 506.8 484.8 147.6 0.0 39.0
(新大阪) 552.6 545.8 523.8 186.6 39.0 0.0
』
*** 9章 [#A09]
:p.154 問題3.|『2.5.''1''項』→『2.5.''2''項』&br;toupper(...
:p.154 問題4.|関数のプロトタイプと、main()関数を例示して...
void print_cancel_or_not(char weather[]) {
/* ここを作る */
}
int main(void) {
print_cancel_or_not("暴風雪警報");
print_cancel_or_not("大雪警報");
print_cancel_or_not("特別警報(大雪)");
}
:p.154 問題5.|ヒントを追加します。charからintへの変換の式...
int char2int(char c) { return c - '0'; }
これを使うと、次のように、「1文字」から「整数」に変換さ...
char2int('0') → 0
char2int('1') → 1
...
char2int('9') → 9
:p.154 問題6.|[[12章>#A12]] の9章部分を参照してください。
*** 10章 [#A10]
:p.168 問題2.|補足です。frac_mul()もfrac_div()も、返す分...
:p.168 問題4.|『(1)10.2.1項のpoint_t型を用いる。』→『(1)1...
:p.168 問題4.|『(2)z座標を追加して』→『(2)''point_tに''z...
:p.168 問題6.|[[12章>#A12]] の10章部分を参照してください。
*** 11章 [#A11]
:p.186 中程|『input.''e''xtをつけずに』→『input.''t''xtを...
:p.188 問題0.|以下を追加します。『 問題0.([複数の手段の使...
:p.188 問題1.|提出物に、''入力ファイル''と''出力結果''を...
:p.188 問題2.|''オプション課題''に変更します。また、''入...
:p.188 問題3.|''入力ファイル''は問題1.と共通とします。''...
|~変数定義|>|>|>|~配列要素|~文字列の長さ|~末尾の文字|h
|~|[0]|[1]|[2]|[3]|~|~|
|char s[ ]="abc";|'a'|'b'|'c'|'\0'|strlen(s)=3|s[strlen(s...
:p.188 問題4.|新たに追加します。→[[./11_6_4]]
*** 12章 [#A12]
:p.191 6章|変更と補足があります。変更は、『1000, 500, 100...
:p.192 9章|お釣りに1000円札を含めてください。そして表示す...
:p.193 10章|『現在時刻を取得し、''経過時間から駐車料金を...
#include <time.h> // time(), struct tm
/* 10章 構造体 */
struct tm get_current_time(void) {
time_t t = time(NULL);
return *localtime(&t);
}
/* 10章 構造体 */
int decide_fee(void) {
//printf("駐車開始時刻を入力してください\n");
//printf("時 => "); int h = input_int();
//printf("分 => "); int m = input_int();
//printf("秒 => "); int s = input_int();
struct tm now = get_current_time();
printf("現在時刻は %02d:%02d:%02d です\n",
now.tm_hour, now.tm_min, now.tm_sec);
int sec = 0;
/* ここを作る */
printf("経過時間は %d 秒です。\n", sec);
int fee = 0;
/* ここを作る */
printf("駐車料金は %d 円です。\n\n", fee);
return fee;
}
> input_int() の使い方の注意です。scanf() と混在すると、...
#include <stdio.h>
#include <stdlib.h>
int input_int(void) {
char buff[BUFSIZ];
if (fgets(buff, BUFSIZ, stdin) == NULL) exit(EXIT_FA...
return atoi(buff); // 文字列→int変換
}
int main(void) {
int a; scanf("%d", &a);
int b = input_int();
printf("a=%d, b=%d\n", a, b);
}
例えば "1[Enter]2[Enter]" と入力したとします。"1"はaに読...
:p.194 ソースコード中の7行目|以下のプロトタイプ宣言を挿入...
/* プロトタイプ宣言 */
int input_int(void);
int sec2fee(int sec);
int is_coin_note(int value);
int get_coin_note(void);
int hms2sec(int h, int m, int s);
int sec_diff(int h1, int m1, int s1, int h2, int m2, int...
void put_change(int x);
struct tm get_current_time(void);
int decide_fee(void);
int receive_fee(int fee);
:p.195 ソースコード中の60行目|『%d:%d:%d』→『%d:%''02''d:...
*** 13章 [#A13]
:p.203 ソースコード 13.2の7行目|コメント中の引数名が不一...
:p.208 コラムの1行目|『終端を示こと』→『終端を示''す''こ...
終了行:
* [[プログラミング実習II知能・機械:https://am.kwansei.ac....
『キックオフC言語 2022年度用』のサポートページです。
#contents
>アンケートを実施しているので、回答にご協力をお願いします。
&br;https://docs.google.com/forms/d/e/1FAIpQLScdTwgxEu8ho...
** 配布物 [#ge8fc588]
製本した印刷物は、授業の初回で配布します。A5版以外に、少...
PDF は以下で公開します。
- [[閲覧用:https://cs.kwansei.ac.jp/~tutimura/debug/KickO...
-- ページ番号が、ページの上と下の2ヶ所にあるので、ページ...
-- リンク部分の文字の色が「赤」です。
- [[印刷用:https://cs.kwansei.ac.jp/~tutimura/debug/KickO...
-- ページ端に、章ごとの帯のような印(ツメ)があります。
-- リンク部分の文字の色が「黒」です。
-- B5用紙の中にA5の領域の版面があるので、裁断できるのなら...
- [[ソースコード閲覧:https://cs.kwansei.ac.jp/~tutimura/d...
-- [[全ファイルダウンロード:https://cs.kwansei.ac.jp/~tut...
** 正誤表 [#o4cc021b]
*** 多数 [#jba28e2e]
// 04/14 37021623 福田 壮一朗
『自動''清''算』→『自動''精''算』
*** まえがき [#A00]
:p.iv 下から6行目|『チーティング』→『ティーチング』
*** 3章 [#A03]
:p.50 問題6.と7.|難易度順的には、6.と7.を入れ替えておくべ...
:p.50 問題7.タイトル部分|『関数の''再利用と''信頼性』→『...
:p.50 問題8.|指示を追加します。『εはマクロ名をEPSとして定...
#define EPS 0.000001
*** 4章 [#A04]
:p.54 脚注*3|『単純に 2 つの if を並べるだけだと、 printf...
:p.69 問題2.|指示を追加します。%%『if文1つで判定せよ。』...
:p.69 問題4.|指示を追加します。『1≦m≦6 あるいは 1≦n≦3 の...
:p.69 問題6.|辺の長さをintに限定するメリットは特にないの...
:p.70 問題7.|『x は 10 以上 990 以下の 10 の倍数』これは...
*** 5章 [#A05]
:p.86 問題0.|誤植ではありませんが、問題を追加します。
&br;『次のプログラムの無駄を省いて、単純にせよ。(34ペー...
#include <stdio.h>
int main(void) {
int a;
for (int i=1; i<=5; i++) {
a = i * 10;
}
printf("%d\n", a);
return 0;
}
:p.86 問題8.|余力のある人向けに、以下を追加します。提出は...
&br;『整数 y,m について定義される T(y,m) の値を表示してみ...
T(y,m) = (y + y/4 - y/100 + y/400 + 13*(m+1)/5) % 7
そして、現実の y年m月1日の曜日との関係で、気づいたことを...
*** 6章 [#A06]
:p102 問題6.と問題7.|誤植ではありませんが、以下のように問...
~6. ''[ある?ない?]''
&br;ソースコード 6.5 の is_prime3() を利用して、次の関数...
~• int is_sum_of_2primes(int n) は、 n が 2 つの素数の和...
~そして main() 関数で、2 から 100 までの整数のうち、素数...
~7. ''廃止''
:p102 問題9.|[[12章>#A12]] の6章部分を参照してください。
*** 7章 [#A07]
:p.112 コラムのすぐ上の行|『''場合''には』→『''変数''には...
:p.117 問題0.|以下を追加します。『 問題0.[仮引数のスコー...
>3.5節での説明は不十分でした。仮引数のスコープはその関数...
<
:p.117 問題A.|復習の問題を追加します。『問題A. [論理型の...
#include <stdio.h>
/* 点(x,y)が、原点を中心とする半径rの円の内側なら、論理...
そうでなければ FALSE を返す */
int is_in_circle(double x, double y, double r) {
return (x * x + y * y <= r * r);
}
void print_is_in_circle(double x, double y, double r) {
printf("(%g,%g)は、原点を中心とする半径 %g の円の", ...
if ( /* ここを埋めよ */ ) {
printf("内側\n");
} else {
printf("外側\n");
}
}
int main(void) {
print_is_in_circle(1.0, 1.0, 1.4142); // 外
print_is_in_circle(1.0, 1.0, 1.4143); // 内
print_is_in_circle(11, 4, 12); // 内
print_is_in_circle(11, 5, 12); // 外
return 0;
}
:p.117 下から1行目|ユークリッドの互除法を説明していません...
:p.118 問題4.|''指示''を追加します。『4つの関数のプロトタ...
#include <stdio.h>
int main(void) {
set_year(0); // 無効
set_month(0); // 無効
printf("year = %d, month = %d\n", get_year(), get_mo...
set_year(2022);
set_month(6);
printf("year = %d, month = %d\n", get_year(), get_mo...
return 0;
}
*** 8章 [#A08]
:p.129 ソースコード8.5の18--19行目|配列要素数を num とい...
:p.138 問題3.|main()関数を例示しておきます。
int main(void) {
int d = 31;
for (int i=0; i<=13; i++) {
if (! is_valid_date(i, d)) {
printf("%d月%d日は存在しません\n", i, d);
}
}
return 0;
}
:p.138 問題7.|訂正ではありません。オプションの問題を追加...
東京 品川 新横浜 名古屋 京都 新大阪
0.0 6.8 28.8 366.0 513.6 552.6
である。この距離を''1次元配列''に格納し、以下の表のよう...
&br;・実行結果の、()内の駅名はヒントであるので、''数値部...
&br;・数値は "%8.1f" で表示すると、桁が揃いやすい。
&br;・絶対値を返す数学関数 fabs(x) を用いてよい。
実行結果
( 東京)( 品川)(新横浜)(名古屋)( 京都)(新大阪)
( 東京) 0.0 6.8 28.8 366.0 513.6 552.6
( 品川) 6.8 0.0 22.0 359.2 506.8 545.8
(新横浜) 28.8 22.0 0.0 337.2 484.8 523.8
(名古屋) 366.0 359.2 337.2 0.0 147.6 186.6
( 京都) 513.6 506.8 484.8 147.6 0.0 39.0
(新大阪) 552.6 545.8 523.8 186.6 39.0 0.0
』
*** 9章 [#A09]
:p.154 問題3.|『2.5.''1''項』→『2.5.''2''項』&br;toupper(...
:p.154 問題4.|関数のプロトタイプと、main()関数を例示して...
void print_cancel_or_not(char weather[]) {
/* ここを作る */
}
int main(void) {
print_cancel_or_not("暴風雪警報");
print_cancel_or_not("大雪警報");
print_cancel_or_not("特別警報(大雪)");
}
:p.154 問題5.|ヒントを追加します。charからintへの変換の式...
int char2int(char c) { return c - '0'; }
これを使うと、次のように、「1文字」から「整数」に変換さ...
char2int('0') → 0
char2int('1') → 1
...
char2int('9') → 9
:p.154 問題6.|[[12章>#A12]] の9章部分を参照してください。
*** 10章 [#A10]
:p.168 問題2.|補足です。frac_mul()もfrac_div()も、返す分...
:p.168 問題4.|『(1)10.2.1項のpoint_t型を用いる。』→『(1)1...
:p.168 問題4.|『(2)z座標を追加して』→『(2)''point_tに''z...
:p.168 問題6.|[[12章>#A12]] の10章部分を参照してください。
*** 11章 [#A11]
:p.186 中程|『input.''e''xtをつけずに』→『input.''t''xtを...
:p.188 問題0.|以下を追加します。『 問題0.([複数の手段の使...
:p.188 問題1.|提出物に、''入力ファイル''と''出力結果''を...
:p.188 問題2.|''オプション課題''に変更します。また、''入...
:p.188 問題3.|''入力ファイル''は問題1.と共通とします。''...
|~変数定義|>|>|>|~配列要素|~文字列の長さ|~末尾の文字|h
|~|[0]|[1]|[2]|[3]|~|~|
|char s[ ]="abc";|'a'|'b'|'c'|'\0'|strlen(s)=3|s[strlen(s...
:p.188 問題4.|新たに追加します。→[[./11_6_4]]
*** 12章 [#A12]
:p.191 6章|変更と補足があります。変更は、『1000, 500, 100...
:p.192 9章|お釣りに1000円札を含めてください。そして表示す...
:p.193 10章|『現在時刻を取得し、''経過時間から駐車料金を...
#include <time.h> // time(), struct tm
/* 10章 構造体 */
struct tm get_current_time(void) {
time_t t = time(NULL);
return *localtime(&t);
}
/* 10章 構造体 */
int decide_fee(void) {
//printf("駐車開始時刻を入力してください\n");
//printf("時 => "); int h = input_int();
//printf("分 => "); int m = input_int();
//printf("秒 => "); int s = input_int();
struct tm now = get_current_time();
printf("現在時刻は %02d:%02d:%02d です\n",
now.tm_hour, now.tm_min, now.tm_sec);
int sec = 0;
/* ここを作る */
printf("経過時間は %d 秒です。\n", sec);
int fee = 0;
/* ここを作る */
printf("駐車料金は %d 円です。\n\n", fee);
return fee;
}
> input_int() の使い方の注意です。scanf() と混在すると、...
#include <stdio.h>
#include <stdlib.h>
int input_int(void) {
char buff[BUFSIZ];
if (fgets(buff, BUFSIZ, stdin) == NULL) exit(EXIT_FA...
return atoi(buff); // 文字列→int変換
}
int main(void) {
int a; scanf("%d", &a);
int b = input_int();
printf("a=%d, b=%d\n", a, b);
}
例えば "1[Enter]2[Enter]" と入力したとします。"1"はaに読...
:p.194 ソースコード中の7行目|以下のプロトタイプ宣言を挿入...
/* プロトタイプ宣言 */
int input_int(void);
int sec2fee(int sec);
int is_coin_note(int value);
int get_coin_note(void);
int hms2sec(int h, int m, int s);
int sec_diff(int h1, int m1, int s1, int h2, int m2, int...
void put_change(int x);
struct tm get_current_time(void);
int decide_fee(void);
int receive_fee(int fee);
:p.195 ソースコード中の60行目|『%d:%d:%d』→『%d:%''02''d:...
*** 13章 [#A13]
:p.203 ソースコード 13.2の7行目|コメント中の引数名が不一...
:p.208 コラムの1行目|『終端を示こと』→『終端を示''す''こ...
ページ名: