教えてください

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

教えてください

#1

投稿記事 by black » 18年前

課題について教えていただきたいのですが。
課題の内容は
#include <iostream>

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

box

Re:教えてください

#2

投稿記事 by box » 18年前

そのプログラムに対して、
・英小文字のa~z
・英大文字のA~Z
を一つ一つ入力データとして与え、
実行結果がどうなるかを確認してください。

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

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

管理人

Re:教えてください

#3

投稿記事 by 管理人 » 18年前

ヒントは、
aの文字コード - Aの文字コード が何になるか
bの文字コード - Bの文字コード が何になるか
表示させてみてください。
すぐにわかるはずですよ。

black

Re:教えてください

#4

投稿記事 by black » 18年前

返事ありがとうございます。
考えた結果このようになったのですが、これでよいのでしょうか。
#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;
}
}

black

Re:教えてください

#5

投稿記事 by black » 18年前

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

管理人

Re:教えてください

#6

投稿記事 by 管理人 » 18年前

いいんじゃないですか^^
特に間違っている箇所も無いように思いますし、エラー処理も書いてあって、課題にある数値も使ってないので要求に合っているように思います。☆

black

Re:教えてください

#7

投稿記事 by black » 18年前

ありがとうございました!
おかげで解決することができました。また何かあったらよろしくお願いします。

閉鎖

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