tryしてみてください
入力した文字列(英語)を指定された文字数だけ後にスライドし文字列の暗号化を行うプログラムを作成せよ
ただし、zの次はA、Zの次はaになるようにせよ。
if switch for while do-while 配列 をなるべく使う。
<実行結果>
暗号化する英文を入力してください
society
スライドする文字数を入力してください
5
暗号化後の文字列
HmztZsnAjwxnyD
この設問文章と実行結果の例では「後にスライド」の意味するところが判らんですね。
理解力のない学生向けに「aを5文字スライドしたらfになる」とかヒント書いておけばいいのにさ。
中央大学もつまらん課題を出すものですねぇ。
実行結果と合いませんが、参考までに。
#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;
}
#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;
}
}
tryするのが最優先ですか?
try{
if( 自分に答えられる質問 && 答える時間がある ){
答える
}
}
catch( 質問ではない e1 ){
規約違反処理
}
catch( 丸投げ e2 ){
規約違反処理
}
何に困っているのか分からないので、補足説明をお願いいたします。
- 最新から表示
- |
- 回答順に表示













