- 1 名前:('A`) mailto:sage [2008/01/23(水) 19:12:56 ]
- C言語の入門者向け解説スレです。
・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 23 pc11.2ch.net/test/read.cgi/tech/1198295362/ 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 103代目 pc11.2ch.net/test/read.cgi/tech/1200318925/
- 22 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:12:36 ]
- 打ち切り誤差
- 23 名前:デフォルトの名無しさん [2008/01/23(水) 22:14:35 ]
- >>22
直す方法は何かなっいですか?
- 24 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:15:37 ]
- double ならある程度マシにはなる。
それもいやなら固定小数点でググれ。
- 25 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:16:10 ]
- printf("%.1f",f); でごまかす
- 26 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:16:25 ]
- 固定小数点でも同じだろ。
- 27 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:17:07 ]
- 10進固定小数点なら大丈夫だろ。
100.1 に関しては。
- 28 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:18:23 ]
- 「10進固定小数点」とか新語を作るなよ。
- 29 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:19:58 ]
- BCDと固定小数点がごっちゃになってるやつ多いな。
- 30 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:22:11 ]
- 例えば10倍の下駄をはかせばいいだけだろ?
- 31 名前:デフォルトの名無しさん [2008/01/23(水) 22:30:58 ]
- すみません、21ですが、
誤差はしょうがないということでおkですね。
- 32 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:33:55 ]
- 常に値を 10 倍した形で int 型で扱えば大丈夫。
- 33 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:38:44 ]
- 'R' とも比較する
- 35 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:39:09 ]
- toupper((unsigned char)*p) == 'R'
- 36 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:39:38 ]
- >>33
if((*p == 'r') || (*p == 'R')) tolower()
- 37 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:39:41 ]
- if(*p == 'r' || *p == 'R')
- 38 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:43:00 ]
- あぁ成る程。||を使えばよかったんですね。
どうもありがとうございました。
- 39 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:28:02 ]
- scanf()で文字を読み込むときに\nが残るってはなしじゃねーの?
- 40 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 10:09:40 ]
- 続きは?
- 42 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 18:13:59 ]
- >>40
C言語っつーよりアルゴリズムの問題だと思うけど、 どのみちそこだけ出されてもなんとも言えない wallをどういう風に呼んでるかとか、 どのタイミングと条件でmeiro[x][y]を1にセットするのかとか わからないと
- 43 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:39:20 ]
- しかしみずれえソースだな
- 44 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:45:25 ]
- >>40
伸ばす方向に壁ができてたらそれで終わりにしないで、空いている方向を選ぶようにしてみたら?
|

|