シーザー暗号を造るプログラム003
/*暗号化前の文字列に日本語や空白は入れられないが、「,」と「.」と「?」と「!」と空白の代わりに「&」を入れることで解決する方法が出来ました。具体的には下記の様になります。*/
#include <stdio.h>
#define LEN 255
int main(void)
{
char string[LEN];
char ango[LEN];
int key, n, i;
printf("英文を入力(英大小文字と,と.と?と!と&のみ):");
scanf("%s", string);
printf("鍵を入力:");
scanf("%d", &key);
i = 0;
while (string[i] != 0) {
if (('a'<=string[i])&&(string[i]<='z')) {
n = (string[i] - 'a' + key + 26) % 26;
ango[i] = 'a' + n;
} else if (('A'<=string[i])&&(string[i]<='Z')) {
n = (string[i] - 'A' + key + 26) % 26;
ango[i] = 'A' + n;
} else if (string[i] == ',') {
ango[i] = ',';
} else if (string[i] == '.') {
ango[i] = '.';
} else if (string[i] == '?') {
ango[i] = '?';
} else if (string[i] == '!') {
ango[i] = '!';
} else if (string[i] == '&') {
ango[i] = '&';
} else {
printf("正しく入力してください。");
break;
}
i++;
}
ango[i] = 0;
printf("暗号文:%s\n", ango);
return 0;
}
/*このプログラムをsiezer003.cと名前を付けてホームフォルダに保存し、
Linux端末で
$gcc siezer003.c -o siezer003.out
とコンパイルし、Linux 端末で
$./siezer003.out
とすれば
「英文を入力:」
と出て来るので英文を入力(空白の代わりに&を入力)し、ENTERキー
次に
「鍵を入力:」
と出て来るので-32767~32767までの半角数字を入力、ENTERキーで「暗号文:暗号化後の文字列」が表示されます。
英文以外を入力すると「文字が違います。」とエラーの表示も出ます。*/
| 固定リンク
「プログラミング言語」カテゴリの記事
- eclipseの楽しみ・CVS(2010.04.03)
- シーザー暗号を造るプログラム003(2010.02.25)
- コンパイルエラー・・・001(2010.02.19)
- Javaの継承と例外処理の一例(2009.10.10)
- Javaの勉強法001(2009.09.29)
コメント