[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 01/22 22:20 / Filesize : 197 KB / Number-of Response : 927
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門編)Part 111



1 名前:デフォルトの名無しさん mailto:sage [2012/12/09(日) 23:18:13.67 ]
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 110
toro.2ch.net/test/read.cgi/tech/1353148538/
★過去スレ
makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 161代目
toro.2ch.net/test/read.cgi/tech/1354070278/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
codepad.org/
ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

596 名前:桃白白 mailto:sage [2013/01/01(火) 00:45:04.73 ]
>>592
rootにNULLを入れるのが抜けてるってことね。
mallocのNULLチェックは質問の本旨と関係ないから省いた。
AVL木の添削したのはじつは桃白白だったりしちゃうんだけど、削除の方はできた?

597 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 00:53:33.69 ]
>>596
その節はありがとうございます。:-)
今のところはうまくいっているようですが、まだ自分で再構成できるまでには至っていない、削除ルーチンはまだだし、当分は無理かなあ、まだ怖くて怖くて。

598 名前:桃白白 mailto:sage [2013/01/01(火) 01:14:25.79 ]
>>597
二分探索木の削除はわかる? AVL木の削除はそれに平衡処理を追加するだけだ。

599 名前: ◆QZaw55cn4c mailto:sage [2013/01/01(火) 01:27:29.70 ]
>>598
二分木の削除はOKですが、木回転が一回で終わらないのが今のところの難所になっています。ああ、これは本のサンプルを見たほうがはやいかもしれませんね。

600 名前:桃白白 mailto:sage [2013/01/01(火) 02:58:17.72 ]
>>599
削除時に回転が必要になるのは左右の木の高さの差が2になったとき。
左右の木の高さの差が2になるのは木の高さが1減ったとき。
木の高さが1減るのは木のバランスがイーブンになったとき。

木のバランスがイーブンになるのは
  左に傾いている木の左のノードを削除したとき。
  右に傾いている木の右のノードを削除したとき。
  木の回転が行われたとき。

木のバランスがイーブンでなかったら木の高さは変わってないわけだから
平衡がとれてるってことでその上のノードでは回転は必要なくなる。

削除時の回転は、回転後にバランスがイーブンになるものと、
回転後にバランスがイーブンにならないものとがある。

分類するとこうなる。
i.imgur.com/8xf54.png

ノードのバランスをチェックすることで左への回転か右への回転かを
わけることができる。子のバランスをチェックすることで一重回転か
二重回転かをわけることができる。一重回転のときは子のバランスを
チェックすることで回転後のバランスをわけることができる。
二重回転のときは孫のバランスをチェックすることで回転後のバランスを
わけることができる。

削除時はパターンが2個増えて、平衡したという判断の仕方が変わるだけ。難しくないっしょ。

601 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 03:15:10.87 ]
>>572
C++の場合、
struct Hoge {
int a;
};
自体が
typedef struct Hoge {
int a;
} Hoge;
相当になる。というかclassとstructがほとんど違いがない。(メンバ変数のデフォルトのアクセス制限の違いだけだったはず)

602 名前:桃白白 mailto:sage [2013/01/01(火) 03:33:55.52 ]
>>601
なるほどー、桃白白もそう書くことにしようかな。

603 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 08:29:15.39 ]
> rootにNULLを入れるのが抜けてるってことね。
年を越したらようやく正解が出てたか。 白白は反省文書くように。Stackも同様。

こんな簡単な事を恥ずかしくないコード出せとか必死で煽ってたバカは死にたくなっただろう。
もう死んだ? >>549とか >>549とか >>549とか >>549とか

まぐれで動くこともあるから、普通にレビューの経験積んでればこの程度の事は一瞥で
わかるようになってるもんだ。
3年以上PGやっててわからなかった奴は才能無いからホームレスに転職しろ。

604 名前: ◆QZaw55cn4c mailto:sage [2013/01/01(火) 08:48:08.33 ]
>>603
たしかにこの種のバグはデータ構造を扱うようになると一度は出会う、QZのような馬鹿だと何度も首をかしげることになりますね。
そこで、>>592 に一端を示してもいる「QZアロケータ」では malloc()したあとにランダム値を書き込んで返すという cmalloc() と真逆のことをして早期発見に努めています、本質的な対策にはなっていませんけど。
もっとも最近はめっきりと出会うことはなくなりました。

でも本当は c++ にさっさと移行してコンストラクタをきっちり書くことでしょうね。
>>603 ご指摘感謝アマチュアには身に余る配慮でした。
自然対数の底の展開もなんかやらかしてるのかな?

>>600
子ノードを左右とも持つノードの削除で思考/試行格闘中です。



605 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 11:20:31.42 ]
>>603
結局おまえば出せずじまいじゃん
ちょろっと晒してドヤ顔してればいいものを
よほど自信がなかったんだろうなwwバーーカ

606 名前: ◆QZaw55cn4c mailto:sage [2013/01/01(火) 11:46:20.30 ]
>>605
may be >>477

607 名前:デフォルトの名無しさん [2013/01/01(火) 12:46:41.66 ]
>>605
こんな簡単なのでドヤ顔で指摘しろとか、本当にバカって惨め。
>>515でヒントのヒント、そのあとでヒント>>557を出してるのにバカには
わからなかったんだな。吐き気がするほどのバカ、破滅的に頭が悪い。

んじゃ、お年玉代わりにバカ向けにドヤ顔で解説してやる。感謝しろよ。バカ。

>>515の「おせっかいな通りすがり」とは彼ら(>>503-505)
-------------------------------------
>>503
> 動的二次元配列を0で初期化したいのですがfor
> でまわす以外に方法ってなにかあるのでしょうか??

>>504
> calloc

>>505
> >>503
> memset
-------------------------------------

続いて>>557の解説
mallocの後の領域初期化は要注意ポイント。
それをいきなりTree_addに渡している。Tree_addの引用が一行だけなら
Tree_addで初期化する可能性も否定できないが、2行引用すればバグであること
が明らかにになる。

> Tree tree = malloc(sizeof(struct Tree));
> Tree_add(tree, 3);
> Tree_add(tree, 1);

608 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 12:58:18.38 ]
ふーん

609 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 14:03:48.62 ]
>>607
解説っつーか、バカだの死ねだの発言が問題なわけですがそれは理解できてるんですか?

610 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 14:26:29.35 ]
バカにバカといって何が悪い。

611 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 14:26:49.59 ]
うん

612 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 14:32:48.84 ]
なんでこう回りくどい人なんだろ

613 名前:デフォルトの名無しさん [2013/01/01(火) 14:56:58.50 ]
バカって言われたくなければ、自分の順位を正しくはかる事だ。

614 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 15:01:27.84 ]
正月くらい美しく過ごしなさいな



615 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 15:16:38.98 ]
>>613
普段どんな惨めな生活を送ってるんですか?
よほどでなければこうまでねじ曲がらないと思うんですけど?

616 名前:デフォルトの名無しさん [2013/01/01(火) 15:48:41.85 ]
バカと言われたのがそんなに悔しいなら、最初から出しゃばらなきゃ良かったんだよ。
お前のようなバカは、自分のバカさを認識して分をわきまえた方が生きやすいと思うぞ。

617 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 16:04:11.22 ]
マァその小さすぎる梅干し程度の脳味噌じゃ自前で認識できないようだから
有難くも私がお前はバカだアホだマヌケだと懇切丁寧に教えてやっているんだがな
カネとってもいいくらいだ

618 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 16:17:58.12 ]
こんな底辺スレで何をそんなに大きく出ちゃってるんだこのバカは
実生活でのストレスやらはこんなところくらいでしか発散させられないほどのバカなんだろうな

619 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 16:26:43.13 ]
>>618
底辺PGなんてそんなものだ
察してやろうぜ

620 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 16:26:55.50 ]
>>618
>>615

621 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 16:27:09.76 ]
争いは、同じレベルの者同士でしか発生しない

622 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 16:47:42.38 ]
まあこれで少しは懲りたでしょうな

623 名前:デフォルトの名無しさん [2013/01/01(火) 16:50:05.51 ]
「バカだの死ねだの発言が問題」とかいいながらバカを連発して回りくどいバカだな。

624 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 16:50:51.95 ]
すいません。
ビットマップ画像に、アルファベット、ひらがな、カタカナ、数字、記号を入れて、
指定した文字を画面に描画する処理を作っているんですが、
if分の分岐が100を超えてしまうと、VCがコンパイルエラー表示してしまいます。
if分の分岐を使わずに、指定した文字の座標をセットするにはどうしたらいいでしょうか



625 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 16:52:01.88 ]
>>623
バカ認定してる相手にバカって言われてそんなに悔しいの?www
だったら最初からかみついてくるんじゃねーよバーーーカww

626 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 16:53:21.45 ]
その分岐の一部を貼ってみなよ。

627 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 16:53:52.77 ]
>>624
後学のためその力作のソースを是非とも見てみたいから
ideoneとかにうpしてくれると
新年から討論の種が増えてわたくしはうれしいので
是非ともうpしてちょーだい

628 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:00:55.69 ]
if分岐使わないって、関数ポインタの配列によるテーブル化のこと指してるのかな?

629 名前:デフォルトの名無しさん [2013/01/01(火) 17:01:17.32 ]
>>625
そんなに頭が悪くて生きているのつらくないか? バカだからそれすらないのか。
自然はうまくできてるな。

630 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:01:49.89 ]
いや、普通にこういうのが並んでるだけだけど。

if (strcmp(c_jp, "あ") == 0){ pos->src.x = CHAR_SIZE*0; pos->src.y = CHAR_SIZE*0; }
else if(strcmp(c_jp, "い") == 0){ pos->src.x = CHAR_SIZE*1; pos->src.y = CHAR_SIZE*0; }

else if(strcmp(c_jp, ":") == 0){ pos->src.x = CHAR_SIZE*20; pos->src.y = CHAR_SIZE*2; }
else if(strcmp(c_jp, " ") == 0){ pos->src.x = CHAR_SIZE*21; pos->src.y = CHAR_SIZE*2; }
else if(strcmp(c_jp, "「") == 0){ pos->src.x = CHAR_SIZE*22; pos->src.y = CHAR_SIZE*2; }

if (c == 'a'){ pos->src.x = CHAR_SIZE*10; pos->src.y = 0; }
else if(c == 'b'){ pos->src.x = CHAR_SIZE*11; pos->src.y = 0; }
else if(c == 'c'){ pos->src.x = CHAR_SIZE*12; pos->src.y = 0; }
else if(c == 'd'){ pos->src.x = CHAR_SIZE*13; pos->src.y = 0; }

631 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:05:10.14 ]
なんつーかこう、isascii()とか文字コード判定処理を使おうという
知能は働かないのかね。

632 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:05:10.48 ]
#define NCHARTYPE 128
typedef void (*funcp)();
void str_a();
int main(){
funcp str_tbl[NCHARTYPE];
str_tbl['a']=str_a();
}
こんな感じのコードを書きたいけど、書けない学部生なら昔見た

633 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:05:29.22 ]
>>629
>>629

634 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:09:28.56 ]
data = array[あ];

ってやるとdataに"あ"のX座標とY座標が入るみたいなイメージ。
STLのマップとかでできないですかね



635 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:10:22.19 ]
stlのmapでやれよ
cでやるならhash関数ぐらい自分で書け

636 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:12:14.00 ]
stlのマップのキー値ってchar* の文字列でもいいんでしたっけ

637 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:12:54.45 ]
C言語にSTLは無いのでできません

638 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:15:50.85 ]
>>637
cstlってライブラリならあります。glibとか基本的なデータ構造は用意されてます
>>634
それって、構造体ポインタの配列(hash)じゃないの?

639 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:16:27.63 ]
>>630
普通は
"あ" -> 0, "い" -> 1
'a' -> 10, 'b' -> 11
を計算で求める。でも、計算式を考えるのが嫌だったら。
↓こういう関数作れば解決。

int z(const char *c_jp)
{
if(strcmp(c_jp, "あ") == 0){ return 0;}
if(strcmp(c_jp, "い") == 0){ return 1;}
}

int e(char c)
{
if(c == 'a'){ return 10;}
if(c == 'b'){ return 11;}
}

640 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:19:55.54 ]
計算結果求めるのに結局if文がいっぱい並ぶじゃないすか

641 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:21:15.01 ]
elseでつないでいるから複雑すぎると言ってコンパイラが降参する。
if () return v;
これの連続だけなら楽勝で通る。

642 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:23:47.63 ]
もっとかっこいいやつがいいです

643 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:24:23.86 ]
{ pos->src.x = CHAR_SIZE*11; pos->src.y = 0;}
この部分、関数かマクロで纏めろよ

644 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:27:46.87 ]
>>642
if () return v;
をうまく配置して格好いい絵でも書けよ。



645 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:30:49.14 ]
>>630
21世紀型プログラミングの真髄を垣間見た
これこそが今の時代に求められるC言語の使い方だ
わたくしはこれ以上この美しいソースを書きかえることなんてできない

646 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:31:05.49 ]
>>633
おまえさー、スゲー簡単な答えかもしれないって事を考えずにコードコードと煽ってたのか?
スゲー簡単な答えが出てきたら(実際出てきちゃったんだが)どうするつもりだったんだ?

バカの思考回路は良くわからないな。

647 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:34:58.94 ]
>>646
そうじゃなくて、煽ることばかりのお前の態度を指摘していたんだよ(最初から
それが読み取れないのはバカだから?日本人じゃないから?

648 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:35:11.24 ]
int hash(const char *cp){
if () return z();
if () return e();
return -1;
}

#define INSERT(a,b,c)
Foo hash_tbl[]={
INSERT(hash("あ")),
INSERT(hash("い")),
...
}
アイディアだけ書く

649 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:36:33.78 ]
C++スレへ行ってSTLの使い方聞くだけでいい

650 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:37:56.14 ]
>>649
このぐらいならSTLなんてイラナイだろ

651 名前:デフォルトの名無しさん [2013/01/01(火) 17:39:47.57 ]
>>647
それに対抗するために煽り返していたのか。バカの後付けの言い訳は見苦しすぎる。
足りない頭で必死に考えて、そんな回答ないと確信して煽ってたんだろうな。
バカすぎwww

652 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:40:23.36 ]
この半角のおっさんここにもいるのかwwww
うかうかしてらんねーな

653 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:43:11.44 ]
>>650
STL使えるVC++でSTLを避ける意味はない。

654 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:43:27.03 ]
>>650
STLはこのくらいのものばかりだよ



655 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:43:46.71 ]
>>651
>そんな回答ないと確信して

ここら辺がバカすぎ
全く理解できてない
あるかないかは関係ないだろwww

656 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:45:12.94 ]
C++スレ池

657 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:45:24.81 ]
>>653
ひょっとすると、visual studioでgnuへ貢献しようとしてるかもしれないだろ

658 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:53:35.33 ]
gnuへ貢献ってstl使っちゃいかんの?

659 名前:デフォルトの名無しさん [2013/01/01(火) 17:57:52.64 ]
>>655
つまり、気に入らない態度に対して同じ態度で煽り返していたと。バカ丸出しwww
バカは後付けで言い訳考えない方がいいぞ。

660 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 17:59:15.68 ]
基本的にcで書ける人の方が多いからcで書けってRMSが唱えてたよ
いろんな分野の混じったとき、c++が読めない人も居るからとかなんとか
論文だか草稿だかならみた記憶ならあるけれど

661 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:02:25.55 ]
とかいいつつ、 gcc は c++ で書き直されたんだよな。

662 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:06:35.59 ]
>>661
スラド民の誰かが、中の人が中二病起こしたって書いてたな
技術的な詳細なんてシラネ。そんな人間がこの板を通り掛かるわけもないだろうし

663 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:07:29.44 ]
>>659
同じことをしてやればさすがに理解できるだろうからだよwww
分かったかバカwwwww
しかし、バカにバカって言って何が面白いのか

664 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:10:21.92 ]
if ()
else if()
else if()
...
が、どのくらいいけるか試してみた。VC++ 500行OK, 700行はだめ。
clang, gccは10000行でもOK
VC++ 弱すぎ。



665 名前:デフォルトの名無しさん [2013/01/01(火) 18:13:09.74 ]
>>663
残念ながらバカにバカといわれても全然平気。
それより気に入らない態度を自分が真似できる神経を尊敬する。バカってある意味最強だな。

666 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:15:42.51 ]
>>665
これが部下なら鉄拳制裁してやれるのにな

667 名前:デフォルトの名無しさん [2013/01/01(火) 18:18:51.68 ]
やられたら手段を選ばずやり返すって、日本人のメンタリティじゃないよね。

668 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:22:37.78 ]
>>665
バカと言われるのは平気と言いながらもレスを絶やすのはできないほど高いプライドをお持ちのようでwwww

669 名前:デフォルトの名無しさん [2013/01/01(火) 18:23:29.49 ]
バカの正体は多分↓これだな。これをバカにされたのを粘着してたのか。読み返してみてもバカすぎる。www

From: [498] デフォルトの名無しさん <sage>
Date: 2012/12/31(月) 10:26:26.81

>>491
typedefしないと、変数を定義する際にイチイチstructって書かないとダメだろ

>>494
Tree make_tree(){ return (Tree)malloc(sizeof(struct Tree)); }
free_tree(Tree *tree){ free(tree); }

670 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:23:42.01 ]
息を吐くようにバカバカ連呼できるのは半島人だからか

671 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:25:48.21 ]
うん。相手には、何も言い返すことなくデスクに座って集中している頃合を見計らって、
背後から忍び寄り、後頭部に手を置いて、そのままディスプレイに叩きつけるよ

672 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:26:36.97 ]
>>669
全然、違うよw

673 名前:デフォルトの名無しさん [2013/01/01(火) 18:27:27.56 ]
>>668
お前ほどのとびっきりのバカはめったにいないからな。

674 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:30:22.43 ]
>>673
逆にお前のような奴はどこぞの半島に腐るほどいるんだよな



675 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:36:14.06 ]
どっちも小学生の喧嘩レベルになってるぞ

676 名前:デフォルトの名無しさん [2013/01/01(火) 18:37:18.61 ]
自分の気に入らない態度に対して同じ方法で煽り返したお前が朝鮮人だろうと言っているんだが。

677 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:38:55.24 ]
今、何人居るんだ?3〜5人ぐらい?w

678 名前:デフォルトの名無しさん [2013/01/01(火) 18:40:31.37 ]
>>675
まあしょうがないよ。↓こういう下等な人間もどきなんだから。

> 同じことをしてやればさすがに理解できるだろうからだよwww

679 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:41:48.30 ]
>>675
皆、正月だから小学生の頃に戻ってるんだよ

680 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:43:00.50 ]
>>678
日本には毒を以て毒を制すという言葉がありますが、朝鮮にはどうだかは知りません

681 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:45:31.69 ]
>>679
どっちもいい年なんだろうなと思うと哀れに思えるよね

682 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:46:29.61 ]
FONT_INFO font_info = { 0, 0 };
xxx.insert(pair<char*, FONT_INFO>("あ", font_info));
とやったとして、

xxx.find("あ");
は、必ず見つかるものなの?
"あ"が格納されてるアドレスは必ず同じだと思っていいの?

683 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:48:40.35 ]
その昔、右翼団体が合宿してて街宣車が道路を遮ってるわけ。おかげで会社を遅刻したよ。
また路上を遮ってりゃ、アイスピックでお前らのタイヤに穴開けといてやるからな

684 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 18:49:26.26 ]
char str[] = "あいうえお"

char c[3];

c[0] = str[0];
c[1] = str[1];
c[2] = '\0';

xxx.find(c);

これ駄目じゃん。。」



685 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 19:06:57.05 ]
>>680
それは似て非なるもの。

686 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 19:07:46.74 ]
>>682
せめて、std::stringを使え。使ったところで動くか知らんけど
というか、>>648の意味わからなかった?

687 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 19:11:05.77 ]
>>684
とりあえず、全角文字って何バイトか調べろ

688 名前:デフォルトの名無しさん [2013/01/01(火) 19:12:50.79 ]
>>672
これじゃないのか。
今回はこいつと張本人の白白、Qz以外は個別には罵倒していないはずだが、
大分前に罵倒したバカのうちの一人かな。粘着力が半島人。www

689 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 19:12:55.68 ]
hash関数かあ、面倒くさいなあ

690 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 19:14:02.14 ]
>>682
C++スレで使い方を聞けっつてんだろバカ
お前の頭じゃマニュアルみても使い方わからんだろ

691 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 19:14:26.95 ]
>>689
STL理解してないだろ。理解するのに2〜3日、或いは一週間は掛かるぞ

692 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 19:25:24.00 ]
>>688
罵倒しようという姿勢が半島人
自分の粘着を棚に上げるのも

693 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 19:30:19.55 ]
フォントだけに限定した場合に衝突しないハッシュ関数って考えられないですかね

694 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 19:32:59.02 ]
完全ハッシュ関数



695 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 19:39:14.70 ]
>>687

696 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 19:39:49.64 ]
>>693
オフセット付けるなり適当に工夫汁。

697 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 20:07:02.12 ]
ああできたわ。サンクス

unsigned int hash_val = str[0];
if(str[1] != '\0')
{
  hash_val = hash_val * 256 + str[1];
}

xxx.insert(pair<UI, FONT_INFO>(hash_val, font_info));

698 名前:デフォルトの名無しさん [2013/01/01(火) 20:08:01.28 ]
バカ必死だな。ww

699 名前:デフォルトの名無しさん [2013/01/01(火) 20:10:28.88 ]
バカ必死だな。ww

700 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 21:06:45.71 ]
>>697
なぁ、そのhash関数って最大が幾つになるんだ?

701 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 21:35:22.57 ]
255*256 + 255 = 65536
だからintで十分入ると思うが何か問題かな

702 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 21:48:09.15 ]
×65536
○65535

703 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 22:12:32.03 ]
>>700
255*256 + 255 = 65535
だからintで十分入ると思うが何か問題かな

704 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 22:51:26.10 ]
2バイト文字の1バイト目が1バイト文字と一致することってあるのかな



705 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 22:55:53.57 ]
>>704
どのコード体系でいえばいいかにもよるけど、少なくともシフトJISなら
あり得る

706 名前:デフォルトの名無しさん [2013/01/01(火) 23:17:31.74 ]
double型ってせっかくintの100億倍以上の表現力もあるのに
結局17桁くらいまでしか精度ないんだろう。利点とかってありますか?

707 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 23:18:28.86 ]
お前が使うと利点が消える

708 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 23:25:29.22 ]
>>707
お前それサバンナでも同じ事言えんの?

709 名前:デフォルトの名無しさん [2013/01/01(火) 23:48:00.62 ]
double型の 1.00+e00っていう表示はfloatの一般小数点表示と比べて
メリットはあるんですか?純粋な疑問

710 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 23:54:55.36 ]
mingwについて質問なのですが
>gcc gtk-sample.c -o gtk-sample `pkg-config gtk+-2.0 --cflags --libs`

「'」の意味と、gccにpkg-configの結果?を渡す理由を教えて下さい

711 名前:デフォルトの名無しさん mailto:sage [2013/01/01(火) 23:56:14.56 ]
doubleはdoubleになってるからdoubleだろjk

712 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 00:07:12.90 ]
>>455
俺初心者だけどどういう意味ですか?
パンチガードって何?C言語関係あるの?

713 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 00:28:19.35 ]
>>706
ネタなのかマジなのかわからんが、100億倍って桁に直したら10桁だろ。intって8.4桁くらいだろ。足したら18.4桁。大体17桁と違いないから正しいじゃないか。
8桁じゃ困って17桁なら大丈夫な計算なら嬉しいだろう?17桁しかないなら8桁しかないのと同じだと思うの?

714 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 00:33:55.81 ]
>>713
有効桁数は
ビット数 × 0.30102999566398119521373889472449

符号付でも 32bit int なら精度9桁あるぞ



715 名前: ◆QZaw55cn4c mailto:sage [2013/01/02(水) 00:52:08.60 ]
>>706
分野によっては数値の大小よりも「有効桁数」を優先する場合があります。
科学技術の実験値表現では例えば「光速度:2.99792458 × 10^8 m/s」とかいいますがこの場合有効桁数は9桁になります。
浮動小数点表現は有効桁数を優先した表現方法です。

716 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 00:58:20.44 ]
double型って範囲が
±10^(-308)〜10^(308)
って事は308桁の精度って事じゃないんですか?
intは24億だから10桁の精度。
精度にしたら30倍。違いますか?

717 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 01:01:16.63 ]
>>716
IEEE754でググれ

718 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 01:48:38.93 ]
>>714
すまん一桁カウントし間違えた。0.4桁分はその計算の言わんとする所の意味だよ。
言いたかったのは、100億倍とかいう表現と17桁とかいう表現を混ぜたら、前者は凄く広大な感じがして後者はわい小な感じがするけど、
整合性はだいたいとれてるだろ、ってこと。
そもそも17桁以上の精度を必要とする計算ってそんなに身近なのか?ということを考えた方がいいと思うんだよね。
17桁ってなんかしょぼいな、って感覚的に思って決めつけちゃう前に。大体のものは17桁の精度で測定なんかできないものばかりだろう。
まあ銀行系とかはdoubleじゃ困るだろうけどね。

719 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 06:11:28.69 ]
銀行系はCOBOLやjavaのクラスライブラリを使うだろ

720 名前:デフォルトの名無しさん [2013/01/02(水) 12:23:06.27 ]
ファイルストリームに関する質問だけど
ファイルを読み込むとき例えば100字のテキストファイルがあって
その70行目まで読み込んでたとします。その時70字分の情報は以降
同じストリームから読み取れないんですか?
プッシュバックとかそういうソフトウェア的なことじゃなくて
もう一回fopenしない限り読み取れませんか?
というか読み込んだファイル情報はすぐにHDDに返されるのでしょうか?

721 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 12:33:52.65 ]
fseek

722 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 12:51:42.66 ]
>>720
>読み込んだファイル情報はすぐにHDDに返されるのでしょうか?
なんで返すんだ?
まさかHDDからメモリに送られた情報は、送り返されるまでHDD上からは消えてるとでも思ってるのか?

723 名前:デフォルトの名無しさん [2013/01/02(水) 13:05:42.03 ]
>>722
他のシステムユーザからのアクセスを遮断するために
消えると思うんですが違いますか?

で結局stdinなどで読み込んだ文字は以降は絶対に読み込む事は
できないんでしょうか?

724 名前:デフォルトの名無しさん [2013/01/02(水) 13:08:51.06 ]
すいません送り返されはしませんね
ストリームを閉じたらメモリから消えるという事ですかね?



725 名前:デフォルトの名無しさん [2013/01/02(水) 13:12:01.61 ]
>>721
fseekって結局プッシュバックと同じ仕組みじゃないんですか?
ただのバッファとそこから取り出すっていうだけの仕組みでしょ?
僕が知りたいのはHDDから読み込めるかどうかです。

726 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 13:22:05.51 ]
>>725
2chなんて信じられないんだろ
本買って読めよ

727 名前:デフォルトの名無しさん [2013/01/02(水) 13:25:13.71 ]
>>726
はぁ?

728 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 13:26:54.20 ]
>>725
> fseekって結局プッシュバックと同じ仕組みじゃないんですか?
違うよ。

729 名前:デフォルトの名無しさん [2013/01/02(水) 13:30:19.78 ]
可哀想な子警報age

730 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 13:33:01.78 ]
>>725,727
手元の規格標でsetvbufを検索してみ
てか、糞でかいファイル扱う事を考えたら常識的に考えて分かるでしょ

731 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 14:38:50.06 ]
gccのオプション多すぎ

732 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 14:43:54.03 ]
MSVCだって、コマンドラインで使えば似たようなもの

733 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 15:59:28.26 ]
素人のくせに何でプッシュバックとか無理して知ったかぶるかね。

734 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 16:13:21.04 ]
プッシュバックって何の事?



735 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 16:21:50.25 ]
俺もなんのことかと思ってググってみたが、飛行機を引っ張る車しかでてこない

736 名前:桃白白 mailto:sage [2013/01/02(水) 16:25:02.00 ]
ねえママ、ママもバックからプッシュしたことある?こういうのパパに聞いたほうが
いいのかな、掲示板見たらみんなやってるみたいなんだ、ぼくもプッシュバックしたい。

737 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 16:26:29.80 ]
>>710
バッククォートで括られた箇所は、コマンド実行に置換される
pkg-configってコマンドがあるわけ。manでも読め
実行すると、gtkのヘッダやライブラリの場所がズラズラ出てくる

738 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 16:27:20.27 ]
>>736
可哀想な子

739 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 16:35:00.23 ]
vector の push_back() のことじゃないの?

740 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 16:37:18.53 ]
ああ、push_back(); は vector だけじゃないね

741 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 16:38:47.96 ]
STL以外のpush_backなんて単語を知らなかったから、
>>735>>736は、すごく良い教養になった

742 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 16:40:09.40 ]
>fseekって結局プッシュバックと同じ仕組みじゃないんですか?
>ただのバッファとそこから取り出すっていうだけの仕組みでしょ?

配列の最後尾に追加するのとは全く逆のようだが

743 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 18:01:15.88 ]
プッシュといえばポップだな、普通は

744 名前:デフォルトの名無しさん [2013/01/02(水) 18:24:29.34 ]
720 :デフォルトの名無しさん:2013/01/02(水) 12:23:06.27
ファイルストリームに関する質問だけど
ファイルを読み込むとき例えば100字のテキストファイルがあって
その70行目まで読み込んでたとします。その時70字分の情報は以降
同じストリームから読み取れないんですか?
プッシュバックとかそういうソフトウェア的なことじゃなくて
もう一回fopenしない限り読み取れませんか?
というか読み込んだファイル情報はすぐにHDDに返されるのでしょうか?


723 :デフォルトの名無しさん:2013/01/02(水) 13:05:42.03
>>722
他のシステムユーザからのアクセスを遮断するために
消えると思うんですが違いますか?

で結局stdinなどで読み込んだ文字は以降は絶対に読み込む事は
できないんでしょうか?


725 :デフォルトの名無しさん:2013/01/02(水) 13:12:01.61
>>721
fseekって結局プッシュバックと同じ仕組みじゃないんですか?
ただのバッファとそこから取り出すっていうだけの仕組みでしょ?
僕が知りたいのはHDDから読み込めるかどうかです。



745 名前:デフォルトの名無しさん mailto:sage [2013/01/02(水) 23:00:58.92 ]
むかつく質問方法を見事に使いこなしてるな。これもある種の才能だな。

746 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 00:34:19.91 ]
>>745
ヤフー知恵袋でやれ

747 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 13:35:24.99 ]
そうか?

748 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 17:08:15.27 ]
自分が正しいという前提があってそれに対して同意してもらうことを目的にした書き込みだったね
間違ってるどころか何もかも狂ってたから目論見が外れたみたいだけど

749 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:47:35.13 ]
makefileは自動生成するツールがありますが、手書きでmakefileを書くメリットってありますか

750 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:59:36.98 ]
スレ違いです

751 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 22:16:03.79 ]
>>750
なぜ、スレ違いなの?
めっちゃC言語、入門じゃん

752 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 22:24:00.11 ]
小規模なのは手で書いた方が早いし、
手で書けない人が自動生成ツールを使うのは難しいんじゃないかな。

753 名前:749 mailto:sage [2013/01/03(木) 22:48:57.13 ]
>>752
参考になりました。
ありがとうございます

754 名前:デフォルトの名無しさん [2013/01/03(木) 23:44:31.42 ]
netpbm
をインストールする時suのパスワードってなにいれるんですか??



755 名前:デフォルトの名無しさん [2013/01/03(木) 23:47:31.93 ]
>>754
なんでもないです、
すみません

756 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 23:49:26.79 ]
そりゃsuのパスワードだろjk
これ以上はUNIX板にでも行けよ

757 名前:デフォルトの名無しさん [2013/01/04(金) 00:23:23.61 ]
A 23
F 8
R 23

のような、「文字 数字」をコマンドラインから読み込みたいんだが

char c[5]; int a[5], i = 0; double k;

for(i=0; i<5; i++){
scanf(" %c %d%[\n]",&c[i],&a[i],&k);
}

のようにやるとなぜか6回「文字 数字」を読み込んでしまってうまくいかない。
文字はc[i] 数字はa[i] 改行をkに保存してるんだが
何がおかしいのだろうか・・・・・・orz

758 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 00:39:47.81 ]
scanf使うなら戻り値ちゃんと見たほうがいい

759 名前:デフォルトの名無しさん [2013/01/04(金) 00:41:31.76 ]
>>758
ありがとうございます。
詳しく調べてみます。

760 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 10:48:43.15 ]
6回読み込んだという理由は?
forを抜けた後iが6だったとか?

761 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 11:00:22.74 ]
>>760 コマンドラインで6行読み取ってしまうんです。
A 1
B 2
C 3
D 4
E 5
F 6
のように・・・・・・printfで調べてみたらi=0でどうやら2行分読み込んでるようで。
でも格納されてる値をみたらc[0]〜c[4]はA〜E、a[0]〜a[4]は1〜5の値が入っていたのでさらに意味不明なことに・・・

762 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 11:09:28.77 ]
>>757
> double k;
> 改行をkに保存してるんだが

意味がわからん。

>>761
printf( ) デバッグするなら、i の値も一緒に表示すれば良いのに…

763 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 12:10:27.77 ]
>>757
char c[5], dummy; int a[5], i;
for(i=0; i<5; i++) {
scanf("%c %d%c", &c[i], &a[i], &dummy);
}

としてみるとか。
 A 123 4567
と入力すると
 A 123
 4 567
となるけど。。

764 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 13:07:54.09 ]
>>757
コマンドラインからでなく、コマンドインタプリタを実行している端末エミュレータから入力しているんだろ。
改行文字をdoubleの変数に保存するなんて阿呆なことしていないできちんと書けよ。
つーか、fgets()で一行入力してからsscanf()でばらす方が無難だと思うが。



765 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 16:52:54.18 ]
無難だね

766 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 17:43:34.43 ]
標準入力から一行読みたいときに
一行の長さを調べるにはどうすればいいの?

767 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 17:48:53.95 ]
普通は一行読み込んで、長さを調べる。

一行の長さが予測できない場合は、適当なサイズ毎に読み込んで
行末がでてくるまで文字数をカウントしていく。

768 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 17:50:08.92 ]
>>766
エスパー回答
toro.2ch.net/test/read.cgi/tech/1313183984/35
のどこかにあるchar *mygetline(FILE *fp)を調べれ

769 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 18:54:38.84 ]
標準入力はシーク出来ないんですか?

770 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 18:58:00.04 ]
うん

771 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 19:38:48.81 ]
>>769
標準入力がキーボードの場合シーク要求来たら大変だろ? (w

772 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 19:44:49.38 ]
なんで?

773 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 19:45:02.98 ]
標準入力のタイプによる。レギュラーファイルだったらシークできる。

774 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 21:42:01.61 ]
標準入力をリダイレクトすればできるものにもできる
しなけりゃできない



775 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 23:19:10.79 ]
eclipse cdtの方がvisual studioより使いやすいようなー

776 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 23:21:25.09 ]
mingw+eclipseが最強かな

777 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 23:54:03.03 ]
お前らEDLIN知らねえの?

778 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 00:50:25.15 ]
dos 版の ed ね、でも漢なら
echo > file
あるのなら
cat > file
だろう?

779 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 03:23:19.72 ]
江戸がギリだな、それより懐古するともはやコーディングとかって話じゃなくなる

780 名前:デフォルトの名無しさん [2013/01/05(土) 17:21:35.33 ]
あぁ腹減った

781 名前:デフォルトの名無しさん [2013/01/05(土) 20:13:48.00 ]
microsoft visual c++ 2010 を使っているんですけど、
「間接参照のレベルが'int*'と'int[4][5]'で異なっています。」
という警告が出てきます。
この警告の意味はどういうことなのでしょうか??

782 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 20:29:58.01 ]
>>781
警告そのまんま
int*とint[4][5]の型が違いますってこと

てかソース貼れ

783 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 21:10:22.92 ]
嫌です

784 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 21:18:41.75 ]
は?



785 名前:デフォルトの名無しさん [2013/01/05(土) 22:39:59.17 ]
rand()なんですが値が
100以下がほとんどでない。
ほとんどが億レベルなんですが理由は何でしょうか?
234213423
23513123
5634521324
234523546
.
.
.
.
3


2000回に一回ペースで100以下が出る。

786 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 22:42:35.80 ]
完全にランダムと仮定して
全体のうち百以下の数の個数と
億単位の個数がいくつあるか
自分の手で計算してごらん

787 名前:デフォルトの名無しさん [2013/01/05(土) 23:42:52.22 ]
ごらんとかうるせーよ

788 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 23:44:52.66 ]
計算してごらん 百位かの割合を 簡単なことさ

789 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 23:53:02.42 ]
僕らの下に地獄なんてないし
僕らの上にはは空があるだけ
計算してごらん すべての人がその日暮らし…

790 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 23:54:00.82 ]
ははははは

791 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 23:56:14.16 ]
ゴランに聞いてごらん

792 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 23:57:58.37 ]
printf("%f回に1回くらい出る\n", RAND_MAX/100.0);

793 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 23:58:10.02 ]
>>787
ヒント:NGワード

794 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 00:08:12.38 ]
codepad.org/h6z6poQO



795 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 01:07:17.67 ]
見上〜げて、ごらん〜夜の〜ほ〜しを〜

796 名前:デフォルトの名無しさん [2013/01/06(日) 19:25:02.72 ]
GAを組んでいるのですが、個体の中身が1だけでしか表示されません。
なぜなのでしょうか??
適応度は個体によってバラバラなのになぜか遺伝子は1のみになってしまいます。
(個体は2次元配列で、2進数によって表現しているつもりです)
おかしい所だらけだと思うのですが、よろしくお願いします。

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

#define N 5 // 遺伝子長
#define M 50 // 個体数
#define ml 4 //音符数
#define T 10 // 世代数
#define Pc 0.50 // 交叉確率
#define Pm 0.10 // 突然変異確率

// 遺伝子型の定義
struct genotype {
int gene[ml][N]; // 遺伝子
float fitness; // 適応度
};

float evaluation(int *a); //適応度計算
void one_point_crossover(struct genotype *ind); //交叉
void mutation(struct genotype *ind); //突然変異
void roulette_selection(struct genotype *ind); //選択
int flip(float prob); //
void print_process(struct genotype *ind, int generation); //出力

797 名前:デフォルトの名無しさん [2013/01/06(日) 19:27:39.08 ]
int main(int argc, char *argv[]) {
int i; // 個体インデックス
int j; // 遺伝子座インデックス
int s; // 音符数インデックス
int t; // 世代インデックス
struct genotype individual[M]; // 個体
struct genotype erito; //エリート


// 乱数seedの設定
if(argc < 2) { // プログラムの引数が足りない場合
printf("Usage: %s [SEED_NUMBER]\n", argv[0]);
exit(1);
}
else {
srand(atoi(argv[1]));
}

// ステップ1 (0世代目)
for(i=0; i<M; i++) {
for(s=0; s<ml; s++){
for(j=0; j<N; j++) {
individual[i].gene[s][j] = flip(0.5);
}
individual[i].fitness = evaluation(individual[i].gene); // 個体の適応度計算
}
}
print_process(individual, 0); // 初期世代の個体群を表示

798 名前:デフォルトの名無しさん [2013/01/06(日) 19:29:17.28 ]
//0世代目のエリート選択
for(i=1;i<M;i++){
if(individual[0].fitness < individual[i].fitness){
individual[0] = individual[i];
}
erito = individual[0];
}

// ステップ2 (1〜T世代)
for(t=1; t<=T; t++) {

// 交叉
one_point_crossover(individual);
// 突然変異
mutation(individual);
// 子個体の適応度値計算
for(i=0; i<M; i++) {
individual[i].fitness = evaluation(individual[i].gene);
}


// ルーレット選択
roulette_selection(individual);

799 名前:デフォルトの名無しさん [2013/01/06(日) 19:29:51.37 ]
individual[0] = erito; //エリート挿入
for(i=1;i<M;i++){
if(individual[0].fitness < individual[i].fitness){
individual[0] = individual[i];
}
erito = individual[0]; //更新
}
print_process(individual, t);
}
return(0);
} // End of main()


// 個体の適応度計算
float evaluation(int *a) {
int j; // 遺伝子座インデックス
int count = 0; // 遺伝子中の`1'の数

for(j=0; j<N; j++) {
count += a[j];
}
return((float)count);
} // End of evaluation()

800 名前:デフォルトの名無しさん [2013/01/06(日) 19:33:20.45 ]
不要だと思った箇所は省きました


// 個体の中身や適応度値を画面に出力
void print_process(struct genotype *ind, int generation) {
int i; // 個体インデックス
int s; //音符数インデックス
int j; // 遺伝子座インデックス
float max_fit, min_fit, avg_fit; // 最大,最小,平均適応度

// 各個体の中身を出力
printf("\n世代数: %d\n", generation);
for(i=0; i<M; i++) {
printf("第%d個体:\n ", i);
for(s=0; s<ml; s++){
for(j=0; j<N; j++) {
if(ind[i].gene[j] == 0) printf("%c", '0');
else printf("%c", '1');
}
printf(" : %.0f\n", ind[i].fitness);
}
}

801 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 20:19:13.96 ]
> ★ソースコードを晒すと答えやすくなるかもしれません。
>   # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
>   # サイズが大きい場合はアップローダ等を利用してください。
> codepad.org/
> ideone.com/

802 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 20:31:55.59 ]
>>1のテンプレすらも詠まずに長々とだらしないコードをここに張り付ける
その精神性からしてすでに能力が透けて見える

そして極めつけは不要だと自分で判断したコードの中にバグがある場合
もしもここまで来るならそれはどうしようもない

803 名前:デフォルトの名無しさん [2013/01/06(日) 20:32:19.38 ]
>>797です。

codepad.org/IX0mhVGD#comment-s6ofTdEf

804 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 20:38:50.37 ]
>>802
まあまあそう熱くなるなよ
答えてやるついでに軽く言うくらいが
大人の対応だぜ



805 名前:デフォルトの名無しさん [2013/01/06(日) 20:39:37.14 ]
何度もすみません。
訂正があったので
codepad.org/00e0CHIz

806 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 21:02:07.37 ]
>>805
222行目
× > if(ind[i].gene[j] == 0) printf("%c", '0');
○ > if(ind[i].gene[s][j] == 0) printf("%c", '0');

でないかい?

807 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 21:09:35.36 ]
余談だが
printf("%c", '0'); → printf("0");
で良いような

808 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 21:26:07.18 ]
int flip でこうやる
float x = (float)rand() / (float)RAND_MAX ;

809 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 21:31:15.90 ]
こいつのレスのコード見返したけど
やっぱり不要だと思って勝手に省いた部分ジャネーカ
隠れた部分にバグとか、そのままじゃぜってーみつかんねーよ
あおりまくってヴァカにするまでたたかないとコードはでてこねー

810 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 22:30:13.31 ]
普通状況を再現できる最小限のコードをさらすはずなので大丈夫さ

811 名前:806 mailto:sage [2013/01/06(日) 22:41:06.95 ]
>>805
float evaluation(int *a);
も気になる。

for (j = 0; j < N; j++) {
count += a[j];
}
 ↓
for (j = 0; j < ml * N; j++) {
count += a[j];
}
の方が期待される結果を得られるんでないかい?

812 名前:806 mailto:sage [2013/01/06(日) 23:27:48.98 ]
そういえば、あと 2つ。

[1] 44行目
// ステップ1 (0世代目)
for(i=0; i<M; i++) {
for(s=0; s<ml; s++){
for(j=0; j<N; j++) {
individual[i].gene[s][j] = flip(0.5);
}
individual[s].fitness = evaluation(individual[s].gene); // 個体の適応度計算
//individual[i].fitness = evaluation(individual[i].gene); // 個体の適応度計算
}
}
   ↓
for(i=0; i<M; i++) {
for(s=0; s<ml; s++){
for(j=0; j<N; j++) {
individual[i].gene[s][j] = flip(0.5);
}
}
individual[i].fitness = evaluation(individual[i].gene); // 個体の適応度計算
}
 でないかい?

[2] 141行目
temp[j] = ind[ia].gene[j];
   ↓
temp[j] = ind[ia].gene[s][j];
 でないかい?

813 名前:デフォルトの名無しさん mailto:sage [2013/01/06(日) 23:47:42.36 ]
>>805のコードで
struct genotype individual[M];

void print_process(struct genotype *ind, int generation); //出力
のindに渡しているけど、print_process()内で
ind[i]でアクセスして大丈夫でしたっけ。

void print_process(struct genotype ind[M], int generation); //出力
に渡すなら、間違いなくind[i]でアクセス出来るのはわかるけど。

814 名前:デフォルトの名無しさん [2013/01/07(月) 04:56:25.90 ]
Cを制す者は世界を制す



815 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 07:44:29.95 ]
>>813
問題ないよ

816 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 09:27:31.16 ]
>>813
引き数リストのtype name[size]は、type * nameと解釈されるから全く問題ない。
寧ろ、配列そのものではないのでsizeは書かないのが一般的。

817 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 15:02:30.93 ]
ATARUに出てきたのがC言語だとすぐにわかった
声聞くと一番簡単なプログラムだがスイーツはこれを聞いたらすげえと思うのか

818 名前:813 mailto:sage [2013/01/07(月) 19:29:11.36 ]
>>815-816
ありがとうございます。

struct genotype *ind と struct genotype **ind で勘違いしていました。
ttp://ideone.com/GkZdrC で実験して理解出来ました。

819 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 00:35:40.79 ]
LinuxでC言語のプログラム書くときにVCみたいなやつないんすか
エディタはvimでいいんですけどビルドとかコンパイル対象のファイルの指定とか
makefile書くのめんどくさいんすけど

820 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 00:39:25.88 ]
中学生はプログラムなんてやってないで勉強してろ

821 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 00:41:14.03 ]
makefileっていってもファイル名を並べて書くだけとかのレベルでしょ
難しく考えすぎなんじゃない
VCみたいなのといったらeclipseだろうか たぶんmakefileより面倒な気がするけど

822 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 02:02:44.92 ]
Eclipseでいいんじゃない?Makefileより面倒かどうか、は、Makefileに慣れてるかどうか、って感じじゃない?
VSに慣れた自分はEclipseのCDTは結構使いやすく感じるよ。Makefileでのビルドもできるしね。
てか、補完に関してはVSより使いやすい部分も多いし。CamelCaseでの補完(JDTでいうBIS→BufferedInputStreamみたいなやつ)がはやくVCのIntellisenseにも実装されてほしいよ。

823 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 06:56:38.62 ]
>>819
Linuxはボランティアが作っているからねえ。
有料のVSと同じ環境が無料で得られたらMSが潰れてしまう。
楽したけりゃ金出してWindows使っとけという話。

824 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 08:12:56.24 ]
VS部門が無くなったってMSは潰れん



825 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 12:03:31.11 ]
ボランティアが日本語のいわゆる「ボランティア」のことなら、Linuxを作ってるのはそれだけじゃない。
給料貰ってそれを仕事としてやってる人間の方がむしろ多い。

826 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 12:30:58.45 ]
日本語がどう、じゃなくてマスゴミが、ボランティア=無償奉仕かのように間違ったイメージを広げてるだけ。

827 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 12:37:21.56 ]
つまり金貰って開発してるのにGUIのある開発環境すら作れない無能集団ということ?

828 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 12:49:54.12 ]
何言ってんだこいつ

829 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 13:40:50.59 ]
Linuxを作ってる人が開発環境を作ってるわけじゃないだろうし
開発環境はLinuxだけターゲットにしてるわけでもないだろうし
じゅんを

830 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 15:15:29.50 ]
MSと比較されて「ボランティアだから」と言い訳したバカが混乱の原因。
そんな事は言い訳にはならない。

831 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 15:21:21.24 ]
オープンソースプロジェクトはバカ避けしにくいって問題もあるだろうな
自己主張が激しいだけの無能とかワラワラいそうだ

ブランチ作って永遠にそこから出て来るな!
って言ってもバカは言うことを聞かない

832 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 15:31:35.14 ]
iPhoneの無料アプリのレビューも酷いが、あれはあれでウンコアプリの
抑止力になっているのか。

833 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 15:44:12.26 ]
>>832
広告アプリの足の引っ張り合いかも

834 名前:デフォルトの名無しさん [2013/01/08(火) 16:55:53.56 ]
>>805です。
問題としていたところが解決されました。
本当にありがとうございました。



835 名前:デフォルトの名無しさん [2013/01/08(火) 18:52:10.93 ]
>>805です。
何度もすみません。

現段階では、評価値が各個体ごとに出力されているのですが、
各個体の、各行(5ビットの2進数)ごとに評価値を出力させるには
どうしたらよいのでしょうか??

836 名前:デフォルトの名無しさん [2013/01/08(火) 20:29:08.57 ]
上で指摘された箇所を修正したものです。

codepad.org/gZhkoLWp

837 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 02:28:08.71 ]
0x00000000,0x77073096,0xee0e612c,0x990951ba,0x076dc419,0x706af48f,0xe963a535,0x9e6495a3,
0x0edb8832,0x79dcb8a4,0xe0d5e91e,0x97d2d988,0x09b64c2b,0x7eb17cbd,0xe7b82d07,0x90bf1d91,
0x1db71064,0x6ab020f2,0xf3b97148,0x84be41de,0x1adad47d,0x6ddde4eb,0xf4d4b551,0x83d385c7,
0x136c9856,0x646ba8c0,0xfd62f97a,0x8a65c9ec,0x14015c4f,0x63066cd9,0xfa0f3d63,0x8d080df5,
0x3b6e20c8,0x4c69105e,0xd56041e4,0xa2677172,0x3c03e4d1,0x4b04d447,0xd20d85fd,0xa50ab56b,
0x35b5a8fa,0x42b2986c,0xdbbbc9d6,0xacbcf940,0x32d86ce3,0x45df5c75,0xdcd60dcf,0xabd13d59,
0x26d930ac,0x51de003a,0xc8d75180,0xbfd06116,0x21b4f4b5,0x56b3c423,0xcfba9599,0xb8bda50f,
0x2802b89e,0x5f058808,0xc60cd9b2,0xb10be924,0x2f6f7c87,0x58684c11,0xc1611dab,0xb6662d3d,
0x76dc4190,0x01db7106,0x98d220bc,0xefd5102a,0x71b18589,0x06b6b51f,0x9fbfe4a5,0xe8b8d433,
0x7807c9a2,0x0f00f934,0x9609a88e,0xe10e9818,0x7f6a0dbb,0x086d3d2d,0x91646c97,0xe6635c01,
0x6b6b51f4,0x1c6c6162,0x856530d8,0xf262004e,0x6c0695ed,0x1b01a57b,0x8208f4c1,0xf50fc457,
0x65b0d9c6,0x12b7e950,0x8bbeb8ea,0xfcb9887c,0x62dd1ddf,0x15da2d49,0x8cd37cf3,0xfbd44c65,
0x4db26158,0x3ab551ce,0xa3bc0074,0xd4bb30e2,0x4adfa541,0x3dd895d7,0xa4d1c46d,0xd3d6f4fb,
0x4369e96a,0x346ed9fc,0xad678846,0xda60b8d0,0x44042d73,0x33031de5,0xaa0a4c5f,0xdd0d7cc9,
0x5005713c,0x270241aa,0xbe0b1010,0xc90c2086,0x5768b525,0x206f85b3,0xb966d409,0xce61e49f,
0x5edef90e,0x29d9c998,0xb0d09822,0xc7d7a8b4,0x59b33d17,0x2eb40d81,0xb7bd5c3b,0xc0ba6cad,

838 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 02:28:39.97 ]
0xedb88320,0x9abfb3b6,0x03b6e20c,0x74b1d29a,0xead54739,0x9dd277af,0x04db2615,0x73dc1683,
0xe3630b12,0x94643b84,0x0d6d6a3e,0x7a6a5aa8,0xe40ecf0b,0x9309ff9d,0x0a00ae27,0x7d079eb1,
0xf00f9344,0x8708a3d2,0x1e01f268,0x6906c2fe,0xf762575d,0x806567cb,0x196c3671,0x6e6b06e7,
0xfed41b76,0x89d32be0,0x10da7a5a,0x67dd4acc,0xf9b9df6f,0x8ebeeff9,0x17b7be43,0x60b08ed5,
0xd6d6a3e8,0xa1d1937e,0x38d8c2c4,0x4fdff252,0xd1bb67f1,0xa6bc5767,0x3fb506dd,0x48b2364b,
0xd80d2bda,0xaf0a1b4c,0x36034af6,0x41047a60,0xdf60efc3,0xa867df55,0x316e8eef,0x4669be79,
0xcb61b38c,0xbc66831a,0x256fd2a0,0x5268e236,0xcc0c7795,0xbb0b4703,0x220216b9,0x5505262f,
0xc5ba3bbe,0xb2bd0b28,0x2bb45a92,0x5cb36a04,0xc2d7ffa7,0xb5d0cf31,0x2cd99e8b,0x5bdeae1d,
0x9b64c2b0,0xec63f226,0x756aa39c,0x026d930a,0x9c0906a9,0xeb0e363f,0x72076785,0x05005713,
0x95bf4a82,0xe2b87a14,0x7bb12bae,0x0cb61b38,0x92d28e9b,0xe5d5be0d,0x7cdcefb7,0x0bdbdf21,
0x86d3d2d4,0xf1d4e242,0x68ddb3f8,0x1fda836e,0x81be16cd,0xf6b9265b,0x6fb077e1,0x18b74777,
0x88085ae6,0xff0f6a70,0x66063bca,0x11010b5c,0x8f659eff,0xf862ae69,0x616bffd3,0x166ccf45,
0xa00ae278,0xd70dd2ee,0x4e048354,0x3903b3c2,0xa7672661,0xd06016f7,0x4969474d,0x3e6e77db,
0xaed16a4a,0xd9d65adc,0x40df0b66,0x37d83bf0,0xa9bcae53,0xdebb9ec5,0x47b2cf7f,0x30b5ffe9,
0xbdbdf21c,0xcabac28a,0x53b39330,0x24b4a3a6,0xbad03605,0xcdd70693,0x54de5729,0x23d967bf,
0xb3667a2e,0xc4614ab8,0x5d681b02,0x2a6f2b94,0xb40bbe37,0xc30c8ea1,0x5a05df1b,0x2d02ef8d,

839 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 07:16:17.33 ]
コードを読んで結果がどのようになるか当てる問題です。
過去のテストでこのようなコードがでたのですが
ttp://ideone.com/zTUtAt
まったくわかりません。解説お願いします。
まずどこから考えればいいのでしょうか・・・。

840 名前:桃白白 mailto:sage [2013/01/09(水) 08:46:34.28 ]
>>839
arrayは
  mainで[1, 2, 0]がセットされる。
  functionで変更される。
  mainで出力される。

functionでarrayの値がどう変わるのか考えればいい。

一回目のfunctionでは。
  jは-3。
  arrayの0番目には-3が加算される。
  arrayは[-2, 2, 0]
  jは3。

二回目のfunctionでは。
  arrayは[-2, 2, 0]

  arrayの2番目には3が加算される。
  arrayは[-2, 2, 3]
  jは-1。

  arrayの1番目には-1が加算される。
  arrayは[-2, 1, 3]
  jは2。

  arrayの0番目には2が加算される
  arrayは[0, 1, 3]
  jは-2。

841 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 14:46:50.03 ]
>>819
一応、makefileを自動で作成するツールはいくらでもあるけれど
君みたいな馬鹿が質問するレベルのことって、手書きのmakefileで十分な規模じゃないの?

842 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 14:49:43.18 ]
>>827
基本情報ぐらい取れば?

843 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 20:31:02.16 ]
>>835
このプログラムは何だか分からないけど、評価値って適応度(genotypeのfitness)のこと?
そうだとしたら、

// 遺伝子型の定義
struct genotype {
int gene[ml][N]; // 遺伝子
float fitness; // 適応度
};
 ↓
struct genotype {
int gene[ml][N]; // 遺伝子
float fitness[ml]; // 適応度
};
として、
evaluation();は
for(j=0; j<ml*N; j++) {
count += a[j];
}
 ↓
for(j=0; j<N; j++) {
count += a[j];
}
として、fitnessを設定するところでfitness[]それぞれについてevaluation();を呼び出す。
というのではいかが?

(fitnessを各5bitごとに持たせる。つまり、一個体につきfitnessを4つ持つことになるが良いのだろうか?)

844 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 20:33:37.26 ]
evaluation();の中でfitness[ml]を全部計算した方が良いかな



845 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 21:17:03.56 ]
 C初心者です。高橋麻奈の「やさしいC」なら簡単に分かるのですが、
「独習C」になると歯が立ちません。その間を埋めるような教科書が無いでしょうか?
ポインタ、構造体などの基礎は理解しているつもりです。
たとえばレス ハンコックの「C言語入門」あたりなのでしょうか。

 以上よろしくお願いします。

846 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 21:28:34.27 ]
神になるためのテンプレから外れるからそういう遠回りになるのだ

847 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 21:31:44.39 ]
独習Cに難しいところなんてあったっけ?

848 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 22:29:46.63 ]
例えば何が難しいのか言ってくれ

849 名前:デフォルトの名無しさん [2013/01/10(木) 06:33:17.63 ]
日本語が難しいのだと予想

850 名前:デフォルトの名無しさん mailto:sage [2013/01/10(木) 06:49:57.39 ]
独習Cは文体が学術っぽくて堅苦しいうえにあの厚さ。
一般人は5分で投げ出す。
翻訳者は高橋麻奈を見習えと言いたい。

851 名前:デフォルトの名無しさん mailto:sage [2013/01/10(木) 09:19:03.77 ]
原書よめばいいだろ。

852 名前:デフォルトの名無しさん mailto:sage [2013/01/10(木) 09:25:29.86 ]
居るよね
入門書ばっかり読む奴
全く素質無いから早く気づいてやめればいいのに

853 名前:デフォルトの名無しさん mailto:sage [2013/01/10(木) 13:30:11.20 ]
本を買ってくれる分おまえよりは業界に貢献してるだろ

854 名前:854 mailto:sage [2013/01/10(木) 17:03:56.82 ]
ideone.com/Yzef0W

char strload_y[] = "12345678901"; /* 11 桁 */
float loaded_y_float = atof(strload_y) / 10000000;
int loaded_y_int = atoi(strload_y) / 10000000;

上記において、割り算の結果を int に入れた時に数値がおかしくなる理由を教えてください。
Mac OS X 10.8.2(GCC 4.2.1)LP64(I32LP64)モデルです。
よろしくお願いいたします。



855 名前:デフォルトの名無しさん mailto:sage [2013/01/10(木) 17:08:13.71 ]
32ビットでのintの最大値が21億ほどだから。

856 名前:854 mailto:sage [2013/01/10(木) 17:26:55.12 ]
>>855
ありがとうございました。11 桁の段階で既に int が扱える桁を超えていたということなのですね。
漠然としか理解できていなかったので助かりました!

857 名前:デフォルトの名無しさん mailto:sage [2013/01/10(木) 18:24:38.75 ]
ついでに言うと、floatも桁数が足りてない。

858 名前:854 mailto:sage [2013/01/10(木) 18:49:45.54 ]
>>857
ありがとうございます。あの後調べたところ
long 型に変換する atol という関数があること
double 型に変換する atof と、atof が double 型を扱うことまで分かりました。
実際に使用しているプログラムでは 4 桁の数値を取り出すものだったので
たまたま問題にはならなかったみたいです。重ね重ねありがとうございました。

859 名前:デフォルトの名無しさん mailto:sage [2013/01/10(木) 20:42:51.81 ]
GCC の話かも知れないのですが、エラーメッセージで時々
Abort trap: 6
Segmentation fault: 11
など数字のついたメッセージを受け取ります。
他の数字のエラーメッセージを見てみたいのですが
これは何の規格で定義されているものですか?

860 名前:デフォルトの名無しさん mailto:sage [2013/01/10(木) 20:44:27.31 ]
故意にセグらせる命令があったはず

861 名前:デフォルトの名無しさん mailto:sage [2013/01/10(木) 20:50:43.44 ]
6 = SIGABORT
11 = SIGSEGV

Unix系なら<signal.h>付近に書いてある。

862 名前:デフォルトの名無しさん mailto:sage [2013/01/11(金) 00:00:12.10 ]
なんで、find,grepの使い方から覚えないんだろう

863 名前:デフォルトの名無しさん mailto:sage [2013/01/11(金) 02:19:19.02 ]
リッチーさんも亡くなったのにまだCに固執してるのかきめえ
Bに移行しろよ

864 名前:デフォルトの名無しさん mailto:sage [2013/01/12(土) 23:29:53.77 ]
2ちゃんねるブラウザを作ろうかと思ってC言語を勉強しているわけなんですが

C言語で専ブラの画面を作るには、どのように作るのがベストなのでしょうか
C#で作られている専ブラのソース見てみたら、画面共通化されていない感じでした。

ちなみに、一番の問題はスレを表示する機能を実装する時に、
どのように高速動作 + 画像表示させるのかが問題になってくるかなと思っています。



865 名前:デフォルトの名無しさん mailto:sage [2013/01/12(土) 23:31:32.43 ]
win32apiで作るかC言語で作るのを諦めるかじゃないかなあ

866 名前:デフォルトの名無しさん mailto:sage [2013/01/12(土) 23:36:07.81 ]
CでGUIはキツい
それでなくともショートカットやらマウスジェスチャやら
面倒は山積みだ

一番問題なのは2chブラウザにあたって
C言語を選定するその考えだ

867 名前:デフォルトの名無しさん mailto:sage [2013/01/12(土) 23:37:09.66 ]
スレ表示についてはIEコンポーネントを貼り付けるだけでもいける

868 名前:864 mailto:sage [2013/01/12(土) 23:37:19.15 ]
>>865
最初はwin32で作ろうかなと思ったのですが、面倒そうだったのでやめました
gtkを使ってプログラムしてこうかなって思ってます

過去に専ブラを作ろうと試みたこともあるのですが、スレを表示するのが難しくて困り果てました
表示するだけなら簡単だけど、画像を表示させたりすると難しいんですね

869 名前:864 mailto:sage [2013/01/12(土) 23:48:06.98 ]
>>866
.NETは会社で使っているので、スルーすることに決めました

>>867
それは過去に考えたことがあるんですが、独自描写でいきたいなと思ってます。
独自描写すればプログラム的に楽しそうだからです

870 名前:デフォルトの名無しさん mailto:sage [2013/01/12(土) 23:50:54.93 ]
DirectXでレスを3D表示すると楽しいよ

871 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 00:16:25.06 ]
wxWidgetsでアプリ作るのはどうかな

872 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 00:32:50.72 ]
>>868
win32api が面倒とか言ってる奴が、C でやると言うのも理解できないけど、
そもそもなんで C++ でないのか?

まあ、それはそれでスレ違いになるけど。

873 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 00:42:10.18 ]
HTMLでtable使ってドット絵吐き出せばいいじゃん

874 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 01:12:12.85 ]
>>869
やめとけよ。
Cの標準ライブラリを見てみたか?
ブラウザを作れそうな機能なんて一つもないだろ?
そういう言語なんだよCは。



875 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 02:09:08.05 ]
10 SCREEN 0:CONSOLE,,0,1:WIDTH 80,25:DEFINT A-Z:CLS 3
20 ARGC=2:ARGV$(1)=">>874ボケが"
30 GOSUB *MAIN
40 END
100 *MAIN
110 PRINT ARGV$(1)
120 RETURN

876 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 11:59:25.23 ]
>>868
画像表示とか要らんので、lynxやmnewsみたいのを作って下せ。

877 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 12:05:20.43 ]
既存のGUI部品に全く頼らず、
ゲームの画面みたいに全部独自のUIでやるのは面白いかもしれないな
そういうのないから大ヒットするかもしれんぞ

878 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 12:14:06.04 ]
UIカスタマイズとか面白いね

879 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 14:28:04.56 ]
>>877
freeglutとかで出来そう

880 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 14:52:14.03 ]
1から200までの整数のうち、7の倍数を一行に13個ずつ表示するプログラムが課題で出されたのですが
7の倍数を抽出する部分は出来たのですが、一行に13個ずつ表示するという部分ができません。
授業では、if文とfor文しか扱っていないのでその範囲内で解決できるみたいです。
ご教授いただけると嬉しいです。よろしくお願いします。

881 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 14:57:50.46 ]
>>880
キューに貯めて
七個あったら一気に書き込み

882 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 15:06:05.08 ]
>>880
>一行に13個ずつ表示するという部分ができません。

13個出力したら、"\n" を出力するだけだろ。

883 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 15:10:22.12 ]
#include <stdio.h>

int main(void){
int count = 0;
for(int i = 1; i <= 200; i++){
if(i % 7 == 0){
printf("%d ",i);

count++;
if(count % 13 == 0){
printf("\n");
}
}
}

return 0;
}

884 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 15:14:00.23 ]
でたーmainの引数にvoid入れちゃう奴www



885 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 15:22:00.00 ]
お前ならどうすんの?

886 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 17:14:41.97 ]
俺ならchar * envまで書いちゃうね

887 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 17:20:35.14 ]
darwinだと4つも渡してくれるらしいぞ。
int main(int argc, char **argv, char **envp, char **apple);

888 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 17:21:08.26 ]
その最後のやつはなに?

889 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 17:35:12.75 ]
実行ファイルのパスが入ってたりするらしいけど。
ていうかやってみたら実際に入ってた。
おおっぴらに使っていいもんではないのかも。

890 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 17:45:10.55 ]
じゃargv[0]には何が入っているの?

891 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 18:03:22.58 ]
同じの入っとる。
そっちは書き換えるアプリがあるせいかね。

と思ったけどまったく同じでもないっぽい。
unixjunkie.blogspot.jp/2006/02/char-apple-argument-vector.html

892 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 20:37:28.45 ]
Winmainなんかはargv書き換えると落ちるし

893 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 21:08:38.17 ]
void main()対策

#define void int

894 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 21:17:19.16 ]
>>893
入門者が本気にするだろw



895 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 22:54:58.07 ]
>>893
予約語って書き換えできるっけ?

896 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 23:02:39.51 ]
>>895
できたよ
ideone.com/YJVWwH

897 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 23:22:30.52 ]
>>896
で、写像の意味を理解してないから、減点くらう訳ですね。

898 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 23:27:44.74 ]
プリプロセッサはC言語の事なんかなんにも知らないっしょ

899 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 23:34:08.68 ]
プリプロセッサは何にも知らないけれど
プリプロセッサの気持ちはよく分かる
プリプロセッサ可愛いや
可愛いやプリプロセッサ

900 名前:デフォルトの名無しさん mailto:sage [2013/01/13(日) 23:53:43.12 ]
赤いプリプロセッサに唇よせて
黙って見ている蒼井そら

901 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 02:10:18.27 ]
>>877
UIって今後はjsで標準化されてくよ
QMLやgnome-shell、silverlight、javafx辺りが良い例。

902 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 02:38:06.68 ]
argv[0]は実行ファイルのフルパスじゃなかったっけ。

903 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 02:41:03.09 ]
>>902
コマンドインタプリタ次第。
相対パスの場合もあれば、aliasの場合もある。

904 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 02:43:09.83 ]
起動時に与えられた通りの内容が入ってる。



905 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 02:46:31.85 ]
>>902
ttp://ideone.com/soEDca
では、
argv[0]=./prog
と出た

906 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 04:28:45.10 ]
<time.h>

void a(int year, int month, int day){
struct tm b;
time_t c;

b.tm_year = year -1900;
b.tm_mon = month - 1;
b.tm_mday = day;
b.tm_hour = 0;
b.tm_min = 0;
b.tm_sec = 0;

c=mktime(&b);
/*

*/
}


関数を作っていてこれのmktimeの部分でエラーが出てコンパイルできないのですがなにが原因でしょうか

907 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 04:38:09.77 ]
>>906
どんな[エラー]?

こちらでは、
「関数 a(); で c に値がセットされたが使われていない」
というような[警告]は出るけどコンパイルは通るよ。

908 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 04:56:43.16 ]
>>902
Windowsではフルパスだよね

909 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 09:14:03.76 ]
Windowsでもそのアプリを起動するアプリ次第だけどな。

910 名前:859 mailto:sage [2013/01/14(月) 16:52:31.42 ]
>>859 です。遅くなりましたがありがとうございました。

>>861
ISO の規格に載っていたとは、検索の仕方がわるかったです。
>>862
iPhone アプリ制作の基礎として C 言語を学んでいるので
UNIX の知識はあまりありません。時間を見て調べてみます。

911 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 18:30:22.14 ]
>>909
マジかよ・・・

912 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 19:01:10.81 ]
マジなの?

913 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 19:06:48.98 ]
相対パスで起動すれば相対パスで入ってるだろ

914 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 19:11:55.92 ]
WindowsならGetFullPathName()つかってフルパス名に変換してた。



915 名前:デフォルトの名無しさん [2013/01/14(月) 20:23:31.00 ]
プログラミングを始めようと思っています
ゲームのチートツールなどを作りたいと思っているのですが
これに特化した言語はありますか?全ての言語で出来ると良いんですが・・・

916 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 20:36:57.47 ]
Cかアセンブリ

917 名前:デフォルトの名無しさん [2013/01/14(月) 20:40:14.02 ]
>>916
かっこいいwwwありがとうございます!

918 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 20:41:31.10 ]
こいつには無理だな

919 名前:デフォルトの名無しさん [2013/01/14(月) 20:58:04.62 ]
資格ってとった方がよいですか?


いいなら、1級までとる。

www.shikakude.com/minsikakupaje/cgengo.html

920 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 21:00:04.13 ]
そんなもの糞のやくにもたたんひたすら書け
なんかしらんが宿題スレがいま盛況だからちょうどいい

921 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 21:13:43.60 ]
そんな事より働く気なら基本情報位持ってないとバカだと思われるぞ

922 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 21:16:33.63 ]
えーレバーあんま好きじゃないわ
レバーの魅力を語って

923 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 21:25:11.52 ]
昔の一種くらいはほしいね今は何?今でもCやcaslやってるのか?いずれにせよ妬くには立たん

924 名前:デフォルトの名無しさん [2013/01/14(月) 21:26:28.32 ]
>>918
お前って馬鹿だな



925 名前:デフォルトの名無しさん mailto:sage [2013/01/14(月) 21:40:49.51 ]
>>919
会社でその資格に対して手当てとか出るなら、とったほうが良い。
そうでないなら、とる意味なし。

926 名前:デフォルトの名無しさん mailto:sage [2013/01/15(火) 09:45:46.35 ]
うわぁ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<197KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef