問 9(提出プログラム名:ex1209a.c)
※上級クラスは必須(中級クラスはできる人だけでよい)
(いずれも加点対象)
このプログラム(ex1209a.c)をダウンロードし,この中の関数 encode を完成させなさい.
このプログラムは,指定されたファイルの内容を暗号化または復号化するプログラムであり,
コマンドライン引数として
(1) 暗号化(復号化)前のファイル名
(2) 復号化(復号化)後のファイル名
(3) 暗号化・復号化の鍵を表す数字
の 3 つを受け取るものとする.
なお,「暗号化・復号化の鍵を表す数字」とはゼロでない整数 n であり,これが n > 0 ならば暗号化を,n < 0 ならば復号化を意味するものとする.
ここでの暗号化は単純なシーザー暗号とし,アルファベット以外の文字は変化させないものとする.そして,アルファベットに関しては,各文字を n だけ後ろの文字に置き換えるものとする.
ただし,'z' や 'Z' の次の文字は 'a' や 'A' に折り返すものとする.
復号化に関しても同様であり n < 0 であることから分かるように,|n| 文字だけ前のアルファベットに置き換えるという操作になる.
以下の仕様に従って,関数 encode を完成させなさい.
main の内容は変更しないこと.
[関数 encode] void encode(FILE *fp1, FILE *fp2, int n)
fp1 は処理前のファイルのファイルポインタ
fp2 は処理前のファイルのファイルポインタ
n は暗号化・復号化の鍵となる整数
処理内容は以下の通り:
fp1 の参照するファイルの内容について,アルファベットを n 文字だけ後ろの文字に置き換え,
それ以外の文字はそのままのかたちで fp2 の参照するファイルへ書き込む.
なお,大文字と小文字は区別して扱うこと.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
このファイル(data1209a.txt)をダウンロードして使用せよ
a data1209a.txt aaa.txt 10 暗号化を行いました(鍵 = 10):data1209a.txt --> aaa.txt⏎※以下は出来上がる aaa.txt の内容
Zbyqbkwwobc mkx wkuo dro fkbsklvoc okci dy exnobcdkxn li mryycsxq wokxsxqpev xkwoc. Rygofob, ofox dryeqr sxnsfsnekv xkwoc kbo wokxsxqpev, k myvvomdsyx yp drow wsqrd knfobcovi kppomd dro myno boknklsvsdi grox drosb xkwoc kbo rsqrvi cswsvkb, cemr kc lyddywBsqrd fc. lyddywRosqrd, kxn droi wki mkeco wshsxq ez yb wscboknsxq yp fkbsklvoc. Cemr k zksb sc bopobbon dy kc k myxpecsxq fkbsklvo zksb. Drsc zkzob myxnemdc k vkbqo-cmkvo sxfocdsqkdsyx dy ohkwsxo dro mrkxqo dboxnc yp myxpecsxq fkbsklvo zksbc yfob mywwsdc, kxn sd bozybdc dro pyvvygsxq psxnsxqc. (1) Dro kfobkqo xewlob yp myxpecsxq fkbsklvo zksbc kzzokbsxq sx k cyebmo psvo sc 1.4 sx Tkfk kxn 1.3 sx Zidryx. (2) Klyed 67–75% yp myxpecsxq fkbsklvo zksbc cebfsfo drbyeqr mywwsdc. (3) Myxpecsxq fkbsklvo zksbc doxn dy kzzokb sx k celcod yp cyebmo psvoc gsdrsx k zbytomd (dro wonskx bkdoc sx Tkfk kxn Zidryx zbytomdc: 26% kxn 13%) kxn nsckzzokb pbyw pogob psvoc (dro wonskx bkdoc sx Tkfk kxn Zidryx zbytomdc: 6% kxn 2%). (4) Kvdryeqr dro mrkxqo dboxnc ny xyd fkbi kwyxq zbytomdc, cywo yedvsob zbytomdc rkfo csqxspsmkxdvi wybo myxpecsxq fkbsklvo zksbc.
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
a aaa.txt bbb.txt -10 復号化を行いました(鍵 = -10):aaa.txt --> bbb.txt⏎※上の結果,bbb.txt が元の data1209a.txt と同じになれば正解です.
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 上の実行例と出力が違っていることを見落としている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
問 4 ~問 9 は 7/16(火)12:00 までに提出を済ませてください.※23:59 ではないので注意!
(ex1204a.c ~ ex1209a.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.
なお,提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.
← [ 問 7 (ex1207a.c) ]
← [ 問 8 (ex1208a.c) ]