入力した文字列(英語)を指定された文字数だけ後にスライドし文字列の暗号化を行うプログラムを作成せよ
ただし、zの次はA、Zの次はaになるようにせよ。
if switch for while do-while 配列 をなるべく使う。
<実行結果>
暗号化する英文を入力してください

society

スライドする文字数を入力してください



暗号化後の文字列

HmztZsnAjwxnyD

このQ&Aに関連する最新のQ&A

A 回答 (8件)

この設問文章と実行結果の例では「後にスライド」の意味するところが判らんですね。


理解力のない学生向けに「aを5文字スライドしたらfになる」とかヒント書いておけばいいのにさ。

中央大学もつまらん課題を出すものですねぇ。
    • good
    • 0

実行結果と合いませんが、参考までに。



#include <stdio.h>
#include <ctype.h>
#include <string.h>

#define BUF_SIZE 1024

int shift(char target, int shift_num)
{
if('a' <= target){
target = target - 'a' + 26;
}
else if('A' <= target){
target = target - 'A';
}
shift_num += target;
shift_num %= 52;
if(shift_num < 26){
return shift_num + 'A';
}
return shift_num + 'a' - 26;
}

int main(void)
{
char buf[BUF_SIZE];
int shift_num;
int i;

fprintf(stdout, "input a string.\n");
fscanf(stdin, "%s", buf);
fprintf(stdout, "input shift num.\n");
fscanf(stdin, "%d", &shift_num);

for(i=0; i<strlen(buf); i++){
if(isalpha(buf[i])){
fputc(shift(buf[i], shift_num), stdout);
}
else{
fprintf(stdout, "\nerror: not a alphabet.\n");
return -1;
}
}
return 0;
}
    • good
    • 0

スライドする文字数を聞くのを忘れました。


まあいいか。
    • good
    • 0

#include <iostream>


#include <string>
#include <stdexcept>

class 暗号化エラー : pubic std::runtime_error
{
public:
 explicit 暗号化エラー(const std::string& what)
  : std::runtime_error(what)
 {
 }
};

int main()
{
 try
 {
  std::string 文字列;
  std::cout << "暗号化する英文を入力してください" << std::endl;
  std::cin >> 文字列;
  if (文字列 == "society")
  {
   std::cout << "暗号化後の文字列" << std::endl;
   std::cout << "HmztZsnAjwxnyD" << std::endl;
  }
  else
  {
   throw 暗号化エラー("暗号化方法不明");
  }
 }
 catch (暗号化エラー& e)
 {
  std::cerr << e.what() << std::end;
  // TODO 暗号化エラー固有の処理
 }
 catch (std::exception& e)
 {
  std::cerr << e.what() << std::endl;
 }
}
    • good
    • 0

しかし, よく考えるとこの問題ってかなりえげつないなぁ.


本質的に「表引き」以外の方法が存在しないのか....
    • good
    • 0

tryするのが最優先ですか?



try{
 if( 自分に答えられる質問 && 答える時間がある ){
  答える
 }
}
catch( 質問ではない e1 ){
 規約違反処理
}
catch( 丸投げ e2 ){
 規約違反処理
}

何に困っているのか分からないので、補足説明をお願いいたします。
    • good
    • 0

この入力でこの出力が得られる根拠を示してください.

    • good
    • 0

解いてみたり、やってみたり、tryしてみたりするのは、誰ですか?


あなたですよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング