- ベストアンサー
Cの問題について。
下の問題の時、 y、zが入力された時に暗号化された文字をa、bへ戻す方法がわかりません。 わかる方がいたら、ヒントだけでもいいので、よろしくお願いします。 適当な1文字を入力し、それが元が何であったかが分からないように何文字かずらして暗号化し、また元に戻すようなプログラムを作りなさい。文字としては英字小文字のみと仮定します。 例を以下に示します。作成するプログラムも同じような出力形式にしてください。 [ 例 ] 入力文字 = x 暗号化された文字 = b 復号化された文字 = x 何文字ずらすか?については、各自で適当に設定して構いません。 ただし、暗号化された文字も、英字小文字でなければなりません。 例えば、zに2を足すと、そのままでは英字でない記号になってしまいますが、これを z+1 -> a, z+2 -> b, z+3 -> c, … のようにアルファベットの先頭に戻してやる処理が必要です。 この点を工夫して下さい。 #include <stdio.h> void main(){ char moji; int a; printf("入力文字:"); scanf("%c",&moji); a=2; moji += a; printf("暗号化された文字= %c \n",moji); moji -= a; printf("複合化された文字= %c \n\n",moji); }
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ヒント : moji % 'z'
その他の回答 (3)
- episteme_at_goo
- ベストアンサー率25% (9/36)
1. 足しすぎて'z'を上回ったら'z'を引いて'a'を足す 2. 引きすぎて'a'を下回ったら'a'を引いて'z'を足す
- a-saitoh
- ベストアンサー率30% (524/1722)
問題文でもう十分すぎるほどヒントは言われているので、これいじょうヒントの出しようがないです。答えそのものになっちゃいます。 冷静に、問題文を読んで考えてください。 シーザー暗号 で検索するのも良いでしょう。ただ、検索して答えそのものが出てきてしまう危険性があります。ここで答えを丸写しにして理解しないままで済ますと、次のさらに難しい課題でもっと苦しむことになります。
- keibou21
- ベストアンサー率31% (18/58)
ヒント:値域判定を行う。