質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

2回答

1498閲覧

C++で大文字を小文字に、小文字を大文字に変換するプログラムを作りたいです。

tikakukabin

総合スコア1

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/05/24 16:47

大学でc++を勉強している者です。
課題で「任意の文字列をキーボードから入力し、アルファベットの大文字は小文字に、小文字は大文字に変換して表示する。またアルファベット以外の文字は無視する。」というものが出ました。
課題と一緒に文字コード表が参考資料として添付されていたので恐らく文字コードに32を足したり引いたりするのだとは思うのですが色々調べてみてもやり方がいまいち分かりません。どなたかご教示お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/05/24 17:09

このままでは丸投げです。処理の流れとしては例えばまず、1文字だけを考えます。chとします。 1. chがアルファベット大文字の範囲の文字なら32(0x20)をあれこれして小文字にします。 2. chがアルファベット小文字の範囲の文字なら32(0x20)をあれこれして大文字にします。 3. 1.でも2.でもなければ何もしません。 1.から3.の間を、キーボードから取得した文字列の文字数分繰り返します。 ...で分かりますでしょうか。
tikakukabin

2020/05/24 17:21

そうですね、このままでは丸投げでした。 少しわかったような気がするので、回答を参考に色々試してみたいと思います。 ご回答ありがとうございました。
guest

回答2

0

文字列の入力部分のコードだけでも書いてもらえませんか?

変換部分はこんな風にも書けますが、理解できますか?

C++

1#include <cctype> 2 3 if (std::isalpha(c)) std::cout.put('a' ^ 'A' ^ c);

投稿2020/05/25 01:56

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

課題と一緒に文字コード表が参考資料として添付されていたので恐らく文字コードに32を足したり引いたりするのだとは思うのですが色々調べてみてもやり方がいまいち分かりません。

わからんなら愚直に対応表作ってもいいのよ。

C++

1#include <iostream> 2#include <string> 3 4std::string tr(const std::string& in) { 5 // 大文字/小文字 対応表 6 static const std::string upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 7 static const std::string lower = "abcdefghijklmnopqrstuvwxyz"; 8 9 std::string out; 10 for ( char ch : in ) { 11 std::string::size_type pos; 12 // アルファベットの大文字は小文字に、 13 if ( (pos = upper.find(ch)) != std::string::npos ) out.push_back(lower.at(pos)); 14 // 小文字は大文字に 15 if ( (pos = lower.find(ch)) != std::string::npos ) out.push_back(upper.at(pos)); 16 // アルファベット以外の文字は無視する。 17 } 18 return out; 19} 20 21// おためし 22int main() { 23 std::cout << tr("I have 2 PCs") << std::endl; 24}

投稿2020/05/25 00:21

編集2020/05/25 02:25
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問