- 1 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 14:09:22 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.44【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1194016813/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 829 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:05:26 ]
- >>809
↓こういうこと。全部はやんないよ。 struct LIST *next(struct LIST *next_p) { struct LIST *p = next_p; … p = next_p->next; … return p; } ポイントは以下の二つ。 ・引数の next_p に代入するのは止める。見通しが悪くなる。 ・戻り値はポインタに。
- 830 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 23:44:12 ]
- >>827
できないと思う理由は?
- 831 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 00:17:03 ]
- <string>の中が警告だらけになる気がするね。
そこでは安全に文字列関数を使っていると仮定して良いのだけど。 strsafe.hの関数は使うけど、既存関数の使用で警告を出さないようにする方法があると思う。
- 832 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 00:28:12 ]
- そういや未だstrcpyで警告出る理由わからないや
- 833 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 00:43:01 ]
- >>832
char tmp[10]; strcpy( tmp, "abcdefghij" ); 文字列リテラルなら分かりやすいけど、 これが argv[1] だったりすると?
- 834 名前:806 mailto:sage [2007/12/25(火) 01:27:12 ]
- >>829
丁寧にありがとうございます。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5579.c こんな感じになりました。が、やっぱりループから抜け出せなくなりました。 一応一周できてるので辿る値、順序は間違っていないと思うのですが、何が悪いのかやはりわかりません…
- 835 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 09:26:13 ]
- >>834
*p = *next(p); ↑これは p = next(p); じゃないのか? でないと p が示している先の値を書き換える。
- 836 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 10:36:02 ]
- テスト
- 837 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 13:16:42 ]
- ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5581.c
惑星の公転を例にN体問題のシミュレーションをするプログラムを↑のようにして作って 実行したのですが、 datファイルをみると振り子の運動のような形になっていて円(楕円)軌道を周回していないです。 どの辺を修正すればよいのでしょうか?
- 838 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 13:57:04 ]
- デバッグは自分でやれ
- 839 名前:836 [2007/12/25(火) 15:31:48 ]
- >>838
まあ、やってもわからないから聞いてるんですけどね。 やってわかるなら最初から聞きにきませんよ。 どっかの計算結果がおかしいのは明白でしょうけど・・・
- 840 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:34:14 ]
- class Hoge{
public: Hoge(); private: int m; }; みたいなクラスがあったとして。 Hoge::Hoge() : m(0) {} と Hoge::Hoge(){ m = 0; } ではどこが違うの?
- 841 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:39:25 ]
- 逆切れktkr
プログラムとは関係ない周辺専門知識を要するんだから、 最低限、座標算出式の数式とかを書いてくれないと、正直ソース読む気にもならんな。
- 842 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:42:53 ]
- >839
実はさっきからいろいろ見てはいるんだけど、いまいちわかんない。 とりあえずdistの挙動が怪しげなので、見てみるといいかも。 あと、new_xはいいけど、new_vって必要?
- 843 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:48:20 ]
- const int m;
に換えてみれば分かる。
- 844 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:54:26 ]
- RGBからYUV2に変換したいんですがどこか参考になるサイトありませんか?
- 845 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 16:02:06 ]
- 逆数
- 846 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 16:03:52 ]
- 1秒間に60回ピッタリと処理を繰り返すにはどうすればいいですか?
- 847 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 16:07:11 ]
- 60回やる→次の秒まで待つ
- 848 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 16:18:37 ]
- >>840
上はmを0で初期化してる。 下はmに0を代入してる。
- 849 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:00:04 ]
- C言語とC++の違いって何かあるんですか。
- 850 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:06:29 ]
- Cに機能が加わったのがC++
- 851 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:18:24 ]
- C言語とC++だと、細かいところで微妙に文法に互換がなくて、
それが混乱のもとになったりするよな。 C言語のプログラムといいつつ、だいたいC++コンパイラ でコンパイルして使うから、C言語とC++の文法が ゴチャゴチャになったプログラムが現実にいっぱい存在する。 C++にベターCの要素なんて入れないほうが、スッキリした気がする。
- 852 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:27:50 ]
- C++にベターCの要素を入れたとか根本から間違ってるぞ
- 853 名前:842 mailto:sage [2007/12/25(火) 17:51:46 ]
- >839
すまん、ずっと悩んでたの、単にgnuplotの使い方でこっちが大ポカやらかしてただけだった。 plot "Point2.dat" usi 4,6 ~ orz... 答えは>842であってる。new_vがいらない。 前のvじゃなく、できたてほやほやのaから計算したvを使って位置を出してください。
- 854 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:57:22 ]
- 逆ギレするだけのことはありますね
- 855 名前:842 mailto:sage [2007/12/25(火) 18:00:03 ]
- ちょっとまて、俺は逆ギレした奴じゃない。
- 856 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 18:32:20 ]
- >>855
なんで逆ギレしてないんだよ、キレろよ
- 857 名前:806 mailto:sage [2007/12/25(火) 18:39:14 ]
- うおおおおお動いた(⊃д⊂)
ありがとうございます…もっかい集中的にポインタ勉強せにゃぁ…
- 858 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 19:00:09 ]
- >>858
死ね
- 859 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 19:00:33 ]
- Ctrl+C
- 860 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 19:48:33 ]
- >>851
あまり汚いプロクラムは嫌われるんですかね。 とりあえず簡単な文法とか紹介してくれませんか?
- 861 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 19:56:02 ]
- そんくらい調べろよ・・・
- 862 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 20:06:53 ]
- 糞すぎワロタ
遠慮せずに死ね
- 863 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 20:15:45 ]
- 自殺するくらいなら会社やめろよ。
マジで
- 864 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 20:38:20 ]
- あと人いるとこで飛び降りもな・・
- 865 名前:デフォルトの名無しさん [2007/12/26(水) 01:38:36 ]
- 演算子delete [] で質問です。
下のように書いて実行するとdeleteのところで落ちるのですが、 これはdelete []が配列の各要素に演算子delete を実行した後に スタック領域にあるオブジェクトをdeleteしようとするから落ちるということで正しいでしょうか? またdeleteはヒープ領域にあるオブジェクトにしか実行できないのでしょうか? int main() { int *x[10] ; for( int i = 0 ; i < 10 ; ++i ) { x[i] = new int(i) ; } delete [] x ; }
- 866 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 01:54:13 ]
- >これはdelete []が配列の各要素に演算子delete を実行した後に
実行しません。 newしたものをdeleteしてください。
- 867 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 07:54:04 ]
- new を10回呼び出したなら delete を10回呼ぼう。
new [] を1回呼び出したなら delete [] を1回呼ぼう。
- 868 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 09:19:21 ]
- 基底クラスをインターフェイスとしてサブクラスに機能を実装しているクラスがあります
今回、新しくサブクラスを用意することになりました。 しかし、今まであるメソッドに3つパラメーターを渡してあげてたのですが 新しいサブクラスのみ5つパラメーターを渡さないといけないようになってしまいました 他の部分に出来るだけ変更を少なく、今回の仕様を適応する良い方法あるのでしょうか? 恐らく元の設計も良くなかったのでしょうが 設計の段階でパラメーター数の変化に影響されにくい作り込みというのは可能なのでしょうか?
- 869 名前:865 mailto:sage [2007/12/26(水) 09:38:56 ]
- >866,867
ありがとうございます。deleteについてもう一度勉強しなおします。
- 870 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 09:53:33 ]
- >>868
そのクラスの目的も分からないし、 サブクラスを使ってる側を見ないと何ともいえないが。 >他の部分に出来るだけ変更を少なく、今回の仕様を適応する良い方法あるのでしょうか? 新しいサブクラスで該当のメソッドだけオーバーロード。 >設計の段階でパラメーター数の変化に影響されにくい作り込みというのは可能なのでしょうか? 引数にオブジェクト(クラス)を取るようなモジュール構成を考える、とか。
- 871 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 09:57:22 ]
- Win32APIなんかはパラメータは構造体で取って最初のメンバに構造体サイズ入れさせてそれでバージョン分けとかしてるな
- 872 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 10:38:19 ]
- >>870
研究用に使う測定器を管理するプログラムなんですが 今回の測定器だけ微妙に仕様がことなってまして扱えるパラメータが増えてますorz >新しいサブクラスで該当のメソッドだけオーバーロード。 基底クラスのポインタでサブクラスを示した場合、オーバーロードした関数は見えないのでは? やはり構造体で受けた方が良いのかなぁ
- 873 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 11:31:19 ]
- 動けばいいだけなら、unionなstruct作る
間違えてパラメータが来る可能性があるなら、 そのstructに区別がつくようなパラメータを追加する。 オブジェクト指向的には、基底パラメータクラス作って その派生オブジェクトを渡すのがいいんだろうけど そこまでするほどのものかは開発規模や環境による。
- 874 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 12:14:13 ]
- >>873
基底クラスの仮想関数の引数では基底パラメータクラスのポインタを受けて サブクラスで内部的に引数を派生パラメータクラスのポインタに移し直して処理する というのはありでしょうか? 大分日本語でOKにな文章ですが察してやってくださいorz
- 875 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 12:56:25 ]
- >>874
必然的にそうなる。 キャストはちゃんとdynamic_castでcast失敗したときのコードもちゃんと書いておく。 あとパラメータオブジェクトの生存期間をよくよく考えて実装すればOK テストプログラムではスタックから確保したオブジェクトをポインタ渡しにしたが 実際のプログラムではポインタのオブジェクトが開放されてしまい、 不正なメモリ参照で落ちることは容易に推測できる。 newして渡してやって、開放は受け取ったほうが、終了したら行うようにすればいいと思う。
- 876 名前:デフォルトの名無しさん [2007/12/26(水) 16:43:51 ]
- ウィンドウをクラスにする意味ってあるの?
- 877 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:10:53 ]
- >>876
あるよ
- 878 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:15:59 ]
- VS2005 VC
文字列char*型から、double型への変換は atof( char* 何某);でいいけど float型への変換はどうしたらいい?
- 879 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:16:15 ]
- >>877
あるの?
- 880 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:16:38 ]
- >>879
おまえは有無を聞いた
- 881 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:18:59 ]
- >>879
やっぱり無いかも
- 882 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:20:27 ]
- >>878
atofの結果をfloatでキャスト
- 883 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:27:06 ]
- >>882サンクス
882ですが、今手元に、コンパイラ無いけど char* str; double n; n = atof( str ); static_cast<fioat>( n ); これでOK?
- 884 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:28:03 ]
- ↑スマン
878デツ
- 885 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:32:39 ]
- あらゆるウィンドウは多重継承されていくんだ・・・!
- 886 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:38:07 ]
- >>883
float n = atof(str); これで十分
- 887 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:57:49 ]
- >>886
サンクス >>878=883ですが その変換して、警告が出たんで聞いたんですが・・・ 警告無視していいの?
- 888 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:12:57 ]
- >>887
安全なキャストではないからね
- 889 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:13:59 ]
- 趣味グラマだけど警告は大目に見てるけど本職さんはそうはいかないんだろうな
- 890 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:14:31 ]
- ×趣味グラマだけど
○趣味グラマだから
- 891 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:24:49 ]
- >>878=883ですが
趣味とか本職さんの問題ではないと思うんだけど char型1バイト=8ビット float型は4バイト=32ビット double 型は 8バイト=64ビット 結論は、C99では、 char型文字列からfloat型 この変換をサポートする、関数は準備されてないってことですね。
- 892 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:27:36 ]
- static_castなら警告はでないけど
- 893 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:36:19 ]
- >>889
うーむ、そんなもんなのかなぁ。 俺はいつも警告レベルを最大にして、それを全部潰さないと気が済まないんだけど、 これは「俺が趣味グラマだから」こだわれることなのかな、と思ってた。
- 894 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:40:08 ]
- 趣味グラマだから、本職より入念に危うい場所を潰してもいいしその逆でもいいんだろ?
- 895 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:40:17 ]
- msvcのWallは最凶
- 896 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:41:12 ]
- >>893
Warningは、実はバグのことがあるので、基本は全部潰したほうが良い。 あまり時間がなくて、どうでもいいwarning(「使ってない変数があるよ」とか)の 場合はスルーすることもある。 あと、昔作られたコードでは、「動いているから直さない」と言うことが結構ある。
- 897 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:41:51 ]
- アドベンチャーゲームの作り方を教えてくれる人いませんか?
- 898 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:43:37 ]
- ゲーム製作技術板にGO
ttp://pc11.2ch.net/gamedev/
- 899 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:45:48 ]
- プロンプトで牧場物語やってた時期がありました、あれは習作向けだな
- 900 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:47:36 ]
- double→floatで警告出るのは桁が切りつめられて精度が下がるから。
浮動小数点型なら精度下がるだけだから、再度倍精度にキャストとかしない限りは問題なす。 int→shortだと危険だけど。
- 901 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:48:10 ]
- アドベンチャーゲームならバッチファイルで作った記憶が‥‥
- 902 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:40:34 ]
- スパゲッティコード生成してくれるスクリプトあったよな、なんていったっけ
- 903 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:49:42 ]
- 俺俺
- 904 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:52:55 ]
- 俺俺がポインタのポインタみたく見える
- 905 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:53:54 ]
- そりゃ病気だ
- 906 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:58:56 ]
- 浮動小数点型は「上から」数桁を保存する。
整数型「下から」数桁を保存する。 だな。
- 907 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:05:00 ]
- 俺がポインタだ
- 908 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:06:01 ]
- 俺がポインタだとすると実体は何処にあるんだ
- 909 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:07:04 ]
- 俺が実体だ
- 910 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:09:04 ]
- 俺って実体がないんじゃね・・・?あれ?うわああああああああ
っていうホラーだったんだよ!
- 911 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:12:10 ]
- 感感俺俺
- 912 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:13:31 ]
- >>907-911
そこらの講座よりポインタについて理解できました ありがとうございます
- 913 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:14:16 ]
- >>908
ポインタだって実体だ、つまりポインタという役割を持って生まれたお前という存在が 確かにここに居るということだ、自信を持て。 とか、仄かに学習効果のあるネタ書くべきかな、初心者スレ的には。
- 914 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:17:53 ]
- CASLをちょっと習ってポインタを理解した俺はおかしかったのか
今回の例で書くと連想配列になりそうで困る
- 915 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:18:09 ]
- >>913
ポインタみたいな奴って結構多いよな
- 916 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:20:03 ]
- 安価とかのがわかりやすかろう
- 917 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:20:12 ]
- 嫌な役割だなw
- 918 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:20:47 ]
- 実体俺へのポインタの実体って親の子供みたいな
- 919 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:22:26 ]
- >>916
よくアンカだけ書き込む奴がいるけど、あれが俺ポインタか
- 920 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:22:37 ]
- 実体俺へのポインタの実体は子供で実体が子供のポインタ変数名が親か
- 921 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:22:54 ]
- >>914
MASM やってポインタを理解した俺もいる。
- 922 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:23:30 ]
- 俺はC#やってポインタを理解した
- 923 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:23:37 ]
- ポインタ変数俺の実体が>>922だとすると*俺==&俺に
- 924 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:24:14 ]
- >>923の>>922は>>923にしてくださいorz
- 925 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:24:44 ]
- ちげーよ*いらねえようわあああ
- 926 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:25:18 ]
- *の使い方が複数あるのが混乱の元かもな
- 927 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:25:44 ]
- >>923-924
それはきっとthisポインタだ
- 928 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:26:54 ]
- そこの説明したかったわけじゃなかろう
- 929 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:30:33 ]
- 俺ポインタってthisポインタのことだったのか
|

|