暗号文のプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ダメだ

暗号文のプログラム

#1

投稿記事 by ダメだ » 18年前

忙しい中失礼します。プログラムに関する質問です。
現在C言語で暗号文のプログラムを作成しています。プログラムの過程は以下の通りです。

1.ユーザーに 1暗号化/2標準化/3中止(何もしない)を選択させる
2.ABC(標準文)→DEF(暗号文)に変換[3文字ずらす] 最大入力80文字
3.DEF(暗号文)→ABC(標準文)に変換[3文字戻す] 最大入力80文字

というようにプログラムを組むものです。
で、質問です。

質問. どうすれば、1.文の中で1(暗号化)を選択した後、2.の処理を行ってもらえるのでしょうか? 
補足質問. 2.と3.において、どうすれば最大入力80文字を設定することが出来るのでしょうか?

アドバイス等あれば回答願います。


1.文のプログラム printf("You select encrypt.\n"); 部分に作成した2.文(下記文参照)を入れても、2.の処理を行ってもらえません。

ソフト使用環境:Borland C ?? (多分最新版です。C、C++使用可)
パソコン環境:Windows XP

1.文のプログラム
#include <stdio.h>
#include <stdlib.h>

int main()
{
int num1;

printf("What do you want? Select the number\n");
printf(" 1.encrypt(暗号化) Cange decryption letters into encryption letters\n");
printf(" 2.decrypt(標準化) Cange encryption letters into decryption letters\n");
printf(" 3.quit You don't need to write letters.\n");

printf("Enter the number: ");
scanf("%d", &num1);

if(num1 == 1)
{
printf("You select encrypt.\n"); ←ココに2.文のプログラムを入れようとしています。
}

else if(num1 == 2)
{
printf("You select decrypt.\n");
}

else
{
printf("You don't do anything.\n");
}


system("PAUSE");
return 0;
}

2.文のプログラム
int main(void)
{
char *upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int c, i;

while((c = getchar()) != '\n'){

for(i = 0; upper; i++)
{
if(c == upper)
{
c = upper[(i + 3) % 26];
break;
}
}
putchar(c);
}
system("pause");
return 0;
}

たかぎ

Re:暗号文のプログラム

#2

投稿記事 by たかぎ » 18年前

> 質問. どうすれば、1.文の中で1(暗号化)を選択した後、2.の処理を行ってもらえるのでしょうか? 

system 関数を使うのが一番簡単です。

> 補足質問. 2.と3.において、どうすれば最大入力80文字を設定することが出来るのでしょうか?

最大文字数が決まっているのであれば、
char s[80+1];
scanf("%80[A-Z]", s);
のようにするのが一番簡単です。
fgets を使ってもよいのですが、改行文字を除去するのが面倒です。

ダメだ

Re:暗号文のプログラム

#3

投稿記事 by ダメだ » 18年前

早速の回答ありがとうございます。
2.と3.について質問があります。

char s[80+1];
scanf("%80[A-Z]", s);

の文ですが、2.文のプログラムのどこに その文 を(訂正して?)入れれば良いのでしょうか?
想像すらつきません。
お手数かと思いますが、もう少し詳しく教えて頂きますか?
system関数ですか?? ネットで調べてみます。アドバイスありがとうございました。

Re:暗号文のプログラム

#4

投稿記事 by » 18年前

配列にコピーするときに数字を足していったら良いんじゃないかな?

test = moji + 3;

これはできなかったっけ・・・?
とりあえず、配列のコピーでその間をいじればいいかと思います。

ダメだ

Re:暗号文のプログラム

#5

投稿記事 by ダメだ » 18年前

分かりました。
何とかやってみます。
アドバイスありがとうございました。

たかぎ

Re:暗号文のプログラム

#6

投稿記事 by たかぎ » 18年前

> test = moji + 3;
>
> これはできなかったっけ・・・?

できますが、'Z' を超えたときの処理が必要です。
なお、これが「できる」のは処理系が特定されているからであって、厳密な意味での移植性はありません。

閉鎖

“C言語何でも質問掲示板” へ戻る