ページ 11

教えてください

Posted: 2007年5月04日(金) 00:10
by black
課題について教えていただきたいのですが。
課題の内容は
#include <iostream>

main()
{
char c;
int i;
std::cout << "文字を入力してください: ";
std::cin >> c;
i = c;
std::cout << "入力された文字は " << c << " です" << std::endl;
std::cout << "数値で表すと " << i <<" です" << std::endl;
}
上記を基に、入力された文字が小文字ならば対応する大文字を、大文字ならば対応する小文字を返すプログラムを作りなさい。
入力された文字が小文字なのか、大文字なのかを適切に判断すること。記号や数字が入力された場合にはエラーメッセージを表示するように。
*各種アルファベットが数値としてどのような値を持っているのか調べてから、どうすれば変換できるのか方法を考えるとよい。
というものなのですが、数字を使って計算してはだめとのことなので困っています。
ご教授お願いします。

Re:教えてください

Posted: 2007年5月04日(金) 00:31
by box
そのプログラムに対して、
・英小文字のa~z
・英大文字のA~Z
を一つ一つ入力データとして与え、
実行結果がどうなるかを確認してください。

もしかすると、全部地道にやらなくても、
最初のいくつかの実行結果から残りの結果を
推測できるかもしれません。

a~zおよびA~Zが数値としてどんな値を持つかがわかったら、
例えばaをAに変換する(数値を使わないで)にはどうすればよいか、
逆にAをaに変換するにはどうすればよいかが
見えてくるかもしれません。

Re:教えてください

Posted: 2007年5月04日(金) 01:02
by 管理人
ヒントは、
aの文字コード - Aの文字コード が何になるか
bの文字コード - Bの文字コード が何になるか
表示させてみてください。
すぐにわかるはずですよ。

Re:教えてください

Posted: 2007年5月04日(金) 01:40
by black
返事ありがとうございます。
考えた結果このようになったのですが、これでよいのでしょうか。
#include <iostream>

main()
{
char c;
int i;
std::cout << "文字を入力してください: ";
std::cin >> c;
i = c;
std::cout << "入力された文字は " << c << " です" << std::endl;

if(c>='A' && c<='Z'){
c+='a'-'A';
std::cout << "小文字にすると " << c << " です" << std::endl;

}else if(c>='a' && c<='z'){
c-='a'-'A';
std::cout << "大文字にすると " << c << " です" << std::endl;

}else{
std::cout << "アルファベットだけ入力してください" << std::endl;
}
}

Re:教えてください

Posted: 2007年5月04日(金) 01:57
by black
追記
当方、大学2年でC言語を学び始めたのでC言語について全くといっていいほどわかりません。
環境は、大学で作成およびコンパイルしていて家には作成環境がありません(PCはあります)
どうか、わかりやすく教えてください。

Re:教えてください

Posted: 2007年5月04日(金) 09:24
by 管理人
いいんじゃないですか^^
特に間違っている箇所も無いように思いますし、エラー処理も書いてあって、課題にある数値も使ってないので要求に合っているように思います。☆

Re:教えてください

Posted: 2007年5月04日(金) 11:34
by black
ありがとうございました!
おかげで解決することができました。また何かあったらよろしくお願いします。