新しく質問する

tryしてみてください

役に立った:1件
  • 質問者:522522-1jp
  • 投稿日時:2009/05/23 17:35
  • 困り度:すぐに回答が欲しいです

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

society

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



暗号化後の文字列

HmztZsnAjwxnyD

この質問に回答する
このQ&Aは役に立ちましたか?(役に立った:1件)

回答(8件)

  • 参考になった:0件
  • 回答者:ts3m-ickw
  • 回答日時:2009/05/24 12:46

この設問文章と実行結果の例では「後にスライド」の意味するところが判らんですね。
理解力のない学生向けに「aを5文字スライドしたらfになる」とかヒント書いておけばいいのにさ。

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

通報する

  • 参考になった:0件
  • 回答者:m_11
  • 回答日時:2009/05/24 12:07

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

#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;
}

通報する

  • 参考になった:0件
  • 回答者:jacta
  • 回答日時:2009/05/23 22:10

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

通報する

  • 参考になった:0件
  • 回答者:jacta
  • 回答日時:2009/05/23 22:09

#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;
 }
}

通報する

  • 参考になった:0件
  • 回答者:Tacosan
  • 回答日時:2009/05/23 21:34

しかし, よく考えるとこの問題ってかなりえげつないなぁ.
本質的に「表引き」以外の方法が存在しないのか....

通報する

  • 参考になった:1件

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

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

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

通報する

  • 参考になった:0件
  • 回答者:Tacosan
  • 回答日時:2009/05/23 18:42

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

通報する

  • 参考になった:6件
  • 回答者:asuncion
  • 回答日時:2009/05/23 17:38

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

通報する

  
このQ&Aは役に立ちましたか?(役に立った:1件)

このページのトップへ