C言語なら俺に聞け(入門編)Part 109at TECH
C言語なら俺に聞け(入門編)Part 109 - 暇つぶし2ch1:デフォルトの名無しさん
12/10/17 17:14:15.23
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 108
スレリンク(tech板)
★過去スレ
URLリンク(makimo.to:8000)
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 159代目
スレリンク(tech板)
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
URLリンク(codepad.org)
URLリンク(ideone.com)
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

2:デフォルトの名無しさん
12/10/17 18:13:04.11
< `∀´> ニダー

3:デフォルトの名無しさん
12/10/17 20:31:39.26
/* NOTREACHED */

4:デフォルトの名無しさん
12/10/17 20:38:19.12
/* FALLTHROUGH */

5:デフォルトの名無しさん
12/10/17 20:59:35.78
lint厨か

6:デフォルトの名無しさん
12/10/18 00:19:47.74
え?lint 使える環境まだあるの?kwsk

7:デフォルトの名無しさん
12/10/18 00:23:16.69
BSD系

8:デフォルトの名無しさん
12/10/18 17:48:24.07
小学校の先生とプログラマってどっちがデスクワーク多い?


9:sage
12/10/18 17:53:55.34
みなさま、お知恵をお貸しください。

私は、関数電卓を作っている者です。

文字列を構文解析し、現れたワードごとに演算を行うという簡単なプログラムです。

私は、ある問題に直面しました。

sin(n*M_PI)が0にならないのです。(nは整数です)
DBL_EPSILONを使った切り捨ては試しました。

しかしながら、nが大きくなると再び誤差が表示されてしまいます。
例 sin(1000000*M_PI)=誤差

この誤差はgoogle電卓でも現れました。
驚いたことに、市販の関数鵜電卓では、いっさいこの誤差が現れません。

C言語で、市販の関数電卓のように誤差をなくすにはどうしたらよいでしょうか?

詳しい方ご教授お願いします。


10:デフォルトの名無しさん
12/10/18 18:09:58.38
                |
                |
                |
                |
     /V\        ,J
    /◎;;;,;,,,,ヽ
 _ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'

11:デフォルトの名無しさん
12/10/18 18:16:38.57
nが整数かどうかを
まず判定すりゃいいじゃん


12:デフォルトの名無しさん
12/10/18 18:30:11.58
SINの中にM_PIが入ってたら2M_PIでmodするようにすれば?

13:デフォルトの名無しさん
12/10/18 18:50:05.67
10年ぶりにunixCの開発に関わって、修正差分見ていたら
memcpy(wk, '\0', sizeof(wk));
なんて見つけたんだけど、なぜかコアは吐かないし同じ使い方してる本番アプリが他にもある
コンパイル調べたらなんか「NULL文字ポインタ」だとかで、
実験したら最大8192バイトまでヌルの配列が取れるようでカルチャーショックを受けました

でも書くならNULLだろ、'\0'は文字だろとか思ったけれど、俺はもう古い人間だってことでしょうか?

memcpy(wk, " ", sizeof(wk)); のほうはさすがに理解してないようですが

14:デフォルトの名無しさん
12/10/18 18:51:22.23
その市販関数電卓で sin(0.1)-sin(1000000*PI+0.1) を計算させてみてほしい

15:デフォルトの名無しさん
12/10/18 18:52:47.93
>>13
日本語で

16: ◆QZaw55cn4c
12/10/18 19:11:12.27
>>13
>書くならNULLだろ
残念ながらこの場合は URLリンク(www.kouno.jp) の「ASCIIのナル文字(NUL)」だ
書くなら 0 だ

>俺はもう古い人間だってことでしょうか?
古いだけでまったくわかっていない人間だってことだ、猛省しろ


17:デフォルトの名無しさん
12/10/18 19:18:10.39
え?いいの?

18:sage
12/10/18 19:23:01.56
>>11さん
>>12さん
返信ありがとうございます。double型でmodが使えるんですね。初めて知りました。

if(fmod(SINの中身,M_PI)<DBL_EPSILON && fmod(SINの中身,M_PI)>-DBL_EPSILON){
return 0;
}else{
return sin(SINの中身);
}
てなかんじですかね?

>>14さん
返事ありがとうございます
3.3727E-9です

19:デフォルトの名無しさん
12/10/18 19:27:14.43
>>18
> 3.3727E-9です
つまり、整数*pi の時だけ特別扱いしてるってことだな


20:デフォルトの名無しさん
12/10/18 19:27:56.61
>>16
memcpyの第2引数が何であるべきか調べてから書け

21:sage
12/10/18 19:30:47.41
>>19さん
そのようです。
はずかしながら、私は整数の判別法が思いつきません。
キーを監視するしかないのでしょうか?

22:デフォルトの名無しさん
12/10/18 19:34:32.59
>>16
>>13が言いたいのはmemcpy( void *dest, const void *src, size_t count )の引数srcはポインタなのに'\0'=0=NULLポインタを渡して大丈夫なのかという事だと思うの。
memset( void *dest, int c, size_t count )の引数cならintだからナル文字だけど、memcpyの場合はぬるぽと解釈されているはずだからね。
よく見ずにレスしちゃったんだね。猛省だね。

23: ◆QZaw55cn4c
12/10/18 19:36:30.92
>>20
memset() と思い込んでいた。

>>16
古いだけでまったくわかっていない人間だったのは俺だった。猛省する。

24:デフォルトの名無しさん
12/10/18 19:36:40.47
トークンが実数か整数かなんて文字列的にわかりそうなもんだけど

25:デフォルトの名無しさん
12/10/18 19:40:03.10
許してやるよ

26:デフォルトの名無しさん
12/10/18 19:51:15.96
>>24
変数だったらどうすんの?
sin(sin(pi/2)*2*pi)だったら?

27:デフォルトの名無しさん
12/10/18 19:58:13.31
>>13
まず、このコードでcoreを吐くかどうかは、OS, アーキテクチャによるが、
一般にはcoreを吐きうる不正なプログラム。

次に、'\0' は整数の 0 とまったく区別はなく、
ポインタやポインタ引数に代入されたら NULL と同じになる。


28:デフォルトの名無しさん
12/10/18 20:05:17.20
>>26
字句解析した時点で定数の型は分かるじゃん。
計算して求まる値は整数同士なら結果も整数とか決めておけばいいし、
変数は値を設定する時にどの型かわかるじゃん。


29:デフォルトの名無しさん
12/10/18 20:06:52.80
整数同士を足したら結果も整数、とか

30:デフォルトの名無しさん
12/10/18 20:10:38.26
ごめんやっぱ嘘でw

31:デフォルトの名無しさん
12/10/18 20:11:01.44
というか、指定した1文字(この場合'\0')で領域を初期化することに対して、
memsetではなくmemcpyを使用するメリットが分からない。
紛らわしいだけでしょ、絶対にレビューでつつかれるわ。
>>13の検証によると8192バイトの制限まであるらしいし。
処理速度でも違うのかね?

32:デフォルトの名無しさん
12/10/18 20:12:24.42
携帯から稚拙な文で失礼しました、一般には不正な文と見て良いようで安心しました。
このサイトでは問題なく動くのだから受け入れます。ポインタに'\0'を使うのは違和感ありますが、慣れます

33:デフォルトの名無しさん
12/10/18 20:15:02.49
たまたま0番地から8Kゼロなページがマップされてる環境なのでは

34:デフォルトの名無しさん
12/10/18 20:20:24.55
>>32
> 慣れます
慣れずに、こんな糞コード書くな、正解はこうじゃ、って修正してやる気概が必要


35:デフォルトの名無しさん
12/10/18 20:23:48.28
Oracle関係のらしく ccに-v /(忘れた)/0@0.so.1 付けたら落ちない、付けないとコアです
makeの詳細は理解していないのでこれ以上は解らない、参照でポインタを0から回したら8192で落ちます

36:デフォルトの名無しさん
12/10/18 20:27:14.83
>>23みたいにmemsetとmemcpyをとりちがえて、たまたま動いて、そのままってケースかな

37:sage
12/10/18 21:39:03.29
みなさま
様々な回答ありがとうございます。

整数の判断について調べていたところ
floor()==ceil()の条件式を使うと良いことがわかりました。

if (floor(x/PI)==ceil(x/PI)) {
return 0;
}else{
return sin(x);
}

コードはこのようになります。
これで希望の動作ができるようになりました。

調べていて、「処理理系によってはうまく働かないことがある」
という記述を見つけたので、少し不安ではありますが
これで様子をみてみます。

38:デフォルトの名無しさん
12/10/18 21:40:24.11
マヌケな古いプログラムを救済するために0番地から8Kメモリが割り当てられてるだけだろ。
そんなのになれたら阿寒。

39:デフォルトの名無しさん
12/10/18 21:58:31.92
>>37
> 調べていて、「処理理系によってはうまく働かないことがある」
だろうな


40:デフォルトの名無しさん
12/10/18 23:11:51.53
C言語初心者にオススメの書籍を教えてください

41:デフォルトの名無しさん
12/10/18 23:15:13.34
>>40
ちょっと古いけどK&R

42:デフォルトの名無しさん
12/10/19 00:10:46.51
typedef int (*iarr)[]; // (1)
typedef int (*iarr10)[10]; // (2)

int a[10];

iarr aa1 = &a; // error
iarr10 aa2 = &a; // ok

うーん?
(1)の型は何処で出てくるんだ?

43:40
12/10/19 07:52:13.75
>>41
ありがとうございます!買ってみます

44:デフォルトの名無しさん
12/10/19 09:12:25.42
>>40
独習、初めてのとか、本すれ見たら

45:デフォルトの名無しさん
12/10/19 13:01:31.02
>>43
いえいえ

46:デフォルトの名無しさん
12/10/19 13:12:33.15
>>43
それは古すぎるからやめとけ
つかそもそも本を買うなんてバカな真似はやめておきなさい
図書館で読んで自分に合ってそうなものを持ち帰って読む
重要なところは自分で書き写す
図書館に無ければ注文する
プログラムの勉強は自習するだけならこれで十分
たかが文字情報に金を払う必要は無い
あらゆる情報はすべての人にとって平等で無料かつ自由に扱えるもので有るべきだ

47:デフォルトの名無しさん
12/10/19 13:17:48.63
そんな労力使うくらいなら買った方が安上がりだなwww

48:デフォルトの名無しさん
12/10/19 13:19:44.70
時間の価値は人によって違うからな
本を買った方がいい人と、そうでない人がいる

49:デフォルトの名無しさん
12/10/19 13:29:30.81
お前らはわかってない
時間が大切だからこそ写しなんだよ
いつでもさっと検索してWebより密度の高い情報にアクセスできるという利益はなかなか代えが効くものではない
「あーあれなんだっけな調べよう…でも資料は家だ明日にまわすか」なんてことをしてるからお前らはゴミなんだ

それでもまだこの期に及んで書き写す手間が嫌だというなら機械にやらせれば良い
われわれはIT技術者なのだから物事を自分でやる必要は無い
たった一度の投資で図書館のすべての本が自分のものになるのだからやらない理由は無いぞ


50:デフォルトの名無しさん
12/10/19 13:30:28.73
>>46
K&Rも読みこなせなかったのか?

51:デフォルトの名無しさん
12/10/19 13:32:56.62
>>50
時代にそぐわないと言ったんだが、君の理解力大丈夫か?

52:デフォルトの名無しさん
12/10/19 13:50:22.21
時代にそぐうお前に合ってたすばらしい本挙げてけよ

53:デフォルトの名無しさん
12/10/19 14:07:50.50
「窓から捨ててください」
「焼く捨ててください」

54:デフォルトの名無しさん
12/10/19 17:28:19.52
C言語初心者にK&Rはない

55:デフォルトの名無しさん
12/10/19 17:48:00.17
それしかない時代もあったんだから問題ない。

56:デフォルトの名無しさん
12/10/19 17:59:33.67
問題ないね

57:デフォルトの名無しさん
12/10/19 18:16:46.83
CってK&Rじゃ対応できないほど新しいこと増えた?

58:デフォルトの名無しさん
12/10/19 18:33:41.18
>>57
関数プロトタイプは重要

59:デフォルトの名無しさん
12/10/19 18:42:50.72
>>58
今入手可能なK&R2には書いてあるから

60:デフォルトの名無しさん
12/10/19 18:58:09.20
読み物として面白いのは

「C言語を256倍使う本」
今では不要となった技術がてんこ盛りだが
侍魂にも通じるフォントいじりがなされていて
読んでいてマのなんたるかを直接に面白おかしく知ることができる


61:デフォルトの名無しさん
12/10/19 19:27:39.96
東海道中膝栗毛なみの本だな

62: ◆QZaw55cn4c
12/10/19 20:09:28.86
>>60
どんな本?ちょっとだけ教えて

63:デフォルトの名無しさん
12/10/19 20:11:19.82
Cの初心者ならK&RとエキスパートCプログラミングあたりでいいだろう
コンピュータ自体の初心者なら、ハードルが少し高いかもしれないが

64:デフォルトの名無しさん
12/10/19 20:12:19.34
ans = 'C'<<8;

65:デフォルトの名無しさん
12/10/19 20:32:31.71
>>63
エキスパートCプログラミングは天才達の昔話が読み物としても面白いし、実用小ネタも多くていいよね。
変数や関数の宣言を読み解くフローは目から鱗だったわ。

66:デフォルトの名無しさん
12/10/20 12:21:50.63
目から鱗だったね

67:デフォルトの名無しさん
12/10/20 14:44:29.85
桜庭ななみ

68:デフォルトの名無しさん
12/10/20 15:00:15.50
>>65
>変数や関数の宣言を読み解くフロー
K&R2 にのっているネタでは?

69:デフォルトの名無しさん
12/10/20 16:06:18.09
うん、載ってるよ

70: ◆QZaw55cn4c
12/10/20 16:19:19.93
結論:K&R2 でほぼ十分
反例:K&R2の線形リストは糞実装

71:デフォルトの名無しさん
12/10/20 16:25:37.33
>>70
どういう実装なの?

72:デフォルトの名無しさん
12/10/20 16:50:14.30
自分で嫁馬鹿野郎

73:デフォルトの名無しさん
12/10/20 17:29:23.04
>>71
え?

74:デフォルトの名無しさん
12/10/20 17:51:42.34
>>71
そいつはこの板に粘着している技術力0のクズで、そいつのレスには1㎜の
信ぴょう性もないからかまってはいけない。

75:デフォルトの名無しさん
12/10/20 18:41:36.46
talloc使ってたやつか?

76:デフォルトの名無しさん
12/10/20 19:45:33.56
桜庭ななみ

77:デフォルトの名無しさん
12/10/20 20:45:40.93
桜バナナ実

78:デフォルトの名無しさん
12/10/20 20:47:28.95
>>71
スレリンク(tech板:270-271番)

>>74
零はちょっとかわいそうじゃないですか?0.57721566 くらいは恵んでくださいな

79:デフォルトの名無しさん
12/10/20 21:07:30.00
>>71
線形リストもしらずに「K&R2の線形リストは糞実装」といってるクズだってわかっただろ。
相手にするだけ時間の無駄。

80:デフォルトの名無しさん
12/10/20 21:28:33.55
>>9
バイナリツリーに言及している時点で線形リストは既知と判断するのが普通なのですけれども
K&R2 のその部分が初心者向けで終わっているとのはまぎれもない事実

読んだことないの?

81:デフォルトの名無しさん
12/10/20 21:49:19.21
うん、ないよ

82:デフォルトの名無しさん
12/10/20 23:01:13.64
で、その「クソな実装の線形リスト」はK&Rのどこに載ってるんだ?

83:デフォルトの名無しさん
12/10/20 23:44:09.84
カンカンカンカンカン、終了~

84:デフォルトの名無しさん
12/10/20 23:49:41.92
そこの処理には絶対行かないのに
そこ(whileとかforやブロックの中身)変更すると実行結果が変わる時ってありますか?

printfチェックで
絶対そこの部分には行かないのに
変更すると実行結果が変わってしまいます。

85:デフォルトの名無しさん
12/10/20 23:52:21.47
それはメモリ破壊してます
検査してみて

86:デフォルトの名無しさん
12/10/20 23:56:02.48
絶対行かないとかホザいてるアホは
さっさとその臭いソースを出せよ
お前のタコなソースなんて
オレ様がみりゃー
一発だよ


87: ◆QZaw55cn4c
12/10/21 00:04:08.53
>>84
>>86 と同意見です。この手のバグとりは結構難解で、printf() デバッグではどうしようもなく、デバッガ出動に踏み切らざるを得ないと思います。
もしよろしければソースをみせていただけると何かヒントを提案できるかもしれません。

88: ◆QZaw55cn4c
12/10/21 00:09:59.86
>>82
K&R2 6.5、手元の和訳ではp171とか。
おっとよくみると線形リストじゃなかったね。記憶が混同していました。

ともあれ、ここで終わっているのは非常に惜しい

89:デフォルトの名無しさん
12/10/21 00:13:12.91
またQZの敗北かw

負け惜しみが笑えるww惜しいのはお前だよwwww

90:デフォルトの名無しさん
12/10/21 07:32:20.47
線形リストを知らずに「K&R2の線形リストは糞実装」といってたクズ。
かまわない方がいいって証明できただろ。>>71

91:デフォルトの名無しさん
12/10/21 12:44:19.69
秘密だよ

92:デフォルトの名無しさん
12/10/21 13:42:57.29
>>88
手元の原書だと
6.5 Self-referential Structures (P.139)
(ツリーを使って単語の出現数を出力するプログラム)
だけど合ってる?
何がクソなのか分からない

93:デフォルトの名無しさん
12/10/21 13:54:52.25
>>92
void addtree(struct tnode **p, char *w) {
if (p == NULL) {
...
} else if ( ... ) { ... } else if (cond < 0)
addtree(&((*p)->left), w);
else
addtree(&((*p)->right), w);
}
あるいは
struct tnode *root;
addtree(&root,word);
まで踏み込みたかった。

root = addtree(root, word)
は実にムダにみえないか?

94:デフォルトの名無しさん
12/10/21 14:26:17.01
見える見えないじゃねーんだよ
whyを書けよアホ
自分の能力が低いから「みる」とかアバウトでアホでクズな単語使ってんだろ
そういうやつはお願いだからこのスレに書き込むなよテイノウ

95:デフォルトの名無しさん
12/10/21 14:35:04.24
>>93
>>94
まあまあ、せっかくだから比較してみよう、ちょっと書いてみるわ

96:デフォルトの名無しさん
12/10/21 14:35:51.75
ビット演算が8進数wwwww

97:デフォルトの名無しさん
12/10/21 14:40:18.78
クズは他人のものにケチつけるより、自分のコードからムダを省くよう努力しろよw

98:92
12/10/21 14:48:16.83
>>93
つまり、addtree()の返り値の代入は、最初の一回以外ずっと同じ値の
コピーだからムダだ。ってこと?

分からんでもないけど、K&Rのコードのシンプルさ(分かりやすさ)の方が
入門書には合ってると思う。

ググったらこのページが見つかった
URLリンク(www.s.kyushu-u.ac.jp)
K&R 2ndの件のページと同じコードだと思う

99:デフォルトの名無しさん
12/10/21 15:24:35.93
結構違った
URLリンク(ideone.com)

>>98
シンプルにしておけ!この間抜けの原則だっけか。そうか、それがあったな。

100:デフォルトの名無しさん
12/10/22 06:19:24.02
>>98
そうそう。
慣れてくると、メンバ変数のポインタを渡すほうがわかりやすかったりする。

>分からんでもないけど、K&Rのコードのシンプルさ(分かりやすさ)の方が
>入門書には合ってると思う。
入門書としては確かにそうだと思う。誰しも最初はこれからスタートする。
K&R は入門書だが、無理やりK&R を批評したかっただけかもしれませんね。
スレリンク(tech板:403番) に比較を書いてみました、基本書かないと理解できない体質です。

>>94
why そのものが書いてあるのにわからない?
みえる、という単語に反応し過ぎてみえなくなったのね

>>97
今後とも精進して参ります

101:デフォルトの名無しさん
12/10/22 06:25:16.95
>>100
コテつけろよ。
returnするほうが明らかにわかりやすい。

102:デフォルトの名無しさん
12/10/22 06:28:14.04
バイナリーツリーを必死こいて実装するようなやつが慣れとかw

103:デフォルトの名無しさん
12/10/22 13:54:58.33
ふっふっ

104:デフォルトの名無しさん
12/10/22 14:29:22.16
へっへっ

105:デフォルトの名無しさん
12/10/22 18:44:55.97
>>100
テメーがヘボなのを言語(Java)の所為にしないように。ゴミクズにレクチャーするのは無駄だからしないが。

106:デフォルトの名無しさん
12/10/22 19:07:34.22
>>105
できないのね

107:デフォルトの名無しさん
12/10/22 19:14:11.28
ああ、バカにレクチャーするのは完璧なる無駄だから、出来ねーな。

108:デフォルトの名無しさん
12/10/22 19:21:35.95
>>107
できないのね

109:デフォルトの名無しさん
12/10/22 19:41:50.68
ああ、バカにレクチャーするのは完璧なる無駄だから、出来ねーな。

110:デフォルトの名無しさん
12/10/22 20:29:49.23
思ったんだけど関数から関数を呼び出せたりするというC言語の機能が
プログラムを分かりにくい状況にしているんじゃないですかね?

メモリ上では関数から関数を呼び出した時呼び出し側のデータがスタックに保持されて
帰ってきた時データをそのまま使えるけど構造は非常に複雑ですよね。



111:デフォルトの名無しさん
12/10/22 20:33:46.35
関数から関数を呼び出せなかったら困るのでは

112:デフォルトの名無しさん
12/10/22 20:39:36.47
それはC言語に固有の機能ではない。
それでプログラムがわかりにくい状況になってると感じるなら、
プログラミングという思考作業に対して、キミの知能が足りないだけ。

113:デフォルトの名無しさん
12/10/22 20:40:10.88
プログラムの構造が理解できなくなる

114:デフォルトの名無しさん
12/10/22 20:45:58.22
お前がゴミだから仕方ない

115:デフォルトの名無しさん
12/10/22 20:56:59.90
ならメイン関数のみで1万行を超えるプログラムを書いてみろよ

116:デフォルトの名無しさん
12/10/23 07:03:45.11
たやすいことさ

117:デフォルトの名無しさん
12/10/23 08:40:48.57
goto main01_005_08;
main01_005_08_ret:
goto main01_005_09;
main01_005_09_ret1:

118:デフォルトの名無しさん
12/10/23 09:59:25.74
関数が
とか仰っている御仁は
関数型プログラミングとかは
ましてやラムダなんとかやらは
絶対に理解できそうもないな

119:デフォルトの名無しさん
12/10/23 10:06:34.73
C言語の関数とそのての関数は違うべさ

120:デフォルトの名無しさん
12/10/23 10:17:22.19
ローカル変数をスタックに置いてるから複雑になってるという主張かな。
 デバッガ作る人にとっては複雑かもなあ。
 アセンブリレベルで動作追うときにフレームポインタの間接参照見るのは面倒。
でも、この程度であって関数が基本リエントラントである恩恵の方がはるかに大きい。

121:デフォルトの名無しさん
12/10/23 10:35:06.56
entry

122:デフォルトの名無しさん
12/10/23 10:38:06.17
int main(){

123:デフォルトの名無しさん
12/10/23 10:39:30.66
int a00000000001;
int a00000000002;

int axxxxxxxxxxx;

return(0)
}

124:デフォルトの名無しさん
12/10/23 13:11:05.50
いまどき関数の無い言語ってバッチファイルぐらいでしょ
なんで関数の無い方がいいと思ったのやら

125:デフォルトの名無しさん
12/10/23 14:27:17.06
>>124
2段落目から推測すると「関数から関数を呼び出す」は再帰呼び出しを
意味していると思われる。
>>120が書かれた後で理解できてないお前も大して変わらない低レベル。

126:デフォルトの名無しさん
12/10/23 14:45:19.46
再帰できなかったらスタックをよういせにゃならんのでしょ、そっちのほうが複雑じゃん

127:デフォルトの名無しさん
12/10/23 15:22:59.00
末尾再帰

128:デフォルトの名無しさん
12/10/23 15:28:24.62
末尾再帰じゃないものを末尾再帰に変形するのもまた複雑

129:デフォルトの名無しさん
12/10/23 15:28:50.79
あたえられたコード読むのと
やりたいことを考えた時に思い浮かんだやり方
思考が違うからなー

130:デフォルトの名無しさん
12/10/23 17:16:11.93
>>124
バッチファイルもcall :label出来るし。黙ってた方が良かったね。

131:デフォルトの名無しさん
12/10/23 19:28:49.18
ふっふっ

132:デフォルトの名無しさん
12/10/23 19:57:09.13
へっへっ

133:デフォルトの名無しさん
12/10/23 20:24:39.78
お互い呼び合うとか構造理解できないでしょ。
int happy()
{
yes();happy();
}
int yes()
{
happy();
}

こうなったらスパゲティ以外の何者でもないでしょ...
図を書こうと思っても同じ関数のブロック何回も出てきて訳がわからなくなる
そりゃ階乗計算の再帰みたいに単純なのだといいけど....

134:デフォルトの名無しさん
12/10/23 20:32:52.36
詩ね

135:デフォルトの名無しさん
12/10/23 20:33:22.85
そんなんあるか?

136:デフォルトの名無しさん
12/10/23 20:34:38.76
コールバック関数

137:デフォルトの名無しさん
12/10/23 20:41:48.28
min-max法とか再帰で書くとこうなるよね

138:デフォルトの名無しさん
12/10/23 20:43:55.93
>>133
それはキミの知能がゾウリムシくらいしかないという証明。

139:デフォルトの名無しさん
12/10/23 20:50:52.23
>>136
コールバックってjavaじゃなかったっけ?

140:デフォルトの名無しさん
12/10/23 20:56:30.86
オイ
マジモンの無能がいるぞww


141:デフォルトの名無しさん
12/10/23 21:01:56.88
お互い呼び出すとか異次元スパゲティだわな


142:デフォルトの名無しさん
12/10/23 21:09:36.93
構文解析なんかは 式、項、因子の3つを相互再帰するが。。。
入門じゃ重い部類かもしれぬ

143:デフォルトの名無しさん
12/10/23 21:10:24.95
再帰下降パーサとか習ったことない土方か。土方はphpでも使って炉。

144:デフォルトの名無しさん
12/10/23 21:37:46.25
ふっほっ

145:デフォルトの名無しさん
12/10/23 22:04:22.22
>>128
できないのもあるしね二方向以上の再帰とかね

146:デフォルトの名無しさん
12/10/23 22:06:44.65
>>142
因子を処理中括弧の中は式に丸投げは再帰を使わないで書けとか罰ゲームとしか

147:デフォルトの名無しさん
12/10/23 22:27:24.59
そりゃ一番難しいところがプログラミングの初期に全部掘り起こされて
言語としてはドンドンあほになって行ってるじゃん


148:デフォルトの名無しさん
12/10/23 22:37:57.76
へっほっ

149:デフォルトの名無しさん
12/10/23 23:48:52.18
>>147
つまりアセンブラ最強

150:デフォルトの名無しさん
12/10/24 01:01:43.09
ここってP2Pチャットのプログラムに関する質問も受け付けてる?
一応1カ月でスパルタされたポインタも怪しいにわかなんだが

151:デフォルトの名無しさん
12/10/24 02:10:47.66
とりあえず投げてみるのも一興

152:デフォルトの名無しさん
12/10/24 10:02:55.81
エィ

153:デフォルトの名無しさん
12/10/24 10:57:51.15
やー

154:デフォルトの名無しさん
12/10/24 12:42:24.81
一ヶ月でポインタも怪しいって、教える方がよっぽど馬鹿じゃなきゃ見込みないから諦めるべきだな。

155:デフォルトの名無しさん
12/10/24 13:33:14.20
さらばポインタ厨

156:デフォルトの名無しさん
12/10/24 13:53:19.74
Cの経験1か月でポインタはスパルタ受けたという意味だろう。
ポインタ理解するのに1か月もかかる池沼が世の中に存在するはずがない。

157:デフォルトの名無しさん
12/10/24 13:59:31.55
長くとも30分で理解出来ないとこの業界にいるのはキツイね

158:デフォルトの名無しさん
12/10/24 14:22:38.85
キツイね

159:デフォルトの名無しさん
12/10/24 14:39:05.20
30分では無理だ

160:デフォルトの名無しさん
12/10/24 14:43:26.08
何年経験してても、ポインタ関連のデバッグは、たいへん

161:デフォルトの名無しさん
12/10/24 14:44:49.79
恐れず侮らず

162:デフォルトの名無しさん
12/10/24 16:29:26.60
ふぅ

163:デフォルトの名無しさん
12/10/24 17:30:53.05
デバッグは大変、ならわかるが

164:デフォルトの名無しさん
12/10/24 18:20:37.14
みなさま教えてください

double型の数値の小数点以下の桁数を求めるにはどうしたらよいでしょう

165:デフォルトの名無しさん
12/10/24 18:24:03.50
>>164
無理

166:デフォルトの名無しさん
12/10/24 19:09:26.78
>>162
2進数でよければ仮数部を指数部でシフトして
もっとも右にある1を探す感じで出来る

167:デフォルトの名無しさん
12/10/24 19:38:47.43
>>166
10進数もそれと同じ桁数になるんじゃね?

0.1(2) → 0.5(10)
0.01(2) → 0.25(10)
0.001(2) → 0.125(10)
0.0001(2) → 0.0625(10)


168:デフォルトの名無しさん
12/10/24 20:05:07.98
>>167
そもそも精度の関係で例えば0.7のときに巧くいかない。

169:デフォルトの名無しさん
12/10/24 20:17:07.67
え、doubleから(おそらく10進数での)小数点下桁数を求めよってお題でしょ
0.7とかdoubleで表現できない数値を扱う必要あんの?

170:デフォルトの名無しさん
12/10/24 20:23:12.32
0.7の近似値の桁数になるだけ。問題なく求められる。

171:150
12/10/24 20:34:59.41
P2P式の複数人用のチャットアプリなんだが、P2Pの概念がよくわからん
OSはUNIX
TCP通信マルチスレッドでC/S型の複数人チャットのソースは組めた
ここからP2P型に改造する予定だが、サーバのソースにクライアント部分の接続~送信を加えたらP2P?
同じプログラムで通信するのがP2Pって思ってるんだけど、違う?

172:150
12/10/24 20:39:59.41
同じプログラムじゃねえ、ダイレクトに相手IPアドレスでアクセスしてるし、これでP2Pなのかなって

173:デフォルトの名無しさん
12/10/24 20:55:07.32
>>171
> サーバのソースにクライアント部分の接続~送信を加え
ここ意味わからん

ただ、
> 同じプログラムで通信するのがP2Pって思ってる
そんな定義はない。

(多数の)ピア同士が何か特定のホスト(サーバ)を
経由せずに通信できればP2Pだろ。

問題は、相手をIPアドレスやホスト名で指定せずに
済ませる方法がないと実用にならないし、
NAT越えも必要になる。


174:150
12/10/24 21:00:50.90
>>173
>同じプログラム~
ここは忘れてください、とち狂ってました

>サーバの~
親スレでconnect~send
子スレでソケットをbind→listen→acceptの無限ループ
孫スレでrecv→printfで接続元が切断するまでループ
これで説明になってるんだろうか


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