【初心者歓迎】C/C++室 Ver.25【環境依存OK】

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2006/03/27(月) 10:56:42
>>951
うはwww夢がポンデリングwwwwwww
うp
953デフォルトの名無しさん:2006/03/27(月) 11:01:02
>951
前スレで出てたと思う
954デフォルトの名無しさん:2006/03/27(月) 11:03:30
Cをより原始的に簡単にしたC--があるとおもろいかも
955デフォルトの名無しさん:2006/03/27(月) 11:15:20
>>951
大当たり
ちなみにタイトルは「図解入門 よくわかる最新C言語の基本と仕組み」
956デフォルトの名無しさん:2006/03/27(月) 11:24:57
>>954
実は既にあったりする
957デフォルトの名無しさん:2006/03/27(月) 13:09:55
>>952
ttp://www.f-site.com/down.html
前スレから拾ってきた>>955を書いてる横田とかいう糞馬鹿のサイト
ここからサンプルコード落とせるからまぁ見てみれ
958デフォルトの名無しさん:2006/03/27(月) 14:04:20
エラッタ見てみるとおもろいな。
>※お詫びと訂正: 編集プロダクションとの行き違いにより、本書には多くの誤字があります。
なんじゃそりゃ。
959デフォルトの名無しさん:2006/03/27(月) 15:41:02
こいつが書いてるC#の本ちょっと読んだけどすさまじくだめそうだったなぁ・・・w
960デフォルトの名無しさん:2006/03/27(月) 15:51:10
libc(ランタイム)ってCの仕様に書かれてましたっけ?
961デフォルトの名無しさん:2006/03/27(月) 15:52:41
>>960
ライブラリ関数の事なら規格票(JIS X3010:1999)の第7章に列挙してある
962デフォルトの名無しさん:2006/03/27(月) 15:56:01
>>961
ライブラリ関数のことです。


未だにライブラリ関数がないOSがあるんで困るんだよね・・・
963デフォルトの名無しさん:2006/03/27(月) 17:04:32
そうそう、BTRONとかBTRONとかBTRONとか。
#ディレクトリの概念がないのはいいけど、そこに無理やりシェルを移植するから……
964デフォルトの名無しさん:2006/03/27(月) 17:25:17
>>963
そういやBTRONにも泣かされたなw

今はMona OSで中途半端なlibcが複数あるから困ってるww
965デフォルトの名無しさん:2006/03/27(月) 18:30:46
構造体Aのメンバに構造体Bを指すポインタを持たせ、
構造体Bのメンバに構造体Aを指すポインタを持たせるにはどうすればいい?

もちろん↓の様に書いてもだめなことはわかってるんだが。

struct A{
B *p;
};

struct B{
A *p;
};
966デフォルトの名無しさん:2006/03/27(月) 18:44:07
>965
struct B;
struct A{
B *p;
};

struct B{
A *p;
};

あ、あと前スレのごたごたの蒸し返し禁止ね。>各位
967デフォルトの名無しさん:2006/03/27(月) 18:47:39
ごたごた
968デフォルトの名無しさん:2006/03/27(月) 18:52:35
>>966
サンクス
969デフォルトの名無しさん:2006/03/27(月) 21:11:23
>>968
クラスでも同じことできるから覚えておくといい
970デフォルトの名無しさん:2006/03/28(火) 07:38:35
>>957
STEP2がまともに表示されないんですが
971デフォルトの名無しさん:2006/03/28(火) 20:02:59
質問です
しょうもない関数
例えば、値を比較して大きいほうを返すだけの関数などを作りたい場合
オブジェクト指向で考えるとどこ設置するのでしょうか?
色々と調べた感じだと、名前空間をどうのこうのってのがあったんですが・・。
メソッドとするにはあまりにもひどすぎるし・・。
972デフォルトの名無しさん:2006/03/28(火) 20:06:05
大きいか小さいか、の定義はそのオブジェクト自身が知ることじゃない?
973デフォルトの名無しさん:2006/03/28(火) 20:11:25
>>971
そんなものオブジェクト指向にせず、ただの関数にしろ。
そして名前空間はオブジェクト指向と直接の関係があるのでは無い。

全部が全部クラスに閉じ込めればオブジェクト指向になるわけではないし、完璧なオブジェクト指向なんて存在できない。
たとえばグローバルな変数や関数を廃止したJavaやC#だとそんな関数は静的メソッドになっていて、クラスのありがたみは0だ。

ちなみにその例なら<algorithm>のstd::maxが使える。
974デフォルトの名無しさん:2006/03/28(火) 20:12:19
>>971
>例えば、値を比較して大きいほうを返すだけの関数などを作りたい場合
何と何の値を比較するかによる。
1つのインスタンスの中の値を2つ比べるだけならクラスのメンバ関数になる。
でも、2つのインスタンスが比べる対象になるならその関数は1つ上の存在を管理している奴にあずけなければならない。
また、1つはクラス、もう1つの値は別のどっかの変数の場合でも同様。
975デフォルトの名無しさん:2006/03/28(火) 20:18:33
すみません。
ちょっと、記述が足りませんでした。
int とか dubule です。
つまるところ、math.h みたいな感じで使えるのかな〜?と思ったんです。
C言語なら、そういったモジュールを自作でつくって、使いまわしてたんで・・。
976デフォルトの名無しさん:2006/03/28(火) 20:19:00
inline int gyaaa(int a, int b){return (a>b)?a:b;};
ヘッダファイルに置いて比較を使いたいファイル内でインクルード
色々対応したいならテンプレート使うといいかも
977デフォルトの名無しさん:2006/03/28(火) 20:23:21
ふむふむ。
mymath.h
inlinle ナンチャラ
inlinle ナンチャラ 

みたいな感じで使えるってことですね。
ていうか、こんなやり方でいいんでしょうかね・・?
スマートなやりかたってないんだろうか。
978デフォルトの名無しさん:2006/03/28(火) 20:33:51
979デフォルトの名無しさん:2006/03/28(火) 20:39:09
int max(int a, int b){ return ((a^b)&((a-b)>>31))^a
};
980デフォルトの名無しさん:2006/03/28(火) 20:55:54
xの2次方程式です。Cのプログラムで答えを書いてください。

a*x*x + b*x + c = 0
981デフォルトの名無しさん:2006/03/28(火) 21:02:16
>980
宿題片付けて欲しいんなら宿題スレで
982デフォルトの名無しさん:2006/03/29(水) 00:29:30
C99使えばこんなんかな?
#include <complex.h>
double complex x1 = (-b + csqrt(b * b - 4 * a * c)) / 2 * a
double complex x2 = (-b - csqrt(b * b - 4 * a * c)) / 2 * a
983デフォルトの名無しさん:2006/03/29(水) 00:48:42
んじゃあ3次以降はどうするよ?
984デフォルトの名無しさん:2006/03/29(水) 01:16:49
3, 4次は公式に当てはめる。
5次以上はシラネ。
985デフォルトの名無しさん:2006/03/29(水) 01:33:51
>>982
確か絶対値の大きい方をまず求めて、
その値を使って他方を求める。
そうしないと引き算の桁落ちで
真値と大きく異なる値が得られることがある。
986デフォルトの名無しさん:2006/03/29(水) 02:13:52
>>985
どこのことを言ってるんだ?
987デフォルトの名無しさん:2006/03/29(水) 05:22:14
classオブジェクトをnewで作成するときにlistに
そのポインタを保存して、終了するときにまとめて
deleteしたいんですが、異なるclassもまとめて管理
しようとしてvoid*で保存すると、deleteでデストラクタが
呼ばれないんですが、呼び出すべきデストラクタを
listに一緒に保存する上手い方法は無いものでしょうか?
988デフォルトの名無しさん:2006/03/29(水) 05:43:08
listに登録する異なるクラスに共通のスーパクラスを作り
void*でなくこのスーパクラスのポインタを持つようにする

それか、void*の代わりにboost::shared_ptr<void>を使う
989デフォルトの名無しさん:2006/03/29(水) 06:38:17
>>988
boostを調べてみたら、他にも色々面白いクラスがあるみたいですね。
教えていただいて感謝。
990デフォルトの名無しさん:2006/03/29(水) 07:17:10
>>989
ていうか、そんなのが普通に出てくる設計って何かがおかしいと思わないのか?w
991デフォルトの名無しさん:2006/03/29(水) 08:09:51
>>990
いや、要はdeleteしなくて済む(し忘れてもいい)方法は
無いものかと思っただけで。
shared_ptrやarrayなんてのがあることを知らなかったので。
992デフォルトの名無しさん:2006/03/29(水) 08:16:17
スマートポインタぐらいは知っておこうぜ・・・
993デフォルトの名無しさん:2006/03/29(水) 11:02:49
ブースト無いとC++はカスだってJava信者さんにいじめられました。
994デフォルトの名無しさん:2006/03/29(水) 11:04:34
C++にはC++にしかできないことがある
995デフォルトの名無しさん:2006/03/29(水) 11:06:59
operator, operator->* とか
996デフォルトの名無しさん:2006/03/29(水) 11:17:58
演算子再定義さえできんJavaに言われたくはないな。なぜかStringだけ+やら+=やら使えるが。

boost::spiritは実にアレゲで素敵ですよコンパイル速度遅すぎだけど
997デフォルトの名無しさん:2006/03/29(水) 11:19:39
存在からしてカスのJavaに言われたく無い
998デフォルトの名無しさん:2006/03/29(水) 11:26:43
C++は匿名クラスかラムダ式か、そのあたりの使い捨ての仕組みが
あればいいんだがなー。
そうすると、クロージャとか考え出して、メモリ管理の問題にいきつくので、
ガベコレなしでクロージャはきついな、クロージャなしだと、無名関数の
パワーは半減だなーと思う。
ちょっと構文を拡張してくれれば、あとはboostの人がshared_ptr使って、
なんとかしてくれそうな気がするんだけど。
999デフォルトの名無しさん:2006/03/29(水) 11:52:55
>>998
クロージャ無しで十分使えるboost::lamdaがあるじゃないか。
1000デフォルトの名無しさん:2006/03/29(水) 11:59:57
【初心者歓迎】C/C++室 Ver.26【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1143601166/l50
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。