概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C 例題3 複雑な条件式と条件判断
2006年07月18日 (火) | 編集 |
if elseによる分岐と論理演算子を使った条件式を組み合わせたプログラムを作ってみる
条件判断とか制御構造とかはいろいろとややこしそうなのでここらで一度おさらい。
おさらいつっても2項目分しか進めてないんだけどな。

まあ足元を確かにするのは大事なこと、ということで。


勝利条件:
「入力された文字が小文字なら大文字に変換するプログラムを組めや」


攻略方法:
数値はともかく突然文字とか言われても困るわ…!って感じではあるが、アルファベットのA~Z、もしくはa~zはアスキー・コードによって特定の順序で数値に対応しているので

'a'<=c && c<='z'

という式で「変数cはa~zである」ということを表現することが出来る。aとzを'(単一引用符、シングルコーテーション)で括ることを忘れないように。これは文字を文字として扱う為のお約束だ。

logictest3.jpg
こんな感じ

これで「変数cがa~zの場合」と「そうでない場合」の条件式が定義された。

次に、入力された小文字を大文字に、もしくは大文字を小文字に変換する方法を見てみよう。これも文字はアスキー・コードで数値として扱えるというのを利用して…

大文字化

c=c-('a'-'A');

小文字化

c=c+('a'-'A');

で表現出来る。
これもこれで何なのよ訳分からないわ説明してその女誰よって感じなのだが俺も上手く説明出来ないので実際にやってみた方が早い。その女って誰だよ。

例:小文字のdを大文字に変換する場合

aのアスキー・コードでの数値は97であり、Aは65である。
よって'a'-'A'=32

dの数値は100なので
c=100-32=68

そして68というのはDである。
小文字化する場合は逆に68に32が足されるだけなので100になり、dになる。

ってこれ最初から
c=c+32 あるいは c=c-32 
でいいんじゃねー? 後で試してみよう。

とにかく、これで大文字化、小文字化は出来る。

logictest4.jpg
こんな感じ

実行してみよう。

logictest5.jpg


概ねOK。

ううむ大したことはやってないのに何か面白いな…

コードをかくのが こんなに いいなんて…
わたし、へんに なっちゃったのかしら
ゆびが、ゆびがとまらないの


まあ難しくなったら頭抱えて唸って投げ出したくなって苦悩するだろうから、真面目にやるのはその時からでも遅くはなかろうよ。


おまけ

c=c-32でもよくねー?

実際にやってみた
logictest6.jpglogictest7.jpg

いいらしい。


getcharの代わりにscanfは使えねーの?

やってみた
logictest8.jpglogictest9.jpg

いいらしい。
でも面倒臭い。getcharでいいよgetcharで。


条件式って複数定義出来る?
cがa~z「または」A~Zみたいな。

やってみた
logictest10.jpglogictest11.jpg

叱られた。駄目だとさ。
ひとつのif文に2つ以上の論理演算子は置けないっぽい…?

まあアルファベットかどうかだけの判定ならこれでいいんだが
logictest12.jpglogictest13.jpg

ここら辺は別の条件判断構文とか押さえた後で調べてみよう。
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。