C言語なら俺に聞け(入門篇) Part 24at TECH
C言語なら俺に聞け(入門篇) Part 24 - 暇つぶし2ch33:デフォルトの名無しさん
08/01/23 22:37:39
質問です。
#include <stdio.h>

int main(void)
{
static char *month[] = {"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"};
int i;
char *p;
for(i = 0; i < sizeof(month)/sizeof(month[0]); i++){
for(p = month[i]; *p != '\0'; p++)
if(*p == 'r')
break;
if(*p != '\0')
puts(month[i]);}
return 0;
}
これを小文字のrだけじゃなく大文字のRも大丈夫なようにするにはどうすればいいのでしょうか?

34:デフォルトの名無しさん
08/01/23 22:38:44
'R' とも比較する

35:デフォルトの名無しさん
08/01/23 22:39:09
toupper((unsigned char)*p) == 'R'

36:デフォルトの名無しさん
08/01/23 22:39:38
>>33
if((*p == 'r') || (*p == 'R'))

tolower()

37:デフォルトの名無しさん
08/01/23 22:39:41
if(*p == 'r' || *p == 'R')

38:デフォルトの名無しさん
08/01/23 22:43:00
あぁ成る程。||を使えばよかったんですね。
どうもありがとうございました。

39:デフォルトの名無しさん
08/01/23 23:28:02
scanf()で文字を読み込むときに\nが残るってはなしじゃねーの?

40:デフォルトの名無しさん
08/01/24 06:17:38
void wall(int p,int q)
{if (meiro[p][q]!=1)
{int dir;
meiro[p][q]=3;
dir = rand()%4+1;
if (dir==1&&meiro[p+2][q]!=3)
{meiro[p+1][q]=3;
wall(p+2,q);}
if (dir==2&&meiro[p-2][q]!=3)
{meiro[p-1][q]=3;
wall(p-2,q);}
if (dir==3&&meiro[p][q+2]!=3)
{meiro[p][q+1]=3;
wall(p,q+2);}
if (dir==4&&meiro[p][q-2]!=3)
{meiro[p][q-1]=3;
wall(p,q-2);
}}}
p,qはmeiro[p][q]に対応していて、meiro[偶数][偶数]の点です。
迷路を自動生成するプログラム作ってます。
色々調べて壁伸ばし法で作ることにして、wall関数なるものを自作しました。
0:道 1:壁 3:作りかけの壁

一応、迷路っぽいものはできるのですが、なんというかすかすかのものができてしまいます。

41:デフォルトの名無しさん
08/01/24 10:09:40
続きは?

42:デフォルトの名無しさん
08/01/24 18:13:59
>>40
C言語っつーよりアルゴリズムの問題だと思うけど、
どのみちそこだけ出されてもなんとも言えない
wallをどういう風に呼んでるかとか、
どのタイミングと条件でmeiro[x][y]を1にセットするのかとか
わからないと

43:デフォルトの名無しさん
08/01/24 20:39:20
しかしみずれえソースだな

44:デフォルトの名無しさん
08/01/24 20:45:25
>>40
伸ばす方向に壁ができてたらそれで終わりにしないで、空いている方向を選ぶようにしてみたら?


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch