2 :
デフォルトの名無しさん :2013/07/13(土) 12:47:03.18
惑星の軌道計算はCでも結構遅くないか?
叩き台のup
Cで動的にライブラリ読み込むのどうすんだっけ?
OS依存
9 :
デフォルトの名無しさん :2013/07/13(土) 21:13:35.02
惑星の楕円軌道って公式あんの? つか楕円軌道の公式あっても今回の話は他の惑星の重力の影響があるから使えないか。
近日点移動も考慮しなきゃいけないのか?
>>9 ある程度以上真円軌道でないと惑星と認められないので気にしない方向で
水星の近日点移動
海王星の発見に大きな貢献をしたルヴェリエは、水星の近日点移動の問題にも気づき、この問題を解決するための仮説を模索し計算をおこなったが、水星の内側に新たな惑星は発見できなかった。
ルヴェリエの計算によれば、このうち38.3秒の分だけがニュートン力学に基づく計算値によっては説明できないで残るとされた。
この問題の解決は、数十年後に意外な形でえられた。
重力の扱いについて一般相対性理論を目指して格闘していたアインシュタインは、1915年11月18日に、彼の重力場の方程式から水星の近日点移動が定量的に予測できることを発見した。
水星のその予測された移動の量は、ルヴェリエ以後の研究でも説明不可能と見なされた43秒の分まで観測値とほぼぴったりと一致していたのである。
http://www1.kcn.ne.jp/~h-uchii/intro.PS/perihelion.html
static const int x=10; と、グローバル空間で宣言して static const int Inv_x_= 1.0/x; と、関数内で定義するとエラーが出てコンパイル出来ない・・・ C++だと通るけどCだとエラー出ます。 原因と対策を教えて下さいorz
変数を使って初期化できないコンパイラなんじゃねえの
>>14 C言語では const int が変数だから
gcc 使ってます。 コンパイルオプション使って解決出来可能でしょうか?
enum { x = 10 };
>>15 >>16 やっぱり変数で初期化がNGなんですね・・・
static const double root_3 = sqrt(3);
ってコードも同様で弾かれます
元々やりたいことは計算量減らしたいだけなんだけど、
おとなしくマクロ使うべきでしょうか?
constexpr使わないとだめな悪寒・・・
double root_3; static int initialized = 0; if (!initialized){ root_3 = sqrt(3); initialized = 1;}
C++にしてコンパイルすればいいんじゃねえの
初期化する関数をこしらえる必要がありそうですね。
今やってるやり方は
double root_3=sqrt(3)
printf("%a",root_3)
で16進法で表して、コピペして、マクロ定義にしてます。
ここらへんもどかしいC言語・・・
>>23 C++でコンパイルすると分けわからないエラー出まくるので
勉強中です
カッコ付けてgccでやらずに 素直にVC++でやったらええやん Linuxとか無駄に時間を消耗するだけ
そんなことはない。 vcのほうが標準的でない仕様。
27 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/13(土) 23:54:26.12
g++でC++11をコンパイルオプションで有効にしてconstexpr使えば問題解決
取り敢えずmakefileのgccってところをg++変えてみて出来るかやってみたけど やっぱりコレだけじゃ無理でした。 VC++使いたいけど、組み込みLinux環境なんです。
#define HOGE_X 10 static const int Inv_x_= 1.0/HOGE_X;
もう #define は時代遅れだからねえ
プログラムサイズをlsで調べるのが最先端
> 時代遅れ ?
Qzは自分がロートル過ぎて全てを時代遅れって事にしとかないと 自分の中で辻褄が合わないんだろ
>>29 今のところそのようなコードを使ってますが、
ルート3などを定数化するときにちょっと困りました
>>24 みたいに書いて一応納得することにしましたが
もう少しキレイに書きたいです。
宣言して、フラグを設けて初期化部分を作る
>>22 さんの方法も
一つの答えだと思いますが、C++みたいに短く書けるに越したことはないし、
一つの関数でしか使わない定数なので、わざわざマクロ定義するのも
なんか汚いコードな気がして、もどかしいです
(C++でコンパイル出来たらそれに越したことはないですけど)
static const double root_3=sqrt(3);が通ってくれたら
こんなに葛藤することも無かった・・・
ビルドの最中に数値に展開するソースコード生成する。
組み込み?でsqrt(3)を使いたいなら、こんな感じ static const double root_3=1.732050808;//sqrt(3); 手計算できるところはなるべく、即値入れたほうがいいかもね
>>33 中途半端な知識で知ったかぶると恥をかくぞ。
定数定義限定なら#defineは
× 時代遅れ
○ enumを使うべき
だろう。でもショートコードのマクロ化は#defineじゃないと無理だ。
こういうのは適材適所なんだよ。
マクロも善し悪しで多用すると弊害が大きいけど適切な使用は
十分に利用価値がある。
√3 を算出するコストは今ではたいしたことはない、とわりきるか、値を自分で書いてコメントを付けておくか
富豪プログラムできる環境ばかりじゃないんだよ
>>37 >定数定義限定なら#defineは
>× 時代遅れ
>○ enumを使うべき
今は浮動小数点の定数定義の話なんだと思っていましたが?enum で浮動小数点を定義できるとでも?
そもそも#defineが時代遅れとか言うやつは定数定義しか 用途がないと勘違いしているアホだから。 #defineはマクロであって定数を定義する手段ではない。 マクロを使う機会は確かに減ったが、なくなっていいもの でもない。 普通にコード書いてもいいけどマクロが使えたほうが便利 というシチュエーションはある。
>>40 ではもう
double r5 = 2.2360679 // 5^0.5
とでもするしか‥‥
>>36 で既出でしたね。
コンパイル時にコード生成で math のライブラリ関数を呼び出すというのは、なかなかに凝ったコンパイラだと思います
>>42 java とか c# ではマクロがなくなっていますが、それは理由があるとおもいますよ
とJavaもc#も使えないボンクラがなんか言ってる
>>45 それはそのとおりですがそう判断した理由は?
>>44 javaやC#はそもそもクラス型設計から(C++を反面教師として)
スタートしてるから、そもそもマクロは使わない言語設計だから。
Cの世界では制御構造がクラス型に比べて制限されるんで、
マクロがあると便利なことがある。なくてもコードは書けるが。
ただCのマクロを時代遅れの一言でバッサリやるのはただの馬鹿。
>>47 OOとマクロとは関係ないと思いますよ
マクロはIDEとの親和性を破壊するから、だと思っていますけれどもマクロやテンプレート様は文脈を著しく発散させますからね
まあ IDE の支援を「進歩的」、IDE を疎外する存在は obsolete と決め付けるのもどーかとも、まあ思いますが
組み込みのくせにsqrtを使おうとは生意気だ
テンプレートは言語仕様であってOOじゃねーよ馬鹿。 やっぱこいつ知ったかぶりだけなんだな。
51 :
デフォルトの名無しさん :2013/07/14(日) 06:31:39.85
お前らカリカリしないで、渾身の自爆ギャグでなごもうぜ。 www54.atwiki.jp/qzaw55cn4c/pages/16.html www54.atwiki.jp/qzaw55cn4c/pages/17.html
バカな素人の思い込みを一々まともに相手する必要はないだろ
>>50 「テンプレートは言語仕様であってマクロじゃない」っていいたかったの?
54 :
デフォルトの名無しさん :2013/07/14(日) 09:58:57.11
>>47 制御構造にマクロを使う(#define の中で goto)のは
マクロと goto の最悪コンボ
窓から突き落とされるぞ
56 :
デフォルトの名無しさん :2013/07/14(日) 10:06:43.51
交番で爆竹チキンレースしたのは小学生だっけ?
57 :
デフォルトの名無しさん :2013/07/14(日) 11:17:04.16
みさなんこんにちわ、暑い日が続きますねいかがおすごしでしょうか。 パイプを使って標準入力を受け取り、そのあとscanfでユーザーから入力を受け取りたいのですが、 ユーザーが入力する間もなくプログラムが終了してしまいます。どうやったらユーザーからの 入力を受け付けることができますか?教えてください。書いたプログラムはこれです。 int main() { int n; fscanf(stdin, "%d", &n); printf("パイプで入力された数字は%dです\n", n); printf("数字を入力してください > "); scanf("%d", &n); printf("あなたが入力した数字は%dです\n", n); return 0; } 実行したコマンドはこれです。 echo 12 | ./a.out 実行した結果はこれです。 パイプで入力された数字は12です 数字を入力してください > あなたが入力した数字は12です ユーザーが入力することなくプログラムが終了してしまうのです。 ユーザーに入力させたいのです。 どうしたらいいのでしょうか?教えてくださいお願いします。
59 :
57 :2013/07/14(日) 12:09:00.73
>>58 ありがとうございます。
このように書いて実行してみたのですが、状況は変わらず入力することができませんでした。
int main() {
int n;
fscanf(stdin, "%d", &n);
printf("パイプで入力された数字は%dです\n", n);
freopen("/dev/stdin", "r", stdin);
printf("数字を入力してください > ");
scanf("%d", &n);
printf("あなたが入力した数字は%dです\n", n);
return 0;
}
60 :
57 :2013/07/14(日) 12:40:46.99
>>58 freopen("/dev/tty", "r", stdin);
にしたところ期待通り動作するようになりました。
解決しました、ありがとうございました。
でもそんなプログラムあったらキレる
freopen じゃないけど stdin と tty 別々に開いて入力してるのはあった GnuPG とか
63 :
デフォルトの名無しさん :2013/07/15(月) 14:13:57.28
for文を使ってifは使わないで ■□■ ■■■ ■□■ みたいな処理をさせたいのですがどういう風に処理させたらいいですか? 白いところを黒いところに混ぜていくやり方がわからないです
ary[] = {B, W, B, B, B, B, B, W, B}
配列つかわないとやっぱり無理ですかね‥
斜め方向はクロネッカーのデルタを使えばいい x=0とX=maxはy方向に全部埋めればいいんでしょ 3つに処理を分ければif文不要
(x==0)|(x==2)|(y==1)
if文も三項演算子も同じ括りなんでしょ?
>>63 for (i = 0; i < 9; i++)
(i / 3) % 2 + (i + 1) % 2;
>>63 この質問で分かるのか。
エスパーさすがだな。
多次元配列って何次元まで可能なんですか? int x[10][10][10][10][10]; 5次元までエラー出ませんでした。皆さんは何次元まで 可能でしたか?
メモリの許す限り行けそうな気がする。
そんなもんコンパイラとコンパイル設定と実行環境次第だろ
75 :
デフォルトの名無しさん :2013/07/15(月) 17:48:11.65
>>72 char a[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2];
VC2012 64bitにて
>>75 そこまで増やすと
スタックエラー出ませんか?w
恐ろしくてできないw
規格では最低12次元。これを超えるものはコンパイルエラーにしても良い。
でも多次元配列は必ずmallocしないといけないのが難ですよね。
そもそも1次元で済むのに多次元使うのアホらしい
変数名って最長100文字らしいね 自由じゃないのかよ
C言語ってアメリカみたいだよな 自由といいつつ制限だらけ 変数名に制限あり(printfとか予約後はダメ)
PCゲームの9割はC言語で作ってるんだろ? 需要高いし一生衰退しないだろうな
>>80 色んな環境があるから限界値の設定は必要。
>>81 printf は、予約語じゃないだろ…
84 :
デフォルトの名無しさん :2013/07/15(月) 19:10:01.59
>>83 いや彼は予約【後】とちゃんと言っているんだが
そもそも自由なんて言ってないし
夏厨
87 :
デフォルトの名無しさん :2013/07/15(月) 19:45:18.98
Cはコンパイラがいらないから人気あるんだろう
>>80 規格上は最長の規定はない。処理系毎の最長値はある。
最低何文字までは保証しなければいけない、というのはあったよな
90 :
デフォルトの名無しさん :2013/07/15(月) 20:04:43.39
今まで1000字を超える変数名とか見たことないが 安全性などを考慮して組み込み系では1万文字超える変数名もザラだって聞いたな
リンカ次第だし何文字までとかCの側で一方的に決められるのか?
92 :
デフォルトの名無しさん :2013/07/15(月) 20:11:16.65
リンカとコンパイラの違い教えて 分らん 分ったところでプログラミングと関係ないけど
ソースファイルからオブジェクトファイルを作る奴と オブジェクトファイルを結合して実行ファイルを作る奴
94 :
デフォルトの名無しさん :2013/07/15(月) 20:17:00.49
ソースファイルから直接実行ファイル作ればいいじゃん? 何だよオブジェってw
>>92 簡単に言うと↓の通り。
コンパイラは、言語を機械語に翻訳するだけ。
リンカは、翻訳された各機械語をくっつけるだけ。
うむ、下々の惨めなプログラマもどきは知らずともよい 知る必要のないことじゃ
>>94 超巨大なプログラムソース1000万行があったとして,一箇所修正したら,全部をコンパイルしなおすなんて無駄でしょう?
だから或る程度の規模のソフトウェアになると,複数の *.c ファイルをそれぞれコンパイルして,あとで一つにまとめる,という手法を使います.
今はちゃんとした OS ですらソースを公開しているし,一度眺めてみるとかカーネルビルドしてみるとか,おすすめです.
HeadFirstCにリンカへのインタビューが載っているから見てくるといい 面白い
>>97 ああそう言えば分割コンパイルをしない奴がいたっけなあ
平日の深夜とか昼間にレスする奴
100 :
デフォルトの名無しさん :2013/07/15(月) 21:29:28.22
>>97 うーん意味分からないですね。
腐ったみかんじゃないけれど
一つ修正したら他は修正しなくていいって
器用すぎませんか...まぁそういうもんだということで。
> 一つ修正したら他は修正しなくていいって 一般人にそういったことはできないでしょう どっか修正したら、他に影響して、終わりなき道を進む...
そんなのは設計の段階で間違ってるだろw
ソースを書いたら終わりだと思ってる人たちがいるからね
>>100 そうなるように作るの
器用とかの問題じゃない
105 :
デフォルトの名無しさん :2013/07/15(月) 21:46:03.98
趣味プロなら 書いて終わりでしょ 組み込みやWebならそうはいかんけど 結局趣味レベなら動けばいいんですよ
107 :
デフォルトの名無しさん :2013/07/15(月) 21:54:53.03
95が出た頃と比べるとプロセッサ性能1億倍近く上がってるんだし どんな冗長なプログラム書いても一緒ですよ
>>100 複数の .c にわけることで変数/関数のスコープも制御できるし
ある一つの .c をコンパイルするときに、他の .c には影響しない風にできるんだったら、そうしたほうがいい、それが分割コンパイル&リンクなんだ
>>107 とりあえずお前が大規模開発したことがない事はわかったから、黙ってろ
>>105 趣味プロでも、どこぞの別ソースを利用するときには、いっそ *.c を別にしますね
sha*** のハッシュ関数とか、メルセンヌツイスタとかね
111 :
107 :2013/07/15(月) 22:27:22.28
>>109 大規模開発してる会社でアルバイトしたことはあったw
1日でクビになったww
112 :
デフォルトの名無しさん :2013/07/15(月) 22:31:41.13
ムーアの法則凄すぎワロタwww どこまであがるんだよwwww
113 :
デフォルトの名無しさん :2013/07/15(月) 22:40:09.83
>>112 え?
CPU のクロックって久しく 4G 超えは販売されていないようだけど、あ、プレスコットってどうだったっけ?
クロック同じでも速くなってるけどな 並列化無関係に
原発振を逓倍してることでもいってるのかな
実測
118 :
デフォルトの名無しさん :2013/07/16(火) 08:08:24.37
Core i7 は Pentium Pro の1億倍近くの性能がある? 定量的に何を基準にどういう計算で言っている?
>>116 まあキャッシュとかバスの転送レートは向上し続けているのでパフォーマンスも向上し続ける。
SoC化とかプロセスルールの微細化とかでシステムがシュリンクするとどんどんそうなる。
ムーアの法則でwiki検索したら 今のところ1億どころか100億なんだが 40年前は2300
だから今は鈍ってるんだって プロセスルールもほとんど限界に来ているし、マルチコアにしてみたものの OpenMPを使える場面はそれほど多いわけではい ゲームはマルチコアを積極的に使ってるけどね その替り民生用量子コンピュータ第一号がついに出てきたな これも何でも使えるわけではないが、公開暗号キーが解ける可能性が ある、浮動小数点演算の速度が軽く100倍以上行くなど、PCでも スパコンに迫る性能を部分的だが獲得出来る可能性が出てきた
量子コンピュータが速いとは限らない。 販売されている量子コンピュータがスパコンを超えてる可能性はかなり低い。
123 :
デフォルトの名無しさん :2013/07/16(火) 17:10:49.47
電磁気デバイスやっぱりもうダメなのかな。 プラズマとかを媒体にすればいいのではないか? プラズマコンピュータ発売されてなかったっけ?
124 :
デフォルトの名無しさん :2013/07/16(火) 17:23:43.84
回路はプログラミングできないからなー 効率良い配置とか絶対あるんだろうけど
125 :
デフォルトの名無しさん :2013/07/16(火) 17:32:30.81
いや回路をプログラミングしてますが
いや基盤の話ね
127 :
デフォルトの名無しさん :2013/07/16(火) 18:06:02.86
手書きエッチングでもしてるのか?
念写だよ
129 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/16(火) 20:28:43.86
プログラムを電気回路図に変換なんてずっと前からやってるし。 グラフ理論を猛勉強させられるらしいな。
130 :
デフォルトの名無しさん :2013/07/16(火) 20:43:03.77
ただ「変換」するのではなく、最適化しなければ仕事が来ない
コモディティ化とブラックボックス化がこれ以上進むと、アセンブラや電気工作がムダ知識になっちゃうんだろうな
132 :
デフォルトの名無しさん :2013/07/16(火) 20:49:25.53
おバカな「最適化」にクレームたれる能力も必要
回路の基本設計もスパコンでやる時代だからな。
コンピューターノセッケイニ、ニンゲンナンテヒツヨウアリマセン。
ドラえもんはまだできてないんだよ
Intelに入りたい
メモリはどんどん大容量化するのにCPUは何で性能伸びないくせに 馬鹿でかいまんまなんだろう
>>137 PAD limit
それはそうとスレチじゃね?
CPUだけの塊をロシアとか土地の広い場所に作って、そのCPUをネットで 利用するような事は無理なのか?
>>139 スパコンでやってるじゃん
ロシアじゃないけど
PS3を1億台くらい用意してさ
極地方なら冷却が捗りそうだな
>>141 ファンヒーターだな。寒冷地に設置してもらいたい。
そっかw 寒冷地だと馬鹿重いファンがいらないのかwww
コールドスタートに予熱が必要で バッテリーも常に暖めておかないといけない どっちにしても戸外環境との敷居は必要なのでラジエータ及びファンは必須
バッテリーを屋外におけばいいじゃん
ロシアの寒冷を定量化したら電気代10京円分だぞwww
それに見合う性能があればペイできるんじゃない?
149 :
デフォルトの名無しさん :2013/07/17(水) 01:41:44.04
main関数内で二次元配列を宣言して、とりあえず値を格納させ、別に宣言した関数にその二次元配列を引数として渡して値を上書きする方法を考えているのですが、どうも思いつきません。 よろしければヒント等を教えていただけないでしょうか。
> どうも思いつきません。 誰か考えて?
二次元配列嫌いだからなあ 気が進まない
なにをしたのか、書いてくれんとね
153 :
デフォルトの名無しさん :2013/07/17(水) 02:01:03.45
>>152 何をした、以前の問題で何をすればいいのか分からないところです。
二次元配列を諦めて 一次元配列で扱えば良い 割とマジで 2つ目の要素数が決まってるなら手段があるけど、 不定だと本当に手段が無い
じゃあ、一次元配列なら出来るの?
#define DEFFUNHA(a,b,c) void fun##b##_##c##ary(a*d){\ a(*p)[b][c]=(void*)d;\ …\ } DEFFUNHA(char,5,10) /* void fun5_10ary(char*){…} */
157 :
デフォルトの名無しさん :2013/07/17(水) 02:06:13.41
>>154 ポインタ配列?ってやつを使えばいいんでしょうか…?
>>149 一次元配列を宣言して、関数に渡して値を上書きする方法は分かる?
159 :
デフォルトの名無しさん :2013/07/17(水) 02:08:01.15
本読めって、言いたくないほうだけど 入門書読んでね ってとしか
漠然とした質問だと、答えが中々返ってこない。 一つ目の方法は、「こういう事をしたいのだが、はどうすればできるか?」と具体的に聞いてみる。 二つ目の方法は、入門書の、「配列とポインタ」、「関数を使った処理」が書いてあるところを読む。 その上で、分からないところがあれば、「これはどういうこと?」と聞いてみる。 一つ目は、解決が差し迫っているなら有効だけど、上手に聞かないと回答がこないかも。
mainだけで動くもの作って、関数化していくってのも手なんだけど 右も左もわからず、いきなり高度なことやろってのがよーわからんのよね
まず、main関数でa[][]の初期設定(値の格納) ↓ 関数を用いて、a[][]の一部を上書き ↓(これを複数回) 最終的にmainの最後で表示 という流れをやりたいです。 オセロの盤面みたいな感じで操作ごとに一部を上書きしたいと思っています。 二次元配列を利用した理由はまた同じ例になりますが、オセロの盤面の1マスを二次元配列の1要素に見立てたいと思ったからです。 値渡しとポインタ渡しの所が少し自分の中で混ざって解釈してる気がしたので、ここで質問し、そこの部分の確認もしたいと思っていました。
上書き=代入でいいんだよな?
すでに格納してあるcharの1文字を別の1文字に書き換えて、mainでも保持させたいということです
オセロなら0と1で表現できるからint型でもいいと思うよ
>>167 オセロの盤面は例であって、オセロではないのでintではなくcharで扱いたいです。
>>162 例えば配列ary[5][5]があったとして
ary[0][0],ary[0][1],...,ary[0][5],ary[1][0],...,ary[5][5]
はアドレスが連続ではないのですか?
連続なら関数へ渡すとき
ary[0][0]やary[1][0]などのアドレスを保持させる意味がわからないんですが・・・
多分、二次配列、と参照渡しの複合問題だからそれぞれ別々に考えたほうがいいよ
ホントに1バイトのcharでいいなら代入で上書きできるけど、 たとえば、Windowsでなんの工夫もしなければ、 ○も●も2バイトになるよ。char[3]
>>169 配列ary[6][6]があったとして
ary[0][0],ary[0][1],...,ary[0][5],ary[1][0],...,ary[5][5]
は、配列だからアドレスが連続です。それが配列の特徴
>>169 ary[1][0]のように1, 0を指定したら、ary[1][0]の記憶領域のアドレスを計算してくれるんだよ
176 :
デフォルトの名無しさん :2013/07/17(水) 11:18:12.55
コンソールで scanf関数を抜ける事ってできますか? 一定時間入力が無かったらスルーみたいな事はできないですかね?
>>177 いやCygwinで無理ですか?
端末上で行うゲームを作りたいんですが、繰り返し制御の中で
scanf使うと思うんですけど入力が無いときも処理が進むようにしたいんです。
cygwinってunixと似てる
>>178 Cygwinのマニュアル読むなり、テストコード書くなりしてみたら?
10分で終わるでしょ。
終わったら結果報告よろしく。
signal処理はunixとWindowsで大きく違うところじゃん。 リンク先見てないけどSIGALRMでlongjmpするんでしょ。 > Cygwinのマニュアル読むなり、テストコード書くなりしてみたら? これが最も早いとは思えないな。
>>181 そうだね。
ヒント出されても自分で調べたり確かめたりできないから聞いてるんだろうしね。
何もわかりません 全部、考えてください って、言ってる?
そもそもゲームでscanf()を使うと言う発想が理解できん。
もしかして、日本語で動作を考えてるだけ
配列とポインタアクセスをごちゃごちゃに理解してるような
188 :
デフォルトの名無しさん :2013/07/17(水) 13:54:10.68
ぬるぽ(^^
189 :
デフォルトの名無しさん :2013/07/17(水) 14:32:58.17
ニューラルネットワークで質問があります
http://d.hatena.ne.jp/ura_ra/20111026/1319642014 のサイトなんですが
//閾値設定x[NUM_INPUT] = 1.0
x[NUM_INPUT] = (double)1.0;
//隠れ素子の計算
for( j = 0; j < NUM_HIDDEN;j++)
{
net_input = 0;
for(i = 0; i < NUM_INPUT+1; i++)
{
net_input = net_input + w1[i][j] * x[i];
}
NUM_INPUT+1なぜ+1なのでしょうか??
閾値ってのは閾値をこえたら発火するという役割なんじゃないのでしょうか?
net_input=に閾値までいれてどんな役割をこなしているのかわかりません!!
このド低能のクソ豚めにどうかご教授ください!
発火判定: Σ(i=0〜n-1)w[i]x[i] が 閾値 を超えたら発火 = Σ(i=0〜n-1)w[i]x[i] - 閾値 が 正なら発火 w[0]x[0] + w[1]x[1] + ... w[n-1]x[n-1] - 閾値 引き算を w[n] = -1 に、閾値を x[n] = 閾値 に置き換えると w[0]x[0] + w[1]x[1] + ... w[n-1]x[n-1] + w[n]x[n] こう書ける (ってことは 0〜n までの積和だねい) 常時 x[n] = 閾値に、 学習で w[n] = -1 (に収束するといいな) Σ(i=0〜n)w[i]x[i] で発火判定すれば良いことになるん
Cの場合、配列は0から数えるからでしょ
193 :
デフォルトの名無しさん :2013/07/17(水) 17:09:24.03
>>185 じゃぁどうやって入力するの?
標準ライブラリだけしか使っちゃいけないなら
scanf必須でしょう?
標準ライブラリのみって縛りだったらscanf()でタイムアウト処理はムリ。 初心者だからしょうがないけど環境とかこういう条件は最初に言うように。
入力にscanf使って良いのは初心者向けの入門書だけ。
196 :
デフォルトの名無しさん :2013/07/17(水) 17:32:34.80
>>195 何使えばいいでしょうか?
hで右
gで左
上がy
下がb
という標準キー設定にしたいんですが。
環境は と問いかけられてるのスルーする質問者
scanfの解説でページ数稼げるからかも、入門書系 テスト作って採点するときも楽なのかもね、scanf
>>197 すいません。
さっきのCygwinです。
cygwinでDOSプロンプトでcursesは苦労するかもしれん なんかローグ動かそうとして苦労した記憶がある
やりたいことが、入門編じゃないところが...
夏休み中に出来れば、いいのかもね
結局DXlib使えば楽勝すぎだなw CUIでゲームとか職人にもほどがある
scanfがセキュリティ的に危ない関数であるのは分かったけど何故? 格納される変数のサイズ以上に入力されたときも変数を超えてメモリへ格納されるから? じゃあ何の関数を使えばいい?
scanfじゃなくて、やりたいことができる自前の関数を作る 自己責任関数がおすすめ
鯖にしてANSIエスケープシーケンス対応の端末ソフト側に●投げ 入力はノンブロッキングでいけるハズ 本末転倒な解w
このスレの人はDXlibについてどう思う? 便利過ぎだろって思う?
便利さならプラットフォーム選ばない分SDLのほうが上
212 :
デフォルトの名無しさん :2013/07/17(水) 19:04:43.55
プラットフォームって何? OSのこと?
黙ってろ
>>206 ちゃんと使えばセキュリティーも問題ないけど使い方がけっこう複雑だし、
仕様とかに精通したって、入門書を卒業して実用的なコードを書き出したら
まず使わないし時間の無駄っていうか。
>>201 昔 CUI 花火のコードを宿題スレで公開した猛者がおられましたが、それを実行したのは cygwin/bash では無理で cmd? いや、もしかすると command.com だったかな‥‥
昔は int や in/out でグラフィックを扱っていた物だ
>>216 そのプログラム感動したわ
何年か前だったと思うが今でもおぼえてる
>>218 エスケープシーケンスだけであそこまで出来るなんて‥‥
どなたか URL をご存じないかと‥‥
codepad か ideone なら今でも拾えるはず‥‥
手元に置かなかったのは不覚でした
初歩的な質問で申し訳ないのですが 例えばint型のnという変数を宣言したとき、 同時にnのアドレスを保持した変数&nも宣言されるのでしょうか。 それとも&nが使われる時にnのアドレスを確認してそのアドレスを格納した変数&nができるのでしょうか。
>同時にnのアドレスを保持した変数&nも宣言されるのでしょうか。 いいえ >それとも&nが使われる時にnのアドレスを確認してそのアドレスを格納した変数&nができるのでしょうか。 いいえ &は「nのアドレスを確認してそのアドレスを」値として返すだけの演算子でやんす 単項のマイナス -n なんかと同じ (nの値を確認してその値の符号を変えたものを返す演算子)
222 :
220 :2013/07/17(水) 22:43:25.37
>>221 では++&nなど&n自体を弄ることはできないんですね
マイナスの例えわかり易かったです。ありがとうございました
マクロの置き換えで、nをループ出来るような仕組みは作れるでしょうか ↓だとA(i)でコンパイル引っかかる int i; int A0 = 1; int A1 = 2; #define A(n) A ## n for (i=0; i<2; i++) printf("%d\n", A(i));
/* for (i=0; i<2; i++)*/ printf("%d\n", A(i)); printf("%d\n", A(i));
printf("%d\n", A0); printf("%d\n", A1);
int *arrayA[] = { &A0, &A1 }; と配列を用意しておいて #define A(i) (*arrayA[(i)]) こうするぐらいしかアイデアが思い浮かばない
forは実行時のループ マクロを展開するためのループじゃねえし
>>227 ああ、#define使わないでそうした方がいいですかね
>>228 分かった上で一応聞いてみたんだが
C++のtemplateに逃げる
自前で展開したソース吐くようなプログラム書けばいいのに
そもそもわかってるものは、こんなもんにマクロ使おうとしない
可変個引数マクロで #define FOR(m, ...) ここは考えろ FOR(A, 1, 2, 3, 4)
ここでうだうだ言ってないで、 こつこつ、エディタでコピペしながらやるほうが早かったりして
236 :
デフォルトの名無しさん :2013/07/18(木) 23:44:15.39
いずれは国籍なんて無視して理系及び理系の重要性を認めて理系側についた 人間(ニュータイプ)だけで独立国家のジオン公国つくって、何も生み出す 能力がなく金や資源や穀物を右から左に動かして中間搾取するだけのモラル の無い腐りきった文系男(オールドタイプ)国家に戦争しかけるのが人類の 最終形態だろう、200年先になるか300年先になるかはわからんが
237 :
デフォルトの名無しさん :2013/07/18(木) 23:54:02.14
C言語やってたら頭ぼけるってあれは嘘だな 細かい事に躓くタイプがぼけるだけで、これやりてーとか 頭ふるちんぽしてたらかなり頭使うからボケない
簡単に作れるゲームない? 表示とかは記号で十分なんだが
Tic tac toe
hangman(単語当て) 数十分もあれば作れるはず
hangmanってクロスワードの1ワード版みたいなやつだっけ?
242 :
デフォルトの名無しさん :2013/07/19(金) 17:24:53.96
Cでは文字列を複数格納するにはどんなデータ型がいいですか? ファイルから読み込んだ文字列を格納したいです。 apple tree orange notebook eggplanet jym mountain
243 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/19(金) 17:35:51.51
>>242 char*かchar[]でしょうね。strdupで動的に確保することもできるし。
244 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/19(金) 17:47:02.67
typedef struct { char word[64]; } WORD; か typedef struct { char *word; } WORD; として、 WORD word_table[100]; か WORD* word_table;
245 :
デフォルトの名無しさん :2013/07/19(金) 19:45:38.59
>>243 それぞれの要素の文字にアクセスできますか?
246 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/19(金) 20:21:50.63
word_table[i].word[j]でできるよ。 単語の長さはstrlen(word_table[i].word)
char str[]={"apple\0tree\0orange\0notebook\0eggplanet\0jym\0mountain\0"}; // \0をセパレータ \0\0をセンチネル
>>247 strcatでfgetsで持ってきた文字列を追加した後にヌル文字を付加する感じですか?
文字列に制限がないなら char **
>>244 ここはやっぱり
typedef struct {
.....いろいろ
char word[0];
} WORD;
と不定長構造体で決めたいところ
251 :
デフォルトの名無しさん :2013/07/20(土) 06:29:38.69
>>251 半年前のレスを引っ張り出してきて粘着するとか
半年前の煽りすら記憶しておけない痴呆症 WWWW
人の噂も75日っていうし、せいぜい2ヶ月くらいだろ 半年も粘着するのは異常
異常なのは Qz 巣でやってりゃいいのに出てきてゴミをばらまく
どっちも異常
257 :
デフォルトの名無しさん :2013/07/20(土) 10:48:15.94
www
ちょっと質問失礼します main.c func1.c func2.c ・・・とあったとして 全部gccでコンパイルしてますが、 main.cだけをg++でC++としてコンパイルしてビルドしたりすることは可能でしょうか? あと、出来る場合何か気をつけることとかあったら教えて下さいorz
259 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/21(日) 02:26:51.25
main.cの拡張子を.cppに替える。 C言語からアクセスされる関数の宣言と定義にextern "C"を付ける
gccの場合はC++拡張子はcxxかccだったような 最近は変わったのか?
>>259 普通に出来るみたいで良かった
今まで extern使ってなかったから初めて使ってみます
gccではC++をコンパイルしないから問題ない
>>260 GnuCompilerCollection にて c++ をコンパイルするときには、拡張子に関係なく g++ でコンパイルする
gcc 界隈の人達は、c ソースの拡張子は *.c、c++ソースは *.C だったかと。
264 :
デフォルトの名無しさん :2013/07/21(日) 10:20:36.55
申し訳ありません、どこに質問したらわからないのでこちらに質問させて頂きます>_< malloc(3)やfork(2)などの()内の数字は何を表しているのでしょうか。引数でもないようで調べてもよく分かりませんでした
man の section 番号 man 3 malloc
ミニ四駆に組み込みプログラム入れてマグナムトルネードできるようにしたいのですが可能でしょうか?
忍法帖がLv3なんだけどcookie改造してLvあげることできませんか? Cで出来たら嬉しいです。
データはサーバー側で保存してるんじゃないのか
>>268 いやシークレットモードにしたら別々に忍法帖が出ました。ってことは
完全にブラウザ側じゃないですか?
>>269 クッキーにはIDだけあって
IDに対応する忍法帖レベルはサーバーで管理してる
誰かからレベルの高いクッキー貰えば使える
HAP=FOXdayoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
みたいなの
ならID適当に入れて高いレベル出るまでループすればよくね?
273 :
デフォルトの名無しさん :2013/07/21(日) 11:52:40.98
>>270 それってマジなの?
クッキーごとにサーバーに情報保管してたら
サーバー大変じゃない?いつまで保管していいのかわかんねえし。
>>273 これまでもちょくちょくリセットあったろ
275 :
デフォルトの名無しさん :2013/07/21(日) 12:47:11.96
277 :
デフォルトの名無しさん :2013/07/21(日) 12:57:29.92
>>276 リセットなんて運営者がやろうと思えばできるんで、
リセットされたからサーバーに情報がありますなんてのはバカの考えだと思う。
これが俺の頭を使った結果です。反論ありますか?
>>273 こういう頭の悪い書込みを未来永劫記録するのに比べれば
ずっとかんたんだよ
279 :
デフォルトの名無しさん :2013/07/21(日) 12:59:59.44
>>278 どこが頭悪いと思う?
クッキーに情報を暗号化して保持する方がよほど合理的だと思うけど。
>>277 よく分かった
お利口さんならもう一歩進めてxxxな実験をすればいい
三回書き込みすれば全て分かるはず
281 :
デフォルトの名無しさん :2013/07/21(日) 13:06:15.00
>>280 こういう情報もあるけど、クッキーがIDだけってのはウソなんじゃないの?
リセット以外に根拠あるの?誰かがそう言ってた?
82: 動け動けウゴウゴ2ちゃんねる [sage] 2011/05/09(月) 15:27:04.88 ID:1LC60r510
忍法帖(2chCookie)には【お名前】【レベル数】【他ごにょごにょ】が暗号化されている
忍者DB(ninja.2c.net)には【お名前】【無事or破門フラグ】【他ごにょごにょ】が保管されている
水遁は水遁対象レスに記録されている投稿者の忍者の【お名前】を
忍者DBに登録されている【お名前】リストを元に照会し発見次第その【お名前】に「破門」フラグを立てる
【粛々と】忍法帖巻物質問スレ★12【相談室】
http://archive.2ch-ranking.net/operate/1304824974.html
>>281 実験手順も経過も結果も報告は不要
ってかするな
バカが真似するから
283 :
デフォルトの名無しさん :2013/07/21(日) 13:13:05.32
>>282 まだ答えてもらってないけど、クッキーがIDだけってのはウソなんじゃないの?
リセット以外に根拠あるの?誰かがそう言ってた?
ボーヤが暴れる夏休み > まだ答えてもらってないけど、クッキーがIDだけってのはウソなんじゃないの? 多分一般的なWebアプリの事だろうな。 セッションはミドルウェアで管理させるからIDだけ渡しとけば事足りる。 > 忍法帖(2chCookie)には【お名前】【レベル数】【他ごにょごにょ】が暗号化されている この暗号キーがサーバにしかないからクライアント側ではcookie作れないの。 クッキーがIDだけだろうが他の情報を持っていようが、クライアント側では 生成できない事にはかわりないので、そこに突っ込む事には意味がない。
285 :
デフォルトの名無しさん :2013/07/21(日) 13:35:48.47
>>284 復号化が難しいってのはクッキーに暗号化された情報があるって前提のもとでの話ですよね。
あなたが言っているのはクッキーにはIDしかないということです。
それがウソなのではないかと私はあなたの発言を疑っています。
ですのでクッキーにはIDしかないという発言の根拠を教えてくださいと言っています。
一般的なWebアプリのことではありません。2chの忍法帳の話です。
286 :
デフォルトの名無しさん :2013/07/21(日) 13:36:59.31
ボーヤに論破される老害の夏休みw
何言っても疑うんだから自分の頭使えよ
>>285 知らんよ。オレIDだけだなんて言ってないし。
カミ付く相手とカミつく場所を間違えてるぞ。ぼーず。
> ですのでクッキーにはIDしかないという発言の根拠を教えてくださいと言っています。 で、これがはっきりすると何かいい事あるのか? ぼーず。
290 :
デフォルトの名無しさん :2013/07/21(日) 13:57:33.09
>>287 根拠を示していただければそれですむ話ですよね。
何言っても疑われるからうそついても問題ないわけではありませよね。
ボーヤに正論叩きこまれた感想はありますか?
>>288 あなたがIDだけだと言ってないとするならあなたは話の流れもわからずに
話に割り込んで頓珍漢なことを言いましたね。
話の発端はこれです。
270+2 :デフォルトの名無しさん [↓] :2013/07/21(日) 11:36:13.05
>>269 クッキーにはIDだけあって
IDに対応する忍法帖レベルはサーバーで管理してる
誰かからレベルの高いクッキー貰えば使える
HAP=FOXdayoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
みたいなの
この話をしているのです。一般的なWebアプリなどどうでもいいし、
暗号を解読するのが難しいのはアタリマエのことです。なぜそんなゴミのような知識で
でしゃばってきたのでしょうか。しかも論破されています。ダサいと思いますよ。
>>290 それを論破といえるのは頭がどうかしてるだろ
嘘というならその根拠を示せ
嘘であることを示すなら反証をひとつ上げるだけでいいんだから
292 :
デフォルトの名無しさん :2013/07/21(日) 14:06:57.30
293 :
デフォルトの名無しさん :2013/07/21(日) 14:10:39.64
>>290 >270が半端な知識ででたらめ教えて申し訳ありませんでした。
今後こんな事をしないようにきつく申し付けておきますのでお帰り願えますでしょうか。
ボーヤ帰った?
295 :
デフォルトの名無しさん :2013/07/21(日) 14:15:47.56
>>291 これです。
82: 動け動けウゴウゴ2ちゃんねる [sage] 2011/05/09(月) 15:27:04.88 ID:1LC60r510
忍法帖(2chCookie)には【お名前】【レベル数】【他ごにょごにょ】が暗号化されている
忍者DB(ninja.2c.net)には【お名前】【無事or破門フラグ】【他ごにょごにょ】が保管されている
水遁は水遁対象レスに記録されている投稿者の忍者の【お名前】を
忍者DBに登録されている【お名前】リストを元に照会し発見次第その【お名前】に「破門」フラグを立てる
【粛々と】忍法帖巻物質問スレ★12【相談室】
http://archive.2ch-ranking.net/operate/1304824974.html あと、クッキーに情報を保存するほうが合理的だからです。
クッキーごとにサーバーに情報を保存するような仕組みにすると、
ユーザーがクッキー作るごとにサーバーの情報は増えていき、いつまで保存していいのか
わかりません。常識的に判断するならクッキーに情報があると考えるべきではないでしょうか。
しかし、これは可能性が高いという話でしかありません。ですので、クッキーにはIDだけという
話の根拠を聞いています。私はその両方を比べて判断しようと思っています。教えてください。
296 :
デフォルトの名無しさん :2013/07/21(日) 14:16:25.46
>>293 嫌です、帰りません。本人を出してください。
297 :
デフォルトの名無しさん :2013/07/21(日) 14:17:28.87
ロンパールームに帰りなよボーヤ
298 :
デフォルトの名無しさん :2013/07/21(日) 14:18:34.21
>>297 ボーヤに論破された老害は素直に引っ込んでもらえないでしょうか。はい論破。
299 :
デフォルトの名無しさん :2013/07/21(日) 14:19:39.01
>>270 です。バカなのにボーヤをからかってしまいました。
全部クッキーにあるのでソーメーな頭脳で頑張ってレベル上げてください。カシコ
301 :
デフォルトの名無しさん :2013/07/21(日) 14:26:43.96
>>300 それは詭弁ですよね。IDとレベルは別のものであると言われています。
270+4 :デフォルトの名無しさん [↓] :2013/07/21(日) 11:36:13.05
>>269 クッキーにはIDだけあって
IDに対応する忍法帖レベルはサーバーで管理してる
誰かからレベルの高いクッキー貰えば使える
HAP=FOXdayoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
みたいなの
302 :
デフォルトの名無しさん :2013/07/21(日) 14:27:17.79
>>301 勝手な解釈すぎるだろ
とりあえずその質問だか恥の上塗りだかを続ける間はコテをつけてくれ
304 :
デフォルトの名無しさん :2013/07/21(日) 14:32:50.13
で、今度ボーヤは何を知りたいんだ?
306 :
デフォルトの名無しさん :2013/07/21(日) 14:40:35.61
>>305 ボーヤに論破される頭の悪い老害は引っ込んでてくれないかな、うざいだけだから。はい論破。
証拠は無いけど気に入らないから嘘に違いない これが論破だ!
308 :
デフォルトの名無しさん :2013/07/21(日) 15:16:41.56
>>307 あるあるw
・・・おっととマ板でやるべきだな、こりゃ
夏だなあって思った奴がどれだけ居るかな
310 :
デフォルトの名無しさん :2013/07/21(日) 15:33:01.12
312 :
デフォルトの名無しさん :2013/07/21(日) 16:05:53.83
313 :
デフォルトの名無しさん :2013/07/21(日) 16:15:42.90
> 忍法帖(2chCookie)には【お名前】【レベル数】【他ごにょごにょ】が暗号化されている 全部クッキーにあるじゃないですかあああああああ はい、ロンパース
以前ニュース速報を見ていたけど、あるときから忍法帖とかスイトンがどうとかってカキコミを 見るようになって、しかも知っていて当然のように語られているのな。 なんでこの連中はこんなこと知ってるんだって思ったわ。
忍法帖のせいで荒らしとか簡単に出来なくなったわ。 2ちゃんねるって荒らされたくないけど、中傷は放置する最低の メディアだよな。誰が運営してるかも不透明で本当に不気味。 忍法帖のせいで本当に2chがつまらなくなった。 昔はコピペ荒らしも大量にやってたんだけど出来なくなった。
ポインタのメリットが分からん ポインタ使うとメモリ喰らうのに何で使うの? アドレスと要素を分けて格納ってやっかいじゃないですか?
おしゃれだから使われてるだけ
アドレスを参照してから要素に参照してるから 二度手間なんだよなw 最初から変数の値で参照すればいいだけ ポインタ考えた奴はおしゃれ好きな奴
ポインタなんか使わないでぜんぶ参照にすればよかったのに。
オサレに命かけてますから
ポインタ使うとメモリ喰らう?
c++ の参照も結局はポインタだしねえ‥‥
ただその意見面白そうだからもう少し詳しく説明してよ
>>316
>>321 大抵省メモリになるが、ポインタは最適化の妨げになる
最適化の妨げにならないrestrictポインタを使う事をお勧めする
>>323 どんなときに restrict 修飾子をつければいいの?
restrict のついたポインタが指すオブジェクトは、他のいかなるポインタも指すことがない、という意味であればいいの?
関数の引数のときだけに使うものなの?
ポインタは不利にはならん。実際、容量は食うが無視出来るほどでメリットが多い。 ポインタと整数型変数の容量はほぼ一緒。 ポインタがいけなければ、一切変数を使うなと一緒。
空間的なコストより速度が問題
>>324 http://seclan.dll.jp/c99d/c99d07.htm ここの7.6当たりを参照
ポインタのエイリアス問題でぐぐってもよい
要するにポインタを介した変数のアクセスは、他のポインタによって知らない間に
書き換えられてしまう危険性があるために、使う前にいちいちロードし直す手間が
かかり、それが最適化の妨げになっている
restrictはこのエイリアス問題が存在しない事をコンパイラに伝えるので、他の
ポインタによって書き換えられる事がないのを前提にコンパイルするのでFORTRAN
と同等の効率が出るし、マルチスレッドでも役立つ事が多い
ただし複数のポインタの参照範囲が重なるとたちまちバグるので、それはユーザーの
責任になる
>>327 ありがとうございます。ユーザーの責任で指定しなければならないんですね。
>>327 それ最適化阻害の原因にはならないよ
オーバーラップ領域のメモリ転送、メモリ演算の保証は昔からない
オーバーラップ領域のメモリ転送はmemcpyじゃなくてmemmoveを使う
言いたいことは
メモリ喰うじゃなくて、コードサイズが肥大化する
の間違いじゃ
Cソース上で動作追いかけるんじゃなくて、どんなコード履いてるか確認しないと
>>329 > Cソース上で動作追いかけるんじゃなくて、どんなコード履いてるか確認しないと
restrict の有無でどう変わるかやってみなよ...
extern const HogeHoge TestData[] = { { 3, 100, 200, 300 }, { 2, 400, 500 }, { 5, 600, 700, 800, 900, 1000 }, { 1, 1100 }, }; こんな可変長構造体 HogeHoge って定義する方法ないでしょうか?
ない。
ですよねー いろんなサイトで調べて出来なさそうとは思ってたんですが ありがとうございました (なんか美しく可変長のデーター列扱う方法はないものか……)
>>332 いわゆる可変長には出来ないが、上限があるなら
構造体メンバを上限で定義すれば、
その初期化式そのままで使える
100, 200, 300 を格納する固定長の配列を用意して 構造体の各行では、要素数と使用先頭位置とを管理したらどうかな?
可変長な構造体を扱う方法は普通にあるのだが、 extern const HogeHoge* TestData[]; これじゃダメな理由が意味不明だから答えようがない。
>>332 ではないけど、
>>337 こうですか?
const HogeHoge Record[] = {
{ 3, 100, 200, 300 },
{ 2, 400, 500 },
{ 5, 600, 700, 800, 900, 1000 },
{ 1, 1100 },
};
const HogeHoge *TestData[] = {
&Record[0], &Record[1], &Record[2],
};
>>335 まじっすか!?
typedef struct _HogeHoge {
int data[10];
} HogeHoge;
こんな風に定義しておけば初期化時にデーター10個並べなくてもいいんですか?
>>335 今試しにコード書いてみたらエラーなく目的のデーター作れました!
メンバって全部書く必要なかったんですね
これで今作ってるプログラムが美しくなります
ありがとうありがとうありがとう
>>331 void sumup(int n, int *array1, int *array2)
{
/*assert((n % 4)== 0);*/
for(int i = 0; i < n; i++) array1[i] += array2[i];
}
void sumup(int n, int * restrict array1, int * restrict array2)
{
/*assert((n % 4)== 0);*/
for(int i = 0; i < n; i++) array1[i] += array2[i];
}
gcc -std=c99 -O2 -S
で比べてみたけど、変わらない
intのポインタだから4の倍数のアドレスじゃないと
実行時に遅くなることがあるよってことで
コンパイラの最適化の問題になるのかどうかは微妙
>>341 そういう転送物はどっちみち利用前にロードし直すので、最適化の妨げが現れない
そうではなくて、一度最初にロードして、ずっとその値をレジスタに入れて使いまわす
ような最適化が出来なくなると言っているわけで
そういうプログラムを書かないと
知ったかする素人って見苦しい。gcc -O2 -Sでaとbのコード比べてみろ。 アセンブリくらい読めるんだろ。 long aaa(long); long a(long *x) { return aaa(*x) * *x; } long b(long * restrict x) { return aaa(*x) * *x; }
というか-O3にしたらaaa()がa()やb()の中に取り込まれててワロタ 差が出るプログラムはこういうバグるプログラムの方が例としてはいいと思うが void func1(int *p1, int *p2) { *p1 = 10; *p2 = 20; printf("*p1 = %d\n", *p1); } void func2(int *restrict p1, int *restrict p2) { *p1 = 10; *p2 = 20; printf("*p1 = %d\n", *p1); } int main() { int i; func1(&i, &i); func2(&i, &i); }
>>345 まあそれも rbx に入れた値を使いまわすか、もう一度ロードし直しているかと
いう差が出てるんだけどな
348 :
デフォルトの名無しさん :2013/07/22(月) 15:48:31.02
http://ideone.com/HqOdWV 挿入ソートのプログラム作ったのですが、データの数が30万超えるとコンパイルできても実行するとプログラム終了になってしまいます。1千万までのデータ数に対応させたいので、どのようにしたらいいか教えて下さい!
>>348 こういうの多いなあ
> int i,A[N],b,c;
スタックオーバーフローだよ
static付けるかmallocでヒープ領域に確保してみな
350 :
デフォルトの名無しさん :2013/07/22(月) 15:53:13.24
>>349 static?を習ってないので出来たらプログラムの例を教えてもらえるとありがたいです。
>>345 ああそうか、俺は-O3でコンパイルしてしまったから差が出なかったのか
aaa()がa()やb()に取り込まれてしまうとcallが無くなってしまうので
事情が違ってくる
-O2だと同じ結果になったわ
>>350 int i, b,c;
static int A[N];
これでAはスタック領域ではなく静的領域に確保される
353 :
デフォルトの名無しさん :2013/07/22(月) 15:58:23.30
354 :
デフォルトの名無しさん :2013/07/22(月) 16:03:16.89
>>346 >>351 aaaは宣言だけで定義してないんだからインライン展開できるわけねーだろ。ボンクラ
restrict君の言いたいことがよーわからんな
memcpyの高速化手法とかを知らない考えたことも無いお人が「魔法の呪文restrict」と覚えててそのまま吹いちゃったんでしょ
>>355 自分でaaa()書いたんだよ
お前本当にアホだな
バカは言われたとおりにやってりゃ良いんだよ。
memcpyよりstrcpyのほうが効率的だよ memcpyみたいなメモリを莫大に使う関数使っちゃだめ
memcpyがいいだろ。 strは確実にサイズ測定するルーチンを含む。
strcpyかstrcmpのほうがいいね コピーするだけなら確実にstrcpyのほうがいい 何故ならstrcpyは標準Cの関数だからね 後からできた関数より信頼できる
memmove()があればmemcpy()いらないよな。 使い分けなんて必要なくて全部memmove()でいいわ。
memmoveは無駄がある
気にすんな
strcpyには無駄がない それ故に高速
strcpy以外使う奴wwww
ったく誰だよキチガイのトラウマスイッチ押したヤツは
strcpyとmemcpyの違いもわからん人が連投レス流し?
370 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/22(月) 19:09:45.59
ウソつき
memcpy→memがメモリっぽいから機械語よりっぽくてかっけーwww
memcpyは仕事で使う事ほとんどないな memcpy使ってるプログラマは皆無と言えよう
strcpyは\0で止まる。 バイナリ文字列はダメだ。
memcpyはランタイムエラー出やすいからな 環境によっちゃコンパイルすら行かない事もある
strcpyはコピーする側の文字の方が短いと コピーされる配列の長さを変えてくれるのが良い いちいち\0を入れるのは面倒だからstrcpyは重宝している
原因が分らないエラーの原因は9割方memcpy 本当に厄介
strcpyがあるのに何故memcpy作ったか分らんわ forがあるのにwhile作った理由と同じくらいね
memcpyなしだとビットマップとか扱うときどーすんの? デコーダが渡してきたメモリブロックをこちらのバッファに書き込むとき、 forで1byteずつコピーするのか?
380 :
デフォルトの名無しさん :2013/07/22(月) 20:03:39.86
あsdふぁ
そんなにmemcpy使いたいならmemcpyしか無い言語にすればいい
382 :
デフォルトの名無しさん :2013/07/22(月) 20:18:30.04
void memcpy(void *d, const void *s, size_t c) { char *a = (char *)d; const char *b = (const char *)s; while (c--) *a++ = *b++; }
383 :
デフォルトの名無しさん :2013/07/22(月) 20:28:19.25
char *strcpy(char *d, const char *s) { char *p = d; while (*s) *p++ = *s++; *p = *s; return d; }
Duff's device - Wikipedia Duff's Device(ダフズデバイス)とは、連続的コピーの最適化実装の1つで、アセンブリ言語のループ展開において用いられている手法を(C言語で)使ったものである。 C言語のswitch-case文におけるフォールスルーを利用した手法である。 しかし、このバージョンのコードはそれほど有用ではない。 というのも標準Cライブラリには十分に最適化されたメモリコピー関数 (memcpy) が用意されているからである。 そちらのコードの方がアーキテクチャ依存の最適化を施していて、ずっと高速に動作する[3][4]。
お前らなんでbcopy使わないの?もしかしてSysV派?
領域外アクセスで確実に落ちる仕様にして欲しい
>>382 x86なら16バイトアライメントにしとけばSSE2使って高速になるのに
そんな古臭い実装誰が使うんだよ?
フルHDだと8bitYUV4:2:0でも、一枚あたり3MB弱コピーするんだぞ?
strcpyこそsprintfあれば無用だよ
どうせせいぜい数KB程度なんだろ?
ユーザーの環境を決め打ちで選べるなんて羨ましい
uClibcでmemcpyの実装見たがCPUごとにアセンブラになってるぞ。 他のコンパイラでもそうだろ。 素直に使っとけ。
strcpy使えよ
memcpyは使う機会がまず無いからな
memcpyは脆弱性がなぁ...
memcpy使わざる
脆弱性ってのは関数にあるんじゃなくて 作った人のミスで脆弱性になるの ベボ、ヘタレはミスを自分以外になすりつけようとする傾向があるのかもね
っていうかどこらへんが脆弱性なんだろ。 コピーのサイズの間違えるとか?
そう言えば上の方で「スタックオーバーフロー」で落ちるってレスだけど、 スタック領域を広げるという別の手もある だけど基本的にはローカル変数はあまり大きな物を確保しないのがいいよね malloc() / free() はそれを補うための物だけど、あまりにもエラーが多すぎるため (メモリリークなど)、C++でほとんど必然的にコンストラクタ/デストラクタが入れられた それでもエラーが無くならないのでスマポへと
>>397 >malloc() / free() はそれを補うための物だけど、あまりにもエラーが多すぎるため
>(メモリリークなど)、
これと
> C++でほとんど必然的にコンストラクタ/デストラクタが入れられた
これ全然関係ない。ヴァカは引きこもってりゃ良いのに。
そもそも「エラー」の使い方がおかしい
>>398 かわいそうにmalloc()で痛い目に遭った事もないんだな
>>398 コンストラクタ/デストラクタの存在により malloc()/free() または new/delete の処理がずいぶんと楽になったのは周知の事実なんだが?
>>399 こういう「エラー」の使い方はD&Eの禿の使い方に倣ったものだ
お前禿に文句言えるほど偉いのか?
>>400-401 アホ
コンストラクタ/デストラクタはC++以前から存在するOOPの基本概念だ
malloc/freeでのエラーが多いために導入されたものじゃない
ヴァカは引きこもってろ
俺はfreeしか使わねぇ
>>403 D&EのP116〜117を読め
どこにもOOPなどとは書いてない
問題です コンストラクタが最初に実装された言語の名前を答えてみよう
D&E手元に無いけど、malloc/freeでミスるカスのためのものじゃなくて そういうカスのサポートにも便利に使えるってだけだろう カスが本末転倒な主張してるように見える
デストラクタがオブジェクト指向の基本概念って、ガベコレのある言語は いつデストラクタ(相当の機能)が呼ばれるかわからないからC++みたいに リソースの解放には使えないな。
>>408 D&Eも持ってないカスがつべこべしゃべんな
>>409 俺もそれ書こうと思ったけどやめたけど、そうだよな
C#はusingとかGC.Collect()を呼び出さないとすぐに解放する事も困難
>>409 別にデストラクト時に解放されれば問題ないのでは
>>411 リソースってのはファイルとかその他一つしか使えないデバイスも含んでるんだよ
ファイルは閉じないと次にそのファイルに読み書きできないだろ
一つしかないデバイスは行儀よく閉じないとデッドロックの原因になる
こういう点がGC言語の弱点とされている
ちゃんと回避策もあるけど読んでるのか?
デストラクト時っていつ?って聞かれれば、 「一生来ないかもしれない」ってのがGC有りのOOP言語だからなぁ。
ここ、C言語スレなんですけど
>>409-410 C++より後に出来たガベコレ有り言語の話が、C++と何の関係があるんだ?
C++のコンストラクタ/デストラクタはオブジェクト指向の機能ですよん
417 :
デフォルトの名無しさん :2013/07/23(火) 14:44:27.06
とりあえずハゲ信者はC++スレに帰れよ
>>417-418 こっちはかなり具体的な主張をしてるのに
それに対して誤りを指摘するわけでもなく涙目でレッテル貼りか
>>420 C++がガベコレ有り言語より先って・・・
>>420 「C++のデストラクタはオブジェクト指向の基本概念」っていうから、C++のデストラクタのような
機能のない言語の例を上げたら
「それはC++と関係ない。デストラクタはオブジェクト指向の基本機能だ」って繰り返すだけだろ?
話の通じないバカにしか見えない。
>>422 お前は物事の順序を理解してない
C++がオブジェクト指向を定義したんだよ
つまり後から出てきてオブジェクト指向を名乗る言語がどんな仕様を採用していようが、C++が定義したオブジェクト指向の定義とは無関係
馬鹿って100%言い負けてるのに絶対にそれを認めようとしないよな 外から見ていたら滑稽なアホにしか見えないんだけど
夏かよ
夏じゃないか
ホント夏だなぁ
海行ったか?
432 :
デフォルトの名無しさん :2013/07/23(火) 20:18:24.17
>>424 Smalltalkがこの話題にどういう関係があるのかわからない。
君はどこから勘違いをしてるんだ?
>>432 Simulaはオブジェクト指向を「定義」したわけじゃないから。Simulaの論文にオブジェクトという単語は登場しないよ
あくまで言語機能としてクラスやコンストラクタを備えてだけであって、
その後にオブジェクト指向の必要条件を定義したのはストラウストラップ
だめだこりゃ
436 :
デフォルトの名無しさん :2013/07/24(水) 08:32:25.85
>>433 > Simulaの論文にオブジェクトという単語は登場しないよ
著者名、タイトル、発行年は?
まとめ バカ「C++のデストラクタはオブジェクト指向の基本概念だ!」 ↓ 「C++のデストラクタのような機能のないオブジェクト指向言語もあるけど」 ↓ バカ「オブジェクト指向はC++が規定した!C++以外の言語は関係ない」 ↓ 「C++以前からオブジェクト指向言語はあるけど。SmalltalkとかSimulaとか」 ↓ バカ「Smalltalkは関係ない。君は何を勘違いしてるんだ。 Simulaの論文にオブジェクトとう単語は登場しない。 オブジェクト指向を定義したのはビョーン スッポスッポだ!」
Simula …世界最初のオブジェクト指向”の機能を備えた”言語 クラスや継承、コンストラクタやガベージコレクションの機能を搭載していた。 登場時点ではオブジェクト指向という概念は存在せず、 Simulaの機能に着想を得たアラン・ケイとストラウストラップが、 それぞれ”異なる”オブジェクト指向の概念を発表した アラン・ケイは「メッセージ指向」のオブジェクト指向を考えてSmalltalkを開発し、 ストラウストラップは「クラス指向」のオブジェクト指向を考えてC++を開発した。 簡単に違いを説明すると、メッセージ指向で不可欠なのはメッセージング機能であり、クラスは不要。 逆にクラス指向ではクラスが必須。 つまり両者のオブジェクト指向は必要とする技術も考えも全く異なったものであり、 今回の話題である「C++のオブジェクト指向」という文脈において、Smalltalkを比較対象に出すのは全く意味が通らない。
439 :
デフォルトの名無しさん :2013/07/24(水) 10:20:19.32
>>438 お前だけはC++のオブジェクト指向の話をしてるんだと思ってる。
他の人はオブジェクト指向の話をしてる。そのなかでC++がどう位置づけられるかという話だ。
お前だけはC++のオブジェクト指向の話をしてるんだと思ってる。
440 :
デフォルトの名無しさん :2013/07/24(水) 10:23:22.80
>>438 // みんな
オブジェクト指向
{
Simula
Smalltalk
// お前
C++
{
オブジェクト指向
}
}
俺だけはここがC言語のスレだと思っている
442 :
デフォルトの名無しさん :2013/07/24(水) 10:26:23.13
Simulaの論文まだー?
443 :
デフォルトの名無しさん :2013/07/24(水) 10:26:59.49
>>441 ここがなんのスレかは関係ない。詭弁使ってんじゃねえぞブタ野郎。
444 :
デフォルトの名無しさん :2013/07/24(水) 10:28:27.81
>>440 後付で「俺の言ってるのはC++のオブジェクト指向だ」って言ってるだけでしょ。
最初はC++の機能とオブジェクト指向一般の区別がついてなかっただけ。
>>439-440 > 他の人はオブジェクト指向の話をしてる
例えばJavaScriptという言語は「オブジェクト指向」ではあるけど、
クラスが存在しないプロトタイプベースのオブジェクト指向言語だ。
対象を限定せず単に「オブジェクト指向」と言ったらそういうものも含むわけだが、
そんな広すぎる話題について何を話し合うつもりなの?
教えてくれよ。
俺はC++が提唱したクラスベースのオブジェクト指向に関する話題だと思ってたけど、
あんたらの定義を見る限りメッセージ指向もプロトタイプベースも含むらしいからな。
447 :
デフォルトの名無しさん :2013/07/24(水) 10:38:44.93
>>446 コンストラクタ・デストラクタがオブジェクト指向の基本と呼べるものなのかについて。
448 :
デフォルトの名無しさん :2013/07/24(水) 10:41:31.93
>>444 Wikipediaを論文と呼ぶのか。お前は
>>447 順序が逆よ
オブジェクト指向においてインスタンスを生成するための仕組みをコンストラクタと呼んでいるだけ
インスタンスを破棄するための仕組みをデストラクタと呼んでいるだけ
例えばC言語でオブジェクト指向プログラミングをしようと思ったら、
mallocとfreeでコンストラクタ/デストラクタの機能を果たす
構造体でクラスの代わりをする
そういうものだ
わかったかな?
wikiなんてある程度誰でも編集できるから信憑性は薄いぞ 知識として使うのは間違ってもいい日常会話程度にしとけ
451 :
デフォルトの名無しさん :2013/07/24(水) 10:45:10.56
>>448 目次も概要も歴史も参考文献もある。立派な論文だろ。
>>451 アホだなこいつ
日本語訳がなきゃソースとは言わねーよ
>>446 みたいに知識ばかり頭でっかちでプログラミング能力が低い新人って多いよな
口だけは達者だからすぐ反論してきてウザい
454 :
デフォルトの名無しさん :2013/07/24(水) 10:47:21.23
このヴァカ、本気でWikipediaを論文と言ってるようだ。晒しあげ
wikipediaの使い方を知らないアホが集うスレ
456 :
デフォルトの名無しさん :2013/07/24(水) 10:48:20.79
>>450 お前の発言よりよほどましだろ。お前はシムラのことどれだけ知ってるわけ?
集団的知性を馬鹿にしてはいけないよ。
>>446 典型的屁理屈乙
誰もJavascriptを含めて話なんてしてねーよ
smalltalkはクラスも含んでるからほとんどC++に近い言語仕様だろ
C++のデストラクタの機能はオブジェクト指向の基本概念って発言は間違いだったというのは理解したみたいだから許してやるか。
459 :
デフォルトの名無しさん :2013/07/24(水) 10:49:19.77
>>452 アホはお前だハゲ。Wikipediaは論文だ。
460 :
デフォルトの名無しさん :2013/07/24(水) 10:50:04.73
逃亡にかかりました。
461 :
デフォルトの名無しさん :2013/07/24(水) 10:50:42.01
462 :
デフォルトの名無しさん :2013/07/24(水) 10:55:41.29
>>449 デストラクタがないオブジェクト指向の言語もあるよね。
コンストラクタ・デストラクタはオブジェクト指向の基本と呼べるものなんでしょうかってこと。
463 :
デフォルトの名無しさん :2013/07/24(水) 10:55:46.79
多分、レポート作成教育も受けていない低学歴なんだろうな。
>>433 > What Is An Object?
>
> There are many definitions of an object, such as found in [Booch 91, p77]:
> "An object has state, behavior, and identity; the structure and behavior of
> similar objects are defined in their common class; the terms instance and
> object are interchangeable". This is a "classical languages" definition, as
> defined in [Coplien 92, p280], where "classes play a central role in the
> object model", since they do not in prototyping/delegation languages.
> "The term object was first formally applied in the Simula language, and
> objects typically existed in Simula programs to simulate some aspect of
> reality" [Booch 91, p77].
Object-Orientation FAQ
http://www.ipipan.gda.pl/~marek/objects/faq/oo-faq-S-1.1.html#S-1.1
http://www.ipipan.gda.pl/~marek/objects/faq/oo-faq-S-1.22.html#S-1.22 > Where Did Object-Orientation Come From?
>
> Simula was the first object-oriented language providing objects, classes,
> inheritance, and dynamic typing in 1967 (in addition to its Algol-60 subset).
> It was intended as a conveyance of object-oriented design. Simula 1 was a
> simulation language, and the later general-purpose language Simula 67 is now
> referred to as simply Simula. Smalltalk was the next major contributor
> including classes, inheritance, a high-powered graphical environment and a
> powerful dynamic typing mechanism (although these existed to some extent in
> Simula). Self is somewhat of a Smalltalk-based next generation language, as is
> BETA a followup to Simula (by its original designers).
466 :
デフォルトの名無しさん :2013/07/24(水) 11:01:49.99
>>463 Wikipediaより立派な文章書けない分際でガタガタ抜かすんじゃないよ。
467 :
446 :2013/07/24(水) 11:06:35.80
>>464-465 おいおい…
Simulaを後からオブジェクト指向言語と呼んでるだけのソースだろそれは
Simula登場当初の論文に「我はオブジェクト指向言語である」という記述はないよ…
でも読み慣れない英語の文章を必死に検索した努力は褒めてやるからもう休め
お前の勝ちでいいから
468 :
デフォルトの名無しさん :2013/07/24(水) 11:07:21.69
> アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 どんなに恥ずかしい発言か理解できない低学歴が墓穴をどんどん深くしていく。
バカの発言の変遷 「C++のデストラクタはOOの基本概念だ」 ↓「C++のデストラクタのような機能のないOOPもあるよ」とうツッコミを受けて 「OOはC++が規定した。C++以降の言語は関係ない」 ↓「C++以前からOOPはあるよ」とうツッコミを受けて 「SimulaはOOでないしSmalltalkはこの話に関係ない」 ↓「SimulaもSmalltalkもOOPだ」とうツッコミを受けて 「ふつーオブジェクト指向って言ったらC++の話にきまってるだろ。 そこまで話に含めねーよ」
470 :
デフォルトの名無しさん :2013/07/24(水) 11:19:09.33
>>468 Wikipediaより立派な論文書いてから言えよw お前には逆立ちしたって無理だろ。
シムラについて語ってみろよ。できないんだったら黙ってろ。
Wikipediaは誰もが編集に参加できる百科事典のようなもの 百科事典を論文と呼ぶかどうかは疑問
472 :
デフォルトの名無しさん :2013/07/24(水) 11:30:34.08
> アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 どんなに恥ずかしい発言か理解できない低学歴が墓穴をどんどん深くしていく。
474 :
デフォルトの名無しさん :2013/07/24(水) 11:34:59.74
>>472 論破されたことを繰り返すことしかできなくなったのか。
壊れたテープレコーダと名付けてしんぜよう。
475 :
デフォルトの名無しさん :2013/07/24(水) 11:38:08.09
> アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 どんなに恥ずかしい発言か理解できない低学歴が墓穴をどんどん深くしていく。
476 :
デフォルトの名無しさん :2013/07/24(水) 11:39:34.03
ほらねw
477 :
デフォルトの名無しさん :2013/07/24(水) 11:40:39.32
> アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 > アホはお前だハゲ。Wikipediaは論文だ。 どんなに恥ずかしい発言か理解できない低学歴が墓穴をどんどん深くしていく。
>>467 『Booch 91』と『Coplien 92』読んでから話して。
禿ストラウストラップが「オブジェクト指向を自身が始めて定義した」という 論文なり文章なりのポインタ示せば話は終わりなのに。
Wikipediaには書いてないから示せない。
アンサイクロペディアにも無い?
ここ、C言語スレなんだけど。
このスレって罵倒合戦が無かったことないよね? 仲良くしろよ
だってファビョってる奴がD&Eも持ってないって言うんだから話にならねーよ
485 :
446 :2013/07/24(水) 13:37:25.88
>>485 それのどこに「ストラウストラップがオブジェクト指向を初めて定義した」と書かれてるんだ?
>>485 いつまでこのスレを荒らすつもりなんだよ?
ブログでやってくれよ。
488 :
446 :2013/07/24(水) 13:58:41.69
>>486 ストラウストラップはあくまでオブジェクト指向の一つの定義を提唱しただけだっていう話の流れすら追いきれてないのか
この定義が爆発的に流行ったから他の定義を押しのけて現在まで居座ってるだけだよ…w
アスペって本当にタチが悪いな もう皆うんざりしてんのに
490 :
446 :2013/07/24(水) 14:02:53.11
Simulaっていう革新的な言語が登場した それにヒントを得た開発者がC++やSmalltalkを作った C++の開発者は自身のオブジェクト指向の定義として「カプセル化、継承、多相性」を主張した この主張はみなさん御存知の通り今日まで爆発的に流行っており、オブジェクト指向=カプセル化、継承、多相性 と考える人も多いくらいに流行ってます つまりC++は今日流行っているオブジェクト指向の元祖とも言える言語であり C++が正しいのです。 わかりましたか?
全然わかりません
だいたい「カプセル化、継承、多相性」を主張したのはC++が最初じゃないだろ それはOOP言語の特徴とも言える物で他のOOP言語も当然持っている 最も成功したOOP言語の一つとしてC++を挙げるのならまだわかるが
ちょっともう何を主張したいのかよくわからんことになってるが、 「C++は今日流行っているオブジェクト指向の元祖」 が正しいとして、それをベースにお前は何を主張したいの?
494 :
446 :2013/07/24(水) 14:10:03.75
つーかC++はSTLを入れた辺りから「ジェネリック・プログラミング」の流れも作ったんだが それまでSTLのような物はなかった これは断言してもいいし、D&Eにも書いてある Adaも総称プログラミングは出来たが、templateのような柔軟性はなかった C#やJava、他のいくつかの言語がこの新しい潮流に乗った こっちの方には着目しないのかい?www
>>494 Wikipediaなんか参考にしてる時点で終わっトルよ
どこの誰が書いた物かも分からないのに
497 :
446 :2013/07/24(水) 14:11:26.04
>>493 C++がオブジェクト指向の元祖だから、他の言語を引き合いに出して「C++の○○という機能はオブジェクト指向に非ず」という主張をするなということ
C++ = オブジェクト指向
他の言語 ⊆ オブジェクト指向
>>497 頭おかしい
街に行ってそれを大声で叫んで賛同者を1000人集めたら認めてやる
イスラム原理主義とかもこういう感じなんだろうな 思想が強すぎて修正がきかない、他者とのコミュニケーションが取れない
>>497 > 「C++の○○という機能はオブジェクト指向に非ず」という主張
具体的に、どのレスの事を言ってるんだ?
501 :
446 :2013/07/24(水) 14:23:42.36
>>501 レス番を示せないということか?
だとしたら、お前の思い込みじゃないのか?
なにももってオブジェクト指向とするかって議論はあって、いろんな 意見があるってのは知ってるけど「C++のデストラクタがOOPの基本概念」って 話は見たことないな。 どっかの論文に書いてあるのかな。
結局Cとの互換性なけりゃ誰も使わんよーな言語がエラソーに
>>501 そもそもこのスレはC言語スレなんですが
「C++のデストラクタがOOPの基本概念」ということを主張したいのだとしたら、 「デストラクタの無い言語はOOPLではない」あるいは「完全なOOPLとは言えない」 ということになるが、それでよろしいか?
デストラクタって実装詳細じゃないの?
いつまでスレ違いの話を続けるんだよ
>>510 「C++のデストラクタがOOPの基本概念」ということは、C++のデストラクタがOOPLの必要条件ということだろ。
必要条件を備えていない言語はOOPLではないということになる。
どこが間違い?
512 :
446 :2013/07/24(水) 15:22:50.58
そろそろ生徒の採点で忙しいからバイバイするよ 午後の講義も残ってるし
なんだ、素人だったのか
チャットじゃないんでいちいちそういう報告いらないです。
脳内生徒に脳内講義ですか。大変ですなぁ。
>>506 逆は必ずしも真ならず
対偶なら成り立つ
>>516 「C++のデストラクタがOOPの基本概念」は
「デストラクタはOOPLの必要条件である」と言い換えられる。
命題にすると「OOPLであればデストラクタを備えている」。
対偶は「デストラクタを備えてなければOOPLではない」。
なお逆は「デストラクタを備えていればOOPLである」。
低学歴は煽り体制が低いな。 必死でググった論理学だが身についていないので、無知を証明する結果になる。 まわり道に思えても基礎から体系だてて学ぶ事の重要性が良くわかる。
520 :
デフォルトの名無しさん :2013/07/24(水) 16:52:42.44
>>518 だからその「C++のデストラクタがOOPの基本概念」というのがまだ証明されて
ないんだから、その対偶の「デストラクタはOOPLの必要条件である」も成り立たないわけ
低学歴には分からないよな
いや対偶じゃなかった 必要十分条件のうちの必要条件だった
>>521 だから、このスレで何をやりたいのかわからないが、それがもし
「C++のデストラクタがOOPの基本概念」
ということを主張したいのだとしたら、それは
「デストラクタを備えてなければOOPLではない」
と主張するのと同じ事になるが、それでいいのかと質問しているのだが。
524 :
デフォルトの名無しさん :2013/07/24(水) 18:35:00.19
C言語では、ループ文にラベル付けして指定のループを抜けるcontinue文って出来ないんですかね? for(){ for(){ //ここでコンティニューして、外側のfor文の先頭にいきたいんですけど } }
出来ない gotoでいいじゃ〜〜〜ん
for文の中でwhile文つかったらエラーが出るんですけど何故ですか? for文の中はfor文しか使ったらダメとか?
527 :
デフォルトの名無しさん :2013/07/24(水) 18:40:12.10
わかりました ありがとうございます goto で戻ると更新文は作動しませんよね?
C++に固執するのは低学歴である 対偶 低学歴でないならC++にこだわらない
>>526 そんなんで他人に分かると思ってるくらい頭悪いからじゃね?
>>526 んなわけあるか
コード出せ
恐らく一瞬で答えが出る
>>531 for(i= ;i<=20; i++)
while(j=0; j<=20; j++)
{
if(j=kof(j))
if(j==1)break;
}
}
>>532 括弧の対応が合っているか確認しろ
そのソースを見る限り合ってないが、最初のforの前次第なので、断定はできない
つか、初心者は{}を省略しちゃいかん
>>535 なるほど、そこかw
そこは省略できんな
つか、前提がfor は動くのだったかと思い込んでたはわw
それ以外にも for() { int oppaimomimomi;; while(){oppaimomimomi=3;;;} } whileの方はkが無効化されます。 何故?入子の変数は無効化されますか?
>>528 「C++ に固執する人の集合は低学歴の集合に含まれる」
本当か?
C++に固執する人で高学歴の人はいないのか?
>>537 kどこだよwww
whileの()の中は条件分だけだからな。
while(a < 1) {/* do loop */}
>>520 「犬は動物である」は
「犬は動物であることの必要条件である」とは言い換える事はできない。
これなら低学歴のお前でもわかるかな。
>>540 「犬は動物であることの十分条件である」とはいいかえれますけどね
「C言語の入門者向け解説スレッド」だって事分かってやってる?
うん。 低学歴で自信満々の知ったかは、知識の乏しい初心者にとって害でしかないからね。 その場で叩き潰すべし。
>>542 だからなに?
お前が低学歴で論理学を全く知らないと言う事は証明されたから
それ以上あがいても恥の上塗りするだけだぞ
ろんりがく!ろんりがく!って騒ぐ方がどーかとおもいますけどね
>>548 自己紹介しなくてもいいですよ(ニッコリ
あのー… ここはC言gグフッ
お前、ゴキブリ見つけたらその場で叩き潰すだろ。 処刑場で潰すとか悠長な事しないだろ。
554 :
デフォルトの名無しさん :2013/07/24(水) 21:35:58.81
うるさいゴミ
コンストラクタとかOOとかどうでもいいんですけど‥‥ここCのスレだし‥‥その話はもう終わったの?
556 :
デフォルトの名無しさん :2013/07/24(水) 21:42:28.76
0で埋めるところを'\0'で埋めたら0になるのか?sizeofで指定して。 memsetを使うときのです引数の2番目のついて。 結果的に表層が同じになるのか実質か? 構造体の要求されるメンバーの0を入れる領域の初期化が不必要か。
557 :
デフォルトの名無しさん :2013/07/24(水) 21:44:46.54
0で埋めるところを'\0'で埋めたら0になるのか?sizeofで指定して。 memsetを使うときのです引数の2番目のついて。 結果的に表層が同じになるのか実質か? 構造体の要求されるメンバーの0を入れる領域の初期化が不必要か。
>>556 \0 は単なる8進によるキャラクタ表現(ISO/IEC9899:1999 6.4.4.4)
プロトタイプがインクルードするヘッダにあるだろうから、memset() に関しては 0 と書こうが \0 と書こうが差異はないし、整数としての 0 だったら integral promotion でも問題なし
プロトタイプがかけない関数の引数にヌルポインタを渡すにだけ注意すればよい
たまにcharの0が\0に解釈されるときあるけど こういうエラーは防げないですかね? 0も\0も同じ1byteだからいっしょくたにされるのかな?
\0と文字0は、完全に異なるもの。 \0はバイナリで0だが、文字0はそうでない。
>>556 この文章でよく分かるな。
まあなんとなく分かるけど。
>>559 char a = 0;
char b = '\0';
if (a == b) <- true判定
たまに↑こうなることがあるって意味?
たまにじゃなくて常にこうなるんじゃないの。
>>562 これが別者とおもってるは相当な初心者。
どんなC/C++コンパイラであっても同じだろうし、正規表現でも\0はバイナリの0を表すだろう。
言語うんぬんというよりはアスキーコード表とかを一度眺めたほうがよくね '\0'でエラーな人は
メモリの許す限りの大きな数値を扱うのってどうやるんだ? 扱うってんだから四則演算はしたいよな。 考えたんだけど、char型配列作って変数に1桁ずつ入れていく方法しか思いつかん。 掛け算は総当たりみたいな感じだ。 128*47の場合 a[0]=8、a[1]=2、a[3]=1 b[0]=7、b[1]=4 計算結果 c[0]=a[0]*b[0]; c[1]=a[0]*b[1]; c[1]+=a[1]*b[0]; c[2]=a[1]*b[1]; c[2]+=a[2]*b[0]; c[3]=a[2]*b[1]; この後cの各桁をチェックしてc[N]>=10なら、 c[N+1]+=(c[N]/10); c[N]=c[N]%10; こんな感じか。 掛けるときは各桁とも1桁の整数だから、最大で9*9=81。 81ってことは64じゃ足りないから128が妥当だし、そうするとchar型が最適。
>>566 任意精度演算とか言われる分野の話で、
ぶっちゃけると配列に格納された巨大整数どうしの四則演算を考えることになる
GMPとかそれ専用のライブラリもある
最も単純なアルゴリズムは要するに筆算なので、
そんなに難しくない(除算はやや面倒)
こういう
>>566 明らかに算術ライブラリを使うべき用途を個人で開発したがる理由って何だろうね
アルゴリズムの練習ならもっとマシな題材がいくつもあるし、何がしたいのかわからん
何でも分かれると思うなよw お前が分からないことなんて世の中にはいっぱいあるんだ。
自由に使える任意精度演算ライブラリって何がある? gmpは感染するから却下
>>572 商用、無料、C、整数、非GPLなので生きてるの無いじゃん
>>573 つまり金(有料)か思想(GPL)がなければ任意性度演算のライブラリを作るメリットがないということだな
無料でライセンスも自由で作るには割が合わないということ
世の中の仕組みがわかってよかったな
GMPってLGPLじゃん。
リバースエンジニアリングされたくないんだろ
>>574 世の中にはバカには見えてない理由があるって事だな。
>>569 に言えよ
>>575 面倒臭え奴だな。スタティックリンクすりゃ感染するんだから一緒だよ。
>>577 商用でもないのにLGPLやGPLで困る状況ってのがわからない
フリーソフトだけどソースコードは開示したくないってどういう状況だよ
>>580 違う。せめてWikipediaくらいは読んでから出直せ
583 :
sage :2013/07/25(木) 13:00:35.30
外部のマシンのファイルを読み込む方法って何かある? アクセス制限でエラーになる… WNetAddConnection2()を使うとIDとPASSが必要だから他の方法を探してるんだが。
http使えば?
>>582 こっちだよ、バカ
ライブラリAに静的リンクしたプログラムBを頒布する場合、Bのソースコードまたはオブジェクトコードの頒布に制限があってはならない。(LGPLv2第6節a、LGPLv3第4節d0)
ソースコード公開が条件だったとしても、動的リンクであれば本体コードは必要ないだろ。 条件の詳細を確認したり商用利用したわけではないが。
587 :
デフォルトの名無しさん :2013/07/25(木) 14:03:24.86
見苦しいぞ。 スタティックリンクしたら感染する事を知らなかった、お前の負け。
>>587 商用なら有償ライブラリ使え
私用ならGPL使え
私用なのにコード盗まれちゃ困る?
贅沢言うなボケ
自前で作るのがめんどくなさそう
多倍長とか任意精度が必要なコードをいまどき外部ライブラリ無しでCで書くとか どれだけ無能なんだ
1ビット脳は世界が単純に割りきれて羨ましい
>>590 時間がありあまってるニートなら自前で用意するという発想に至りそう
間違っても社会人の発想ではないな
C言語の外部ライブラリってDXライブラリしか聞いたこと無いんですが 他にもあるんですか? JavaだとEclipse、3DJAVAとか他にも色々ありますけど。 というか外部ライブラリってリファレンスが無い事が多くて 使えないんですよね。リファレンス読むのが自慢な人って羨ましいです。
>>588 ライセンスフィーいくらだよ。
使えってるんだから、当然知った上での発言だろうな。
595 :
デフォルトの名無しさん :2013/07/25(木) 14:46:38.36
>>590 OpenSSLやputtyの作者は無能ですか、そうですか。
暗号関係のソフトは普通に自分で実装してるけど。
>>593 libpngとかWinsockとか
色々あるだろ無能
ソフトウェアに金出すのってアホらしくね? 1と0の組み合わせのアイディアに金出してるってだけでしょ? それが分かれば一瞬でコピーできるのに。 統合環境、描画ソフトに10万とか20万払ってる奴はどんだけ金持ちなん?
598 :
597 :2013/07/25(木) 15:07:58.54
友達で、グラフィックが良いソフトはCDの表面の光沢が普通のに比べて 格段にツヤがあるとかいっててワロタwwww いやそれはプレステの機械のほうで、CDは全部一緒だよwコードが違うだけww
>>597 > それが分かれば一瞬でコピーできるのに
科学の数式だって「わかれば一瞬でコピー」できるよね
発想に対する価値の否定は科学の否定と同義
つまり原始時代に帰れってことだ
600 :
597 :2013/07/25(木) 15:14:33.30
>>599 いやでもプログラムには著作権ないよね?
アルゴリズムには著作権無いって法律に記されてるし。
仮に引っかかるなら変数名を変えればいいし。
601 :
597 :2013/07/25(木) 15:17:36.93
プログラムの挙動からそのプログラムの中身を透視できるソフトがあればいいのにな。 何故作らない?
602 :
デフォルトの名無しさん :2013/07/25(木) 15:51:30.35
透視って何を透視すんだよ
明らかにマじゃないので相手する必要なし
こういうアホだろ マじゃないニートの癖に出しゃばって来てIDを入れようとする馬鹿どもは
どのAPIを叩いているかを追跡して 何のジャンルのソフトかを絞り込むくらいはできると思うけど
俺はフリーしか使わない。
607 :
597 :2013/07/25(木) 18:17:38.45
>>604 マじゃなくてエンジニアですが何か?w
というかマって何の略ですか?マンマミーヤですか?
608 :
デフォルトの名無しさん :2013/07/25(木) 20:01:16.86
YouTubeで視聴できる 一番イケてるPVを 教えてください プロアマ問いません
S.O
610 :
デフォルトの名無しさん :2013/07/25(木) 21:07:41.50
>>444 お化け番組のセンターの1人である
ここから派生した芸風、派生していない芸風、
菱形継承した芸風、菱形でない多重継承をした芸風が、ひしめき
異様な盛り上がり(セクハラの副作用を含み)を呈しているが
収束する兆しは見えておらず、今のところ発散すると予想されている
ジュリア集合のような様相を呈している
611 :
デフォルトの名無しさん :2013/07/25(木) 22:23:08.35
ハノイの塔を解くプログラム作りたいんですけど 3本の柱があるので3つ配列は必要ですか? a[0]がa柱の一番下の値とします。
http://mambo.kuhp.kyoto-u.ac.jp/~masahiro/c/indexj.html http://mambo.kuhp.kyoto-u.ac.jp/~masahiro/c/euc/hanoi.c #include <stdio.h>
#define MAX 256
void hanoi(int n, int from, int to, int use);
main()
{
int n;
char tmp[MAX];
do{
printf("ハノイの塔の円盤の枚数は何枚ですか?1以上の整数で答えて下さい。> ");
fgets(tmp, MAX, stdin);
tmp[MAX - 1] = 0;
n = atoi(tmp);
/* scanf("%d",&n); */
}while(n < 1);
hanoi(n, 1, 2, 3);
}
void hanoi(int n, int from, int to, int use)
{
if(n <= 0) return;
hanoi(n - 1, from, use, to);
printf("円盤%dを棒%dから棒%dに動かす。\n", n, from, to);
hanoi(n - 1, use, to, from);
}
613 :
デフォルトの名無しさん :2013/07/25(木) 22:33:19.63
そもそもどんな形で解得るか想像してなかったですw
棒Aから棒Bに円盤Cをでいいですねこれは。
ところで
>>612 のが全部ですか?
短すぎませんか?
hanoi関数の中でアルゴリズムが全く見当たらないんですが…
614 :
デフォルトの名無しさん :2013/07/25(木) 22:37:09.71
>>612 短すぎワロタw
柱の配列3つ
円盤の配列1つ
でプログラムは再帰使わずに
300行いったのに…ww
616 :
デフォルトの名無しさん :2013/07/25(木) 23:22:13.11
マルチスレッドなんざ女子供向け 男ならシングルスレッド一択 お〜と〜こだった〜ら〜♪ シングルスレッドにか〜け〜る〜♪ か〜け〜て〜も〜つれ〜た〜♪ アルゴリズムを読み解く〜♪
>>600 ヘッダ部分にコピーライト書いてあるソースは良く見かける
ソース(のテキスト)にはある アルゴリズムにはない 変数名関数名を変えたりすると侵害を証明するのが難しい
>>619 解法は解を得る方法なんだから、アルゴリズムの事じゃないの?
根拠はないけど、一般的に考えて。
第1項第9号に掲げる著作物に対するこの法律による保護は、 その著作物を作成するために用いるプログラム言語、規約及び解法に 及ばない。 おまいら前後の文脈を読み取れずにプログラムいじって バグ仕込む無能だな
ソフトウェアの著作権と特許、アルゴリズムとその表現(具体的な実装)を 区別しないと混沌とした話にしかならんな
>>619-620 プロの意見
http://www.indigobullet.com/info-d/programCopyright.html 解法(アルゴリズム)は著作権法で保護されない(著作権法第10条第3項)。
ここをみて発見した驚愕の事実‥‥
・フォント(書体の形状自体)は、原則、保護対象外(最高裁H12.9.7-H10(受)332号)。
・リバースエンジニアリング は、複製等にあたらないため、著作権の侵害行為とはならない
・ダイナミックリンクによるライブラリの使用
実行形式ファイルにライブラリのコードは含まれない。
したがって、ライブラリをダイナミックリンクで実行時に使用する実行形式ファイルを作成する行為は、ライブラリ内のコードの複製とは考えられない。
その実行形式ファイルを実行するとライブラリファイル内のコードがメモリにロードされるが、
現時点の日本では、メモリへのロードが複製に該当するか否かは明確ではない(著作権審議会国際小委員会報告書H12.11)。
GPL 汚染は DLL で防げるらしい、誰か前例をつくってくれ
>>624 GPLは民事契約だから著作権法は関係ない
>>625 民事契約も法的拘束力の一つであるし、民事契約は主に民法に基づいて締結されるのが普通。
よく引用されるのだが、民法第90条では民事契約と成文法とがリンクしていることを示しているのでは?
公序良俗に反する行為を必死て煽っているゴミクズが民法90条とは大笑いだ
>>628 >公序良俗に反する行為
え?何かしたかなぁ‥‥
>公序良俗
定義は?
またノータリンのQzが暴れていると聞いて
631 :
デフォルトの名無しさん :2013/07/26(金) 13:20:43.49
立教の法学の先生のページ www.rikkyo.ne.jp/~asatsuma/12gendaishakai.html 3.講義ノート7.2.参照。カンニングペーパーの販売契約は、民法90条の公序良俗違反であるとして、契約の有効性が否定される。
都合が悪くなるとすぐにコテを外すクズ
手の形を自動的に描画するプログラムって作れますか? そういう事考えた人このスレにいますか? ちょっと今自動お絵かきソフトの研究しているんですが、精通している 人がいたら教えて欲しいです。
>>633 内部に3Dモデル持つのが一番楽だと思う
画角と距離はユーザーが調整できるようにするしかない
3Dプリンターのスキャナー部分を購入する。
>>634 3Dじゃなくてもいいです。
二次元でいいです。
3Dモデルを写真のように2Dにしろってことだろう。
リアルな絵じゃなくて、女性らしいしなやかな手とか 荒くれ男のゴツゴツした手とかを自動描画したいんじゃないかね あれなかなか難しいからね
>>636 2Dだと元画像が山ほど必要になってしまうから
3Dのほうが簡単
640 :
デフォルトの名無しさん :2013/07/26(金) 17:40:49.33
>>637 違うんです。
アニメ絵(例えば、どらえもんとか)を学習してアニメを自動で描きたいのです。
学習する材料が写真ではなくアニメという事です。
>>640 そんな技術があったらアニメ会社がとっくに目をつけてるよ
つまり現段階では不可能てこった
研究とかいってるけど 単にトゥーンレンダリングしたいだけとかいうオチは?
アニメの3Dモデルつくれ。 ピクサー・アニメーションは早い時期にフィギュアを作ってるらしい。
PCで直に3Dモデルを作れるならそのままでよく、 苦手だったらドラえもんのフィギュアを買ってくるか、粘土で作って3Dスキャナーで取り込む。
646 :
デフォルトの名無しさん :2013/07/26(金) 17:58:17.57
>>642 何故無理なんでしょうか?
のび太が走るという動作を、のび太のグラフィックから解析して
自動でアニメーション作成とかできないですか?
3Dでできるんだから2Dならもっと楽かと思いますが。
もしかしてアニメ会社の人ですか?
アニメが簡単に作られたら困るからそういう技術が開発されないように
圧力とかあるんでしょうか?
>>646 フラッシュアニメっぽいのならいけるんじゃね?
先行論文読まない研究ってどういうことだよw
探してすらないだろw
3Dの方が簡単。 2Dから新たな2D画像を作り出すほうが困難。 2Dには、隠れた部分や奥行きのデータがない。
649 :
デフォルトの名無しさん :2013/07/26(金) 18:04:13.09
/script のび太笑う のび太笑い転げる どらえもんそれを見る どらえもん怒る どらえもんお仕置きバットをポケットから出す のびたにそれで叩こうとする のびた怖がる こんな感じで文字だけでアニメつくれないですか?
全身稼働するフィギュアを買ってきてポージングさせて写真にとることは 絵心やPCに詳しくなくても出来ること。 3Dモデルを作っておくことはそれと一緒。
651 :
デフォルトの名無しさん :2013/07/26(金) 18:09:35.96
>>650 そういう場合でも写真は何枚も取らないとダメなんでしょう?
2Dだと真正面だけで済むじゃないですか?
つべに ブランコにのるように学習させるのあるけど 3Dすげーな
スパコン使えばアニメ作れるかもな スパコンって1秒に1億以上の計算するから余裕だろ
作れると思うならその通りやればいいじゃん
最近のアニメ見てると割と3DのCGを動かしてるシーンは多いよ でも人物を3Dで置き換えるレベルにはなってないね
何か途中から荒らし的な発言に変わってる気がするが、質問者は同一人物なのだろうか
俺も同じ事を考えたがなつやすみだから訳のわからないのがわいてるだけかも知れん
C言語を使える人間が集まってプログラミング関係の雑談するスレに成り下がったなこのスレ 専門板の勢いトップがこれなんだから、もう専門板ってコンテンツとして終わってるよね まともなプログラミング関連の情報は全てTwitterとブログに移行した
技術情報を2chから得ようとは思わんなあ
そんなにツイッターとブログって役に立つの
役に立つ。2chだと返答を待たなきゃならないし、過去スレは手に入るか怪しい。 他人のコードは勉強になる。
どこよ 2chの代わりになるツイッターとブログを頼む
最新の情報についてあれこれ語ってるスレは皆無だし、 今のム板は老人が過去を思い出しつつプログラム談義するだけの板でしかない
どこと言われても困る。必要な時に必要な情報を開示してるサイトを探す。 C++に入らずC言語限定なら本だけで何とかなるが
専門板の勢いトップが糞スレなのは自明
こんな勢いで最新情報語ってたら、いつ勉強してるんだって事になるしw
669 :
デフォルトの名無しさん :2013/07/27(土) 03:23:16.89
twitterは、論外だろ 個人情報まきちらし
670 :
デフォルトの名無しさん :2013/07/27(土) 03:47:00.23
最新情報なら、開発者のメーリングリストとか、ログインして読み書きするシステム(SNSとか)
671 :
デフォルトの名無しさん :2013/07/27(土) 05:32:01.08
char a[256]; sizeof( a );//配列のサイズ256バイト int xxx( char *a ){ sizeof( a );//ポインタのサイズ4?バイト これが俺のトラウマ
2chから人を減らそうとしてる工作員が活動してるんだろ win32apiスレや宿題スレを荒らしてるのも工作員の仕業だろ くやしかったら2chに代わるtwitterやブログのURLを書き込んでみろよ
673 :
デフォルトの名無しさん :2013/07/27(土) 06:38:37.42
理不尽な巻き添え規制で、まともなひとがかきこめず、荒らしがスレ立てをする
2chで手に入る技術の情報なんて自前で手に入るしな むしろ間違ったこと指摘されて腹立つことのほうが多い
間違った指摘が返ってくるのは入力がおかしいからだ 相手が解釈できない入力を書いた時点でマの負けと教科書に書いてある
質問を自然言語で記述するから曖昧になりトンチンカンな答えが返ってくる プログラマなら質問記述言語を開発して使うべきだ
678 :
デフォルトの名無しさん :2013/07/27(土) 14:42:16.38
プログラムやる前にまともに勉強してれば自然言語でも十分通用するんだがな。 「説明能力検定」みたいなやつを作って、その検定である程度の級以上じゃないとプログラムしてはいけないことにすれば良い。 プログラムやろうと思えばできる環境は残るだろうが、無資格は違法にすればよい。 無線みたいなもんだ。 趣味グラマが貢献してる部分が大きいのにそんなことしたら 日本のITが世界から遅れをとると大ブーイングが起きると思うが、 母国語でまともに説明すらできない雑魚がガタガタ抜かすなという姿勢で黙殺すればよい。 検定を作れば政府も収入増えるわ天下り先は増えるわで一石二鳥だろ。 はやくやれ。
お前はおそらく資格なくなるがいいのか?
>>680 このくらいは自分で確かめてみるほうが後々のためになる
ポインタが4バイトとか都市伝説だから
プログラム能力検定試験よりも、ネット利用能力検定試験が必要なんじゃない?
685 :
デフォルトの名無しさん :2013/07/27(土) 16:04:56.78
マ板でやれ # 段級で儲かるとか将棋じゃあるまいし
>>677 !
おもしろそー、どんな漢字になるの?
>>685 いややっぱりなんでもいいから段とか欲しい○○アマ初段!とかかっこいいじゃないすか
ネット碁今でも二桁級‥‥
>>680 64bit長のポインタを持っていると結果が8になる
Windows 64bitはLLP64だから8になる
>>688 をコピーして実行してみたのですが、
ポインターのサイズが8になります。。。
何が間違ってるんでしょうか?
691 :
デフォルトの名無しさん :2013/07/27(土) 21:55:15.86
検証しました #include <stdio.h> int test( char *a ){ printf( "%d\n" , sizeof( a ) ); return 0; } int main(){ char a[64]; printf( "%d\n" , sizeof( a ) ); test( a ); return 0; } // 実行結果 64 4
なにこれ。 引数でポインタ受け取った側からサイズ調べるにはどうすんの?
なに当たり前のこと延々とやってんの?バカ?
695 :
デフォルトの名無しさん :2013/07/28(日) 01:39:45.96
>>692 普通はポインタとサイズをセットにした構造体を作ってセットで渡す
C++なら template <int N> void func(int (&array)[N]); とすればサイズNを引っ張ってくれるけどな 配列の参照渡し
疑心暗鬼の
>>694 がかわいそう。
盛大に釣られたトラウマでもあるんだろうか。
とりあえず頭は悪そう。
初心者が質問するスレで、何度も同じような質問が出るのは当たり前なのにね
700 :
デフォルトの名無しさん :2013/07/28(日) 07:48:35.44
!(0)*2 これを詳しく調べたいのですがクグるキーワード教えてもらえませんか?
演算子の優先順位
(!a)*2 !(a*2) などすれば調べることもない
703 :
デフォルトの名無しさん :2013/07/28(日) 08:04:08.57
>>696 どこかで聞きかじった半端な知識で恥をかく。コンパイルできないぞ。
#include <iostream>
template<int N>
std::size_t func(int (&array)[N])
{
return N;
}
int main(int ac, char **av)
{
int a[ac];
std::cout << func(a) << std::endl;
}
704 :
デフォルトの名無しさん :2013/07/28(日) 08:06:58.71
!(0)*2=2 でOKですか?
>>703 そりゃC++じゃ
int a[ac];
こんなことできないからな
どこかで聞きかじった半端な知識で恥をかく。
>>705 うわ、本当だ。gccの拡張機能か。
今まで使ってたところ修正しないと。面倒くせえ
なんとC11じゃ、サポートはオプショナルに格下げだと! 余計な手間が増えた
>>628 遅いレスになってしまったが実際問題として困るのは短いスパンでも長期的スパンでもお題掲示者その人だ
短いスパン:「はい、あなたの回答はここのコピペですね再提出ね」あそこは有名だし
長期的スパンについてはいうまでもない
>>649 作れるよ。
「怒るとは?」レベルから全部定義する事になるんで、即効ではない。
typedef したものをさらに typedef するメリットを教えてくらさい 例えば、<WinNT.h> に char型を CHARに typedef した後 CHAR を *LPCH に typedefしてるんだけど typedef char *LPCH ってしちゃだめなの?
CHAR型に一般性をもたせるためだろ。 CHAR≠charとなっても、CHARを使っている部分は変更しなくてよく CHARだけの変更でいい。
>>711 なるほどなるほど
CHAR を変えるだけで
修正しやすいってことですね
なるほど
ありがとう!
たしかに、他にも CHAR で typedef してますね
714 :
デフォルトの名無しさん :2013/07/28(日) 18:13:45.72
質問です。 CADなどのソフトで登録できる要素は無限というソフトはどういったデータ管理してるのですか?
reallocなどで要素数と共に確保するメモリを増やす 構造体にpNextポインタとかを用いてリンクされたデータ領域に次々と足していく とかの方法がある
でもこーゆーのは他人のコード見るのが一番勉強になるんだが
>>714 データベースに突っ込んで、データの管理は丸投げするとか
718 :
デフォルトの名無しさん :2013/07/28(日) 19:05:33.54
CHAR=charと仮定するコードを警告できない時点でアホの一言
719 :
デフォルトの名無しさん :2013/07/28(日) 19:10:32.15
DWORDで管理してるから実質上無限とか(笑)
質問です strlenの返り値はsize_tですが、size_tではほとんどの関数の引数に渡せないため、 実際に使う際はintやlongにキャストすると思います でもキャストするときにキャスト先のデータ型に収まらない可能性もありますよね。 その可能性を防ぐにはどのように対処するのが一般的なのでしょうか。 処理系ごとにsize_tの定義を確認してキャストが収まるか確認するべきなのでしょうか?
処理系ごとにsize_tの定義を確認 しかしよっぽどヘボい例えば8ビットとかでなければ問題でないだろ
>>720 基本的にはキャスト前にチェックするしか無いと思うお。
C言語を用いた大学一年生のプログラム作成課題の代行をしていただける人を探しています。 理学部や工学部の課題ではないので難解なものではないと思います。 報酬は5000円程度で考えております。 どなたか宜しくお願いします。 bc149kあっとやふー
>>720 キャストした後に負かどうか調べりゃいいんじゃね
728 :
デフォルトの名無しさん :2013/07/29(月) 07:02:11.76
型のサイズの問題が顕在化するのってコンパイル時?実行時? コンパイル時ならコンパイル済のバイナリ配布の場合は気にしなくていいよね
>>727 キャストによってオーバーフローを起こした時点で結果は未定義のはずだし、
運良く上位ビットを切り捨てる挙動をしたとしても
値が負になる保証はない気がする
>>726 麻薬売人と宿題スレとはなんの関係もない
なぜ唐突に宿題スレが? 宿題スレで麻薬の密売やってるのか?
732 :
デフォルトの名無しさん :2013/07/29(月) 16:21:52.21
型のサイズの問題が顕在化するのってコンパイル時?実行時? コンパイル時ならコンパイル済のバイナリ配布の場合はそこまで気にしなくていいよね オープンソースみたいにソースそのものを配布する場合は注意が必要だけど
>>729 キャストでオーバーフローって何だよ
0xFFFFFFFFが-1になるかUINT_MAXになるかの違いじゃないの?
>>732 C言語のソースコードはよほど注意深く作らない限り必ず環境依存が発生するから、あまり気にしてもしょうがない
環境依存を吸収するための条件分岐だらけでも困るだろ?
実行時にも顕在化せずにたまーに落ちるとかもありえるけどね
>>734 (符号のことは一旦棚上げして)
サイズが小さくなる整数型へキャストした時の話なんでないの?
戻りsize_t → int へキャスト
ただし sizeof(size_t) > sizeof(int) でした
int (* const funcs[])(int) = {fun1, fun2}; の関数ポインタ配列でconstなのは何ですか?
書き換え不能
#include <stdio.h> #define SIZE 100 struct HOGE { int hiretu[SIZE]; }; void hage(struct HOGE *hoge) { printf("%d\n",sizeof(hoge->hiretu)); } int main(void) { struct HOGE hoge; hage(&hoge); return 0; }
742 :
デフォルトの名無しさん :2013/07/30(火) 18:01:37.17
解説やサンプルでhoge使ってる書籍は例外なく悪本だから、 購入前にチェックすることをおすすめする。
foobarならいいのか?
usugeなら許す
解説やサンプルでfoobar使ってる書籍は例外なく悪本だから、 購入前にチェックすることをおすすめする。
解説やサンプルでhoge使ってる書籍は例外なく悪本だから、 購入前にチェックすることをおすすめする。
解説やサンプルでusuge使ってる書籍は例外なく悪本だから、 購入前にチェックすることをおすすめする。
そんなんあるわけないだろw
具体的に書籍名を挙げてみて
解説でusageを書いてる書籍は良本
解説でhageを書いてる書籍は良本?
hageが書いたC++ D&E本は良書だった
757 :
デフォルトの名無しさん :2013/08/01(木) 12:32:08.93
あ
「減価償却費を経費扱いせず、固定資産税もかからない建設仮勘定に計上」 経費で消えるはずの金額をなぜか利益に積み増す!!!!! 馬鹿か!!!! 世界に通用しない朝鮮独自の会計ルールでやりたい放題の統計水増し!!!!! 韓国以外の株式市場で一切上場できないという間抜けな結果に!!!! 「あり得ない・・」「粉飾とかいうレベルじゃなくて、複式簿記の概念からして間違ってない?」 サ ム ス ン は 減 価 償 却 費 を 経 費 扱 い せ ず 、 固 定 資 産 税 も か か ら な い 建 設 仮 勘 定 に 計 上 し て い る 日本で言うところの経費を利益として計上している朝鮮会計のせいで、日本や海外の株式市場に上場できない。 韓国の税法上、仕掛かり中の製品、部品も全部資産。 その上、売れ残った製品も売れたのと同等の扱いなので、作れば作っただけ利益が増えるの。 そのため、ガラケーの際も3年分の在庫があったんだけど、それも資産。廃棄して潰したんだけど、それは帳簿上、どこにも出てこない。 減価償却費を経費扱いせず、固定資産税もかからない建設仮勘定に計上し資産化できるので、 半導体のような巨大装置産業に必要な巨額の設備投資を、丸々利益扱いできる。 また、海外子会社の利益を特許使用料の名目で特別損益にし、さらに法人税を韓国の輸出還付政策で丸々ゲットしてる。
759 :
デフォルトの名無しさん :2013/08/02(金) 10:17:35.06
www
建設中=仮勘定 → 竣工・利用開始=資産計上 → 償却開始 じゃないのか? 古いネタな上におかしすぎる
質問です。 char型データを格納するためのスタックを構造体として定義し、スタックを実現するための3つの関数を定義せよって問題なんですけど、 void init(Stack *stack); ○stackを初期化する char push(char c, Stack *stack); ○stackに c をpushする.返り値はpushが成功したかどうか char pop(Stack *stack); ○stackからデータをpopする.返り値はpopした値.ただし,失敗したときは0を返す。 どなたか分る方いませんか? ポインタを初期化にどう絡めるかまったくわかんないです;;
まずは構造体を定義してみ
struct stack { char date; } void init(Stack *stack){ struct stack = {\0} } これじゃポインタ要らないですよね
>>761 typedef struct {int num; char data[100];} Stack;
void init(Stack *stack) {
stack->num = 0;
}
char push(char c, Stack *stack) {
if (stack->num >= sizeof(stack->data)) return 0; /* error */
stack->data[stack->num++] = c;
return 1; /* success */
}
char pop(char c, Stack *stack) {
if (stack->num == 0) return 0; /* error */
return stack->data[--(stack->num)];
}
>>763 そうとうがんばらないと落ちこぼれるな。
いまどき最大値が決めうちのスタックなんて誰も使わねーよ
そういうプログラムを書く人が多いからC言語は使いづらいってイメージが広まるんだよ
>>761 #include <stdio.h>
#include <stdlib.h>
// 最初に確保するサイズ。最大サイズではない
#define DEF_SIZE 100
typedef struct {
char *data;
int length;
int allocated;
} Stack;
void init(Stack *stack){
stack->data = (char *) malloc(sizeof(char) * DEF_SIZE);
stack->length = 0;
stack->allocated = DEF_SIZE;
}
void push(char c, Stack *stack){
if (++stack->length > stack->allocated){
stack->data = (char *) realloc(stack->data, sizeof(char) * (stack->length));
}
stack->data[stack->length - 1] = c;
}
char pop(Stack *stack){
return stack->data[--stack->length];
}
明らかに初学者の学習目的の設問なのに 勝手に実用向けの拡大解釈なんかすんじゃねーよ そもそも pushで 0 が渡された時の欠陥を指摘できない素人が何語ってるんだ
>>768 いくら初心者向けの設問だからって最大値が決まってるスタックはありえないわ
ただの配列じゃんw
固定サイズでもエラーを返すなら問題ない 0ターミネートのスタックはゴミ
> 固定サイズでもエラーを返すなら問題ない くそワロタ エラー処理なんてライブラリによってさじ加減が異なるんだからサイズチェックするもしないも自由 nullチェックからサイズチェックまで全部やるの?w
772 :
デフォルトの名無しさん :2013/08/02(金) 14:26:05.84
>>769 どこの馬の骨か分からない雑魚が俺様理論を展開したいならブログでどうぞ
根拠があるなら信頼できるソースをどうぞ
スタックのひとつのエントリを構造体で作成して リンクリストにするんじゃないの?
VS(Visual Studio)上でC言語でプログラム作っています。 VSで-lっていうオプションはどういう働きをしますか? この-lに対応するコードは書かないと駄目なのでしょうか?
775 :
774 :2013/08/02(金) 14:49:54.33
すいません。 コードにargv[i]が-,pのときとオプションが指定されてました。
776 :
773 :2013/08/02(金) 14:55:29.89
設問だから仕方ないけど pop と push の戻り値が int だったら エラーと値が区別つくのにと思った
>>778 俺も一瞬それ思ったけど、charとintのサイズが同じ環境もありえるから
扱うデータの範囲を0以上にするとか仕様がないとintにしても同じだな。
>>767 realloc()使うのにこういうまとまったサイズごとに、確保するのって
コードが複雑になるだけでメリットなんもないね。
(みたいなツッコミをすると組み込みの環境では〜とか反論しだしたりするんだろうけど)
まあアセンブラで書いたら頭がこんがらかってバグが取れないところを C言語だと割りと楽に書けるというのはあるけどな
'\0'はpushできなくていいのかね。
popの失敗値が0だから必然的に0はpushできないという制約がある。
1) 失敗と成功を区別するために0はpushできない 2) 0がpushされた際は失敗と成功を区別できなくなる どちらの仕様かは解釈によるだろ?
push成功したオブジェクトをpopできないスタックは壊れている
>>786 0もpopはできるでしょ
ただそれが成功か失敗か判別できないだけで、データは返されている
区別する必要はない 区別できないスタックは壊れている
壊れてるwww
頭が壊れてんのか
返しているけど区別できないなどいう戯言は壊れた頭でなければ発する事は不可能
そこまでできれば改良は簡単でしょう
>>787 失敗だったら、データが返されてるとは言えないだろ
そもそもその後、ポインタずれてるかもしれないようなスタック使い物にならんだろ
仕様書に「失敗したときは0を返す」って書いてあったらさ 0認めない派の人は勝手に入力値から0を削っちゃうの?
>>794 普通に、これこれの時まずくないですか? って確認するだろ。
エラーのときは99を返すという仕様で作ってて、 いつの間にか返却値がその値になるケースが出てきたことがあったな どう対処したかは、忘れた
>>795 ライブラリの仕様書に「この関数は失敗したときに0を返す」って書いてあったらさ
「じゃあ0は受け付けないようになってるんだな」って勝手に解釈するの?
たとえば成功失敗フラグを別の変数にセットするとか それなら同じ0が返ってきても成功か失敗か区別できるだろ? だから失敗時に0を返すからと言って入力値の0を制限するのは拡大解釈だよ
仕様書には間違いがある。 問題文には間違いは無い。不合理な部分も含めて問題だ。 問題文と仕様書を取り違えてるバカってなんなの?
>>797 確認するって書いてあるのに、勝手に解釈するの? って聞かれても...
日本語難しいですか?
ま、教育的な問題ではないことは確かだね
>>767 >いまどき最大値が決めうちのスタックなんて誰も使わねーよ
いや、普通に使うし・・・
特にミッションクリティカルな場面ではそうするだろ。
固定配列の方が、その都度メモリアロケーター呼び出すより格段に速いからな。
ミッションクリティカルな場面だとか 組み込みだとか そういう特殊な用途じゃなきゃ最大値固定スタックなんて誰も使わないって認識でおkかニャ?
>>794 Alloyを使って最初に試しそうな問題だな。
その妥当性を確かめるにはどのようなassertを入れればいいかとか、正しく
動作するようにするためにはどのような仕様(制約)を追加すればいいかとか。
>>805 誰も使わないわけじゃないが、動的にメモリ取って問題ないならそうするだろう
>>806 ・呼び出し側は関数の実行結果が成功か失敗か区別できる必要があるのか
・その場合、成功か失敗かは関数の返り値から区別しなければならないのか。
たとえばGetLastErrorのように最後のエラー内容を取得する仕組みではだめなのか
この二つをどう解釈するかの問題。
一般常識的に言えば両方「YES」。仕様書に厳密に従うのであれば両方「NO」
例えばライブラリの仕様書に
>>761 が書いてあったら、
成功時に0が返ってきても仕様書通りではあるので文句は言えない。
>>808 >GetLastError
これ今いち嫌い、マルチスレッドで保証されているのか、とか
push(0, stack)がエラーであるという定義はないので、全部受け入れる pop(stack)==0ならエラーである まあ取り敢えずおかしいってことを頭に入れときゃ、文字列だけの運用ならどうにでもなるだろう
>>811 Alloyは形式的に記述した仕様の妥当性(矛盾はないか、条件は満たしてるか、想定外外のケースは起きないか)などを
確かめるためのツールであって、自然言語で書かれた仕様の解釈が妥当か確かめるツールではないよ。残念ながら
自然言語の仕様書の解釈を誤ってAlloyに入力したとしても、その解釈の誤り自体はAlloyは指摘してくれない
>>805 当たり前だが、要件次第でしよ。
要素が 10個までとなっているなら固定でいいだろうし。
>>813 ほとんどの用途において最大値を固定するメリットはありませんよw
>>812 そりゃ、Alloyは仕様の妥当性を確かめるツールであって仕様書の解釈を確かめる
ツールじゃないわな。
妥当性を検証すべきは
>>761 の仕様であって、その解釈じゃない。そもそも
>>761 の
記述であいまいさが残るのはpush()の返値ぐらいで、十分明確だから解釈問題にも
ならんだろう。
>>817 もちろん、仕様を所与のものとして受け取るだけの人が使っても意味はない。
Cで、return に使う定数ってどこかのヘッダに定義されていないの? exitならstdlib.hにEXIT_FAILUREみたいなのがあるんだけど、それのreturn版が欲しい
sysexit.hとか でも子プロセスの終了ステータスをboolじゃなく、値で扱っている奴はMTA以外には知らない
>>820 ない
enum とか使って自分で定義して
それを使うように統一するとエレガント
てか単純に、ライブラリのその関数の説明見ろや、で済む話かも知れんがw
前から思ってたんだけど、このスレって、勘違い君が一人だけ紛れ込んでいるよね 普通は〜とか言いながら固定環境に特化した極論ばかり主張している事に気付いて無い人 多分知識には自信があるんだろうけど、経験の種類が足りてないと見る
>>824 具体的にどのレスのことかアンカー振ってみてよ
struct point { int x; int y; }; struct point get_point(void* point_array, int index) { // point_arrayに格納されたindex番目のpointデータを返したい } こんなI/Fがあるんだけど、void* point_arrayはstruct pointの配列になっています。 void*の値を構造体の配列にキャストするには、どう書けばいいですか?
>>827 なんというドンピシャなコードwww
ありがとうございますありがとうございます!!
>>828 過去ログ漁って修行します
832 :
デフォルトの名無しさん :2013/08/03(土) 18:29:27.41
hoge狩りの次は普通狩りかよ
>>828 なにか言いたいことはわかったが、何を言いたいのかさっぱりわからん
>>767 なんてヘボすぎて話しにならないってことだろ
得意げにバカ晒してるのがかわいそう
二年以上公開オナニーを続けている最下層ゴミクズに比べりゃかわいいもの
837 :
デフォルトの名無しさん :2013/08/04(日) 00:54:35.25
いいからお前ら早くコーディング作業に戻るんだ
関数の、このプロトタイプ宣言と実体と static void test(void); void test(void) { return; } これとでは static void test(void); static void test(void) { return; } 関数のスコープは変わるのでしょうか?
>>839 上の奴は、gccだとexternで外部参照しようとしたらエラー出た
error: static declaration of 'test' follows non-static declaration
>>840 レスありがとうございます。
ちょっと頭が混乱してきたので出直します。
842 :
デフォルトの名無しさん :2013/08/05(月) 03:29:06.89
>頭が混乱 お前頭以外の部分が混乱することあんの? 頭痛が痛い?
struct TEST{ long a; char b[64]; }; TEST test; testの内容をsizeof( TEST );のサイズ、つまり丸ごとファイルに保存してるんだけど、ソフトをバージョンアップする段階で、構造体TEST2に移行してTEST2が以下の通りのときに、TESTで保存した内容をTEST2にsizeof( TEST );サイズだけ読み込むってのは問題ない? struct TEST2{ long a; char b[64]; long c[8]; }; ※a,bは位置、順番、サイズ共に変化なし、最後にcが追加されただけ
846 :
デフォルトの名無しさん :2013/08/05(月) 08:38:44.35
3Dのモデリングツール作ってるんだが数値がずれることがある。 3Dって特性上、小数を扱うんだけど、入力した値が0.0001とか、細かい単位で勝手に変わってることがある。 入力しても見てみるとまたずれてる。 コンピュータは2進数で管理してるから1ビットごとに0.5、0.25、0.125、・・・ってやつのビットで管理してるから まぁ近似値しか表現できないのかとも思うが何とかならんのか。
>>846 諦めるか適当なBCDライブラリを探すか作るか
有理数で計算すればいいじゃん
普通はユニット値として整数で持つ 0.1μまで扱うなら1ユニット:0.005μ位か
>>851 処理系依存かどうかって話だろ…
特定の処理系で動いたからといって何の意味もねーよw
>>852 処理系変えるなんてどこにも書いてねえじゃん
勝手に要件追加するのはカスプログラマー
>>853 メンバ追加の前後で処理系を跨いでいない という前提でも
メンバの宣言順にメモリ配置されるかどうかは処理系依存なんじゃないの?
=メンバ追加行為において、追加要素がメモリ末尾側に配置されるかどうかが処理系依存
>>853 質問が理解できていないようだな。
codepadの処理系でうまく動いたからと言って、
質問者が使用する処理系でうまく動かどうかは無関係ってことだ。
>>856 仕様書の何ページに書いてあるのか教えてね
>>854 もし保証がないとしたら初期化子が直感的ではなくなるな
ビットフィールドもおかしな事になりそう
効率と互換性重視の保守党言語だからなあ、そこは保証してると思うぞ、常識的に考えてな
めんどくさいから調べないけど
メンバ順にアドレスが増えるように配置される、という程度の保証はある もちろんエンディアンやパディングについての問題は残るが
>>859 一部確認した
ISO/IEC 9899:1999 6.7.2.1.13
Within a structure object, the non-bit-field members and the units in which bit-fields
reside have addresses that increase in the order in which they are declared.
There may be unnamed padding within a structure object, but not at its beginning.
>>843 シリアライズは自力でなんとかするか最近はいろいろライブラリが出ているようだ
http://omt.sourceforge.jp/serializer.html
int,longのサイズは処理系依存って話かな?
862 :
デフォルトの名無しさん :2013/08/06(火) 07:35:11.92
きりの良い数字の算出方法を教えてください 現在、GUIで折れ線グラフを描画しているのですが、最大値が画面からはみ出さないように、また変化が分かる範囲にしたいので、その目盛りの最大値の話です 例としてグラフの描画範囲の高さを500ピクセルとします 例えば折れ線グラフのためにプロットする値の範囲内の最大値が418だったとき、目盛りの上端は500が妥当です 1ピクセルあたりの値を1として計算して描画できます しかし最大値が16609だと500では描画範囲からはみ出すので目盛りの上端は17000としするのが妥当でしょう 1ピクセルあたりの値を34として描画すればはみ出しません 将来に渡って予測しうる最大値が4905269だった場合を考えて、上端を5000000に固定することも考えましたが、 そうすると値の範囲内での最大値が14など上端に比べて極端に数字が小さいときは折れ線グラフには全く変化が現れません 最大値が14ならグラフの上端は15か20が妥当でしょう こうした妥当な目盛りの上端はどうやって算出すればいいでしょうか
863 :
デフォルトの名無しさん :2013/08/06(火) 07:40:50.23
対数グラフにするとか、外れ値だけ破断線で特別枠に表示するとか
1. 最大値は固定で、はみ出た部分は描画しない 2. データの範囲に応じて最大値を変更する 3. 最大値は自分で指定可能で、はみ出た部分は描画しない どの方法が最適かは状況次第かな 2. データの範囲に応じて最大値を変更する に興味があるのだと思うけど、これもいくつかバリエーションがある データの最大値をそのまま最大値とする方法と、 データの最大値の少し上を最大値とする方法があって、 「少し上」をどう求めるかもバリエーションがある 例えば、完全に切り上げる方法 データの最大値が 11 なら 20 がグラフの最大値になる 344 なら 400、83230492 なら 90000000 切り上げる桁を変えても良い 112 なら 120、344 なら 350、83230492 なら 84000000 のように、 上から3桁目以降を切り上げる形とか、4桁目以降とか 他にも、1, 2, 5, 10まで切り上げる方法もある 100 なら 100、101 なら 120、143 なら 150, 183 なら 200 とか あとは固定値だけ上にする方法もあるけど、 これはデータ範囲が大きく変化する可能性がある場合はあまり使えないかな
865 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/08/06(火) 17:04:22.32
866 :
デフォルトの名無しさん :2013/08/06(火) 17:07:21.64
底は色々だろ、自然対数とかマグニチュードとか
対数が適当かどうかはデータ次第だな
868 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/08/06(火) 20:18:05.15
>>862 // mはデータの最大値。
double f(double m) {
int i; double p, em, f, pf, pf05;
em = log10(m); f = floor(em); pf = pow(10, f); pf05 = pf * 0.5;
for (i = 1; i < 10; i++) {
p = pf * i;
if (m <= p) return p;
p += pf05;
if (m <= p) return p;
}
return pow(10, ceil(em));
}
char buf[20]; unsigned len = sprintf(buf, "%u", maxValue); int graphYMax = power(10, len - 1) * (buf[0] - '0' + 1);
expatでXMLの中身を表示していくだけのサンプルコードがありましたら教えて下さい
こんなところで聞くよりgoogleに聞いた方が速いと考えない理由は?
int main(void) { int num func(); ptintf("%d", num); return o; } int func(void) { return 10; 独習Cを勉強しています。本に voidと宣言した関数は値を返しません とありますが、この値を返さないとはどういう意味ですか? 10 を numに返してると思うんですが・・・・
>>872 間違えました
int main(void)
{
int num;
num = func();
ptintf("%d", num);
return 0;
}
int func(void)
{
return 10;
独習Cを勉強しています。本に voidと宣言した関数は値を返しません
とありますが、この値を返さないとはどういう意味ですか?
10 を numに返してると思うんですが・・・・
わかるまで何度も読み返そう。
返り値の型を…と明記してないなら本が悪いな C系の独習シリーズはあまりいい評価聞かないような
>>873 void func(void)
{
return 10;
}
ならエラーになるでしょ。
それ、書いといてほしいwww
878 :
デフォルトの名無しさん :2013/08/08(木) 13:53:07.28
main() { return 0; }
879 :
デフォルトの名無しさん :2013/08/08(木) 13:54:41.71
なにもかかなかったら intになる
独習Cで独習したけど、「voidと宣言した関数」の意味がわからないなんてことはなかったけどなあ
独習Cは、初心者向きじゃないからなw 引数 仮引数 実引数 値渡し 参照渡し こういうのがよくわからず、ごちゃごちゃになる 柴田望洋買え!
まあ初心者相手なんだし、「戻り値を」voidとした関数くらいにしてもいいだろう
>>871 聞いたけど要素の開始と終了を表示するやつしか教えてくれませんでした
中身まで表示するのはありませんでした
expat exampleで一番目に出てくるが
プログラムを2人で作っています。 相手のプログラムへのインターフェースとして 構造体(のポインタ)を渡す必要があり、 その構造体が定義されているヘッダBを取り込んだところ、 コンパイルが通りませんでした。 で、見てみるとヘッダBには別のヘッダAで定義されてる定数が書かれており にも関わらずヘッダAを取り込んでないからエラーが出ているようでした。 なので、ヘッダBでヘッダAを取り込むように相手に言ったところ、 ヘッダAとヘッダBを取り込んでいるヘッダCを取り込めと言われました。 確かにヘッダCを取り込めばコンパイルは通るものの 自分が使いたい構造体はヘッダCには定義されていないし、 結局Cで取り込んでるヘッダBを見ないと構造体の中身はわからない。 なのに、ヘッダBを取り込んではいけない、と言われて 一体何を言ってるのか理解できなかったのですが、 こういう自分の使いたい構造体なりdefine値が書かれていないヘッダを 取り込んで暗黙的にそこで取り込まれてる先のヘッダの何かを使う というのは普通の話なんでしょうか?
windows.h 普通に行われている
いちばん、内容が豊富なヘッダを読み込んでもエラーならなければ問題ない。 標準のヘッダでも使わない機能は多いだろ。
血美出武!
889 :
835 :2013/08/09(金) 07:14:54.36
そっか、普通なんですね
>>837 一番内容が豊富なヘッダはBです。
てか、構造体以外にもdefineだとかほぼ全部がBに入っていて、
Cに入ってるのは関数のプロトタイプ宣言くらいです。
その宣言されてる関数で渡す構造体の中身設定するためには
Bの中「の構造体を設定する必要があるのだけど、
Bヘッダは単体で読み込むとエラーだらけでまともに動かない
って感じです。
なんだろうな 単体でも読み込んで動くようにしてもいいし、しなくてもいい ただプロトタイプ宣言があるのなら、ヘッダCをincludeするのが正解なんじゃね?
どっちでもいい むしろ俺は両方やるぞ B 単体でもコンパイル通すし、いちいち選択の指示出すのがめんどくさいから、かなり広範囲にまとめたCも用意したりする
892 :
デフォルトの名無しさん :2013/08/09(金) 08:38:46.58
>>885 前半と後半で言っていることが逆のような気もするがそれはさておき、
別のところ(テストとか)で定義を差し替えたいからBにはインクルード
しない、みたいなのはよくある。
>>889 CではBをincludeしてるんだよね?
ならCにはBの内容がまるまる書いてあるのと同じなんだから、
BよりCの方が「一番内容が豊富なヘッダ」だよ。
894 :
デフォルトの名無しさん :2013/08/09(金) 10:23:51.23
>>885 美しくはないが、現実に広く行われていることだ
おまえさんの不満には俺も同感で、B の担当者の責任を押しつけられるのは筋違い
B のドキュメントに
「必要なヘッダ: C.h」と書いてあるのに見落としているならおまえさんの落ち度
「必要なヘッダ: B.h」と書いてあればバグレポート突きつけてやれ
このスレ、ハード寄りでアルゴリズムに関して質問していいか分らないけど Cで色んなプログラムを再帰で作り変えていて疑問が湧きました。 再帰関数って、とりあえずmain関数内で一回呼び出して、その引数に見合う 結果を出力しますよね?でも、再帰関数の中で、引数を変化させて関数を呼び出してますけど 途中でその各々の引数に見合う結果、状態になっているのでしょうか?途中でも、必ずその状態になるという のは保障されるのでしょうか? それとも、いくら同じ関数が途中で呼び出されようとも、mainで呼び出される再帰関数のみが、引数に見合う 処理をしていて、実は再帰関数によって行われる全ての同じ関数の処理の組み合わせで、ひとつの処理となっているのか 気になりました。
896 :
デフォルトの名無しさん :2013/08/09(金) 15:49:13.60
>>895 何だい、その main で 1回てのは?
while で何度も繰り返したり、位相を変えて呼び出したりは普通にするぞ
第一、関数が内部で本当に再帰しているかどうかは、main には関係ない
ム板で末尾再帰の話題が頻繁に出てくるように
非再帰に変形も普通にすることだ
それと関数が状態を持つのはあまり褒めたものではない
デバッカの使い方を覚えてステップ実行してみるとか、printf()(IDEならログ出力)とかで 変数の中身を確認しながら実行するとイメージしやすいと思う。 このさいだからデバッガの使い方を覚えるのを薦めるけど。
auto 変数と static 変数の違いは分かってるのかな
>>899 さすがにそのレベルの人間が再帰なんて学んでたら驚きだ
901 :
デフォルトの名無しさん :2013/08/09(金) 17:55:27.62
俺は再帰を憶えたあとで auto と static を知ったが
>>901 autoやstaticはC言語の基礎
再帰はプログラミングの中でも高度な話題
おk?
903 :
デフォルトの名無しさん :2013/08/09(金) 18:01:06.82
>>902 再帰ってそんなに高度なのか?
合わせ鏡な話題は理系の色んな分野で普通に出てくるが
再帰をつかわない方が高度になりえる。 ディレクトリ探索は再帰が便利。 あと再帰定理だったか、再帰とループで出来ることは全く同じ。一方は外してもいい。 ということはループが使える程度の難易度。
906 :
デフォルトの名無しさん :2013/08/09(金) 18:36:37.38
FSM とデータパスでできているものが再帰的な働きをしても、それは非再帰だとでも言いたげだな
スタックのサイズを気にする時代でもなくなったしな
908 :
デフォルトの名無しさん :2013/08/09(金) 20:37:10.82
質問です。 下のコードを実行するとなぜarrayは入れ代わるのでしょうか? 入れ代わることができるならtestも入れ替わるものだと思うのですが… #include <stdio.h> void check(int array[], int test){ array[2] = array[3]; test = array[3]; } int main(void) { int array[4] = {1, 2, 3, 4}; int test = 9; check(array, test); printf("a[2]= %d test = %d",array[2],test); return 0; }
4と9が出力されるだけだろ 何が入れ替わるって?
>>909 なんで4と9が出力されるんですか?
3と9が出力されると思っていたのですが、
4と9が出力されるので、だったらなんで4と4が出力されないのかなと…
すみません、聞き方おかしいですね… ローカル関数で変わった値がreturnせずに、 main関数で配列だけ変更が保持されてるのはなぜかなと 初心者すぎて質問するための単語も思いつかなくてわかりにくくてすみません
testを値渡ししてるからmain()のtestは初期値のまま 「参照渡し」でぐぐってみ
>check(array, test); arrayのアドレス値のコピーとtestの値のコピーが関数に渡される >array[2] = array[3]; arrayのアドレスからint型のサイズ3つ分先のアドレスに格納されている値を arrayのアドレスからint型のサイズ2つ分先のアドレスに格納する >test = array[3]; スタック領域に確保されたtest変数にarray[3]の値をコピー 関数を抜けると破棄 よって、check実行後、 arrayは、1,2,4,4が入っているし、testは9のまま
>>908 arrayは参照渡しになってるが、testは値渡しになってる
testも参照渡ししたいのならこうする
#include <stdio.h>
void check(int array[], int test, int *ptest){
printf("check: array:%p test:%p ptest:%p\n", array, &test, ptest);
array[2] = array[3];
*ptest = array[3];
}
int main(void)
{
int array[4] = {1, 2, 3, 4};
int test = 9;
printf("main: array:%p test:%p\n", array, &test);
check(array, test, &test);
printf("a[2]= %d test = %d",array[2], test);
return 0;
}
>>914 C言語には参照渡しは無いよ
全て値渡し
参照渡しとポインタ渡しの違いがわからない・・・
ポインタ渡し・・・変数のポインタを値で渡す 参照渡し・・・
参照渡しとポインタ渡しは別物。 ポインタの参照渡しも出来る。 参照渡しは呼び出し元の変数をそのまま渡す。
Cには参照がないからポインタによるアドレス渡しで代用している
話は逸れるけど、C++の場合にはポインタが使えます。 この場合、参照渡しとポインタ渡しでどのような違いがありますか?
922 :
デフォルトの名無しさん :2013/08/10(土) 00:48:24.21
const& と && の場合の特殊な解釈
>>921 参照渡しですむなら、その方が楽だし高速。
>921 個人的なルールですが、 参照は、constと一緒に使って、その変数が変更できない場合に使う ポインタは、変更する時に使う
何だそのルールw
参照はポインタ隠蔽しただけだから変わらない しかし参照のがコンパイル時に最適化がしやすい
void check(int someData) { int *p = (int*)someData; *p = 10; } int main(void) { int test = 9; int someData = (int)(&test); check(someData); printf("test = %d\n", test); return 0; } ======================== $ ./a.exe test = 10
>>925 参照は呼び出しの字面見ただけじゃ、呼び出し先で変更されるのか判別出来ないから、
そのようなルールで判別可能にする事は可読性を向上させる。
良いオレルールだと思う
理屈上はそれでいいだろうが。 値渡ししたくない時がポインタのみだと作るのが難しくなる。 C言語・ポインタに慣れきってばそれでいいが。
>>929 ポインタだって判別出来ねえよ
const付けりゃどっちも同じ
ただのデータ *をつけるとアドレスとみなしてそのアドレスの値を読み書きするだけ
C言語と同じ使い道に限定したいんだろ。 変数が書き換わるのはポインタアクセスのみ。 参照はデータ受け渡しの高速化目的のみ。
全角半角の空白が混じってないか
全角混じってたw 初めて、Vsual studio 使ってるけど便利 重いのは難点だが・・・
>>933 何で分けるかやっぱ理解できんわ
チームがそう同意してりゃいいけどさ
ポインタのnullチェックとか無駄な処理が入るとテスト工程のつまらない作業が増えるんだよね 最初から参照で渡せよクズが
939 :
デフォルトの名無しさん :2013/08/10(土) 16:19:32.65
Cでか? C++ でも != end() は必要なら「無駄な処理」じゃないし
>>939 out引数の話
オプションでもないバッファをnull許容にするとか狂気の沙汰だろ
nullがある言語の時点でCに限らず実行時に判別だろう
スレチだけど void a(int &x); void xxx( int *p) { a(*p); } これでxxxの呼び出しでNULLが渡されたときに例外はどこで発生する?
943 :
デフォルトの名無しさん :2013/08/10(土) 16:33:13.41
意味がよくわからないなあ nullを許容するのにオプションじゃないのか
944 :
デフォルトの名無しさん :2013/08/10(土) 16:34:18.21
>>942 例外は発生しない
未定義の動作なのでこれすら保証なし
>>942 例外の有無そのものが処理系に依存する
また出来上がるコードは最適化による
だがどちらも一般的なコンパイラなら
恐らく関数呼び出しの直前にアクセス違反になる
(アセンブラ的にはpushしてからcallだから)
946 :
デフォルトの名無しさん :2013/08/10(土) 16:46:35.03
>>945 >恐らく関数呼び出しの直前にアクセス違反になる
肝心な部分が書いてなかった
aの呼び出しの直前にアクセス違反になる
948 :
946 :2013/08/10(土) 17:05:28.28
あれー試してみたらgcc 4.8.1/clanf 3.3 + O0だと
何事もなくa関数内まで通ってしまった
http://ideone.com/aRBXa0 デリファレンス処理そのものがコンパイルの時点で消えるようだ
ちょっと仕様読んでくる
> a(*p); この呼び出しではデリファレンス不要だから呼び出し時には例外は発生しない。 けれど、無効なポインタを字面上だけでもデリファレンスしたから無効と言う解釈かね。
950 :
946 :2013/08/10(土) 17:38:36.67
>>949 >この呼び出しではデリファレンス不要だから呼び出し時には例外は発生しない。
処理系依存なので、動作そのものはこの時点で未定義動作に突入(=エラー)だと思います。
C言語でx^3+x-3=0みたいな高校数学で出てきそうな方程式を解くのにはどうすればいいですか
powとかsqrtとか使う
数学ができてプログラムが組めないのは素質がないとしか言いようがない
955 :
デフォルトの名無しさん :2013/08/10(土) 20:19:14.49
ニュートン法の場合、手動で微分をしない(できない)時、数式の認識と微分がいるのでは。
while ( 1 ) { char data[3]; fgets( data, sizeof(data), stdin ); fflush( stdin ); } ↑で標準入力のバッファクリアできるとか書かれてたから試してみたけど バッファクリアできねえじゃねえかwwwwwww fgetcとかでバッファクリアするしかねえんだな
958 :
957 :2013/08/10(土) 21:22:44.03
>>957 少し訂正
VC2010の処理系だとfflushでちゃんと標準入力のバッファクリアできてたわ
Linuxのgcc4.8だとerrno=29 シーク無効が返ってきてバッファクリアできなかった
でも、移植性考えるならfgetcでバッファクリアさせたほうがよさそうだな
//こんな感じ? void next_line(FILE* fp){ int i; do { i = fgetc(fp); } while( (i != EOF) && (i != '\n') ); }
stdinがfflushできない糞OSなんて実在すんの? なんかの組込み用特殊OS?
未定義なんだからできなくても糞とはいえなくない……?
962 :
957 :2013/08/10(土) 22:13:06.20
>>960 普通にCentOS 6.4だからRedHat系Linuxだぜこれがw
今度仕事で久々にコンソール入力のプログラム作ることになったから、
ユーザ入力用の部分どうしようかと思ってfgetsで適当に組んでみたらfflushで標準入力クリアできない事に気づいた。
処理系はgccの4.8だから最新バージョンなんだけどな。
>>959 商用だからもっと厳密にエラー処理考えてやるけどほとんどそんな感じのフラッシュ関数作ることになりそうだね。
963 :
957 :2013/08/10(土) 22:14:37.01
>>960 このスレにも fflush が OS の機能だと思ってる奴がいるんだ...
fflushはOSの機能でもあるだろ。 ハードウェアや言語の機能でもある。 バッファが用意されてる所全て。
fflushはOSでも言語でもハードウェアでもなくライブラリの機能だな 細かい実装がどうだなんて関係ないし
>>965 stdin よりの下のレイヤで入力を抱え込んで掃き出さないでいる、っていうことがあるの?それはOSに存在するの?
>>957 そんな事が出来るとデマ飛ばしてるソースは?
そこですか? バッファって知らないの? syncってコマンド知らないの?
970 :
デフォルトの名無しさん :2013/08/11(日) 09:41:37.89
バカバッファ
stdin って書いてあるのに sync とか、馬鹿すぎる。
うわー いるよねstdinが特別だと思ってる人
うわー、fflushでぐぐると有害ページがトップにでてくる。 wahocのセンセーも間違えてるし、相当に根が深いな。 デマの元はどこだろう。
>>973 sync がリード側になんか作用するんか?
>>975 それは単に処理系固有の動作だからデマでは無い
978 :
デフォルトの名無しさん :2013/08/11(日) 09:59:12.05
>>476 出力ドライバ(ストリーム)が出力しないと決めたら
いくら命令したって来るわけ無い
そういう当たり前の事を理解してないという事
stdinが最初からunbufferedであることなんて全然保証されてない
だからこそsetvbufする場合が出てくるわけ
もちろんそれで必ずすぐ入力が来るなんてことも保証されない
>>968 MS-CやLSI-C ではできたように記憶しているベンダ独自の仕様だね
syncはstdinは勿論、その他のstdioのストリームにはなんの作用も及ぼさない 痛々しいほどのフルボッコ
QzってLSI-Cの動作知ってるほどジジイなのに、どうして未だにあれ程のヘボなんだろう。
>>981 頭悪いからに決まってるだろ
しかも最悪な事にその自覚がないw
>>980 stdout は、ブロックデバイスにリダイレクトされてるかもしれないから、sync に関連しなくも無い。
しかし、stdin は、仮にブロックデバイスにリダイレクトされていてもリード側だから、sync には関連しようが無い。
中途半端な知識で知ったかして自爆する例 ⇒
>>973 >>976 も多分似た様なモンだが、言ってることが支離滅裂すぎて、なんもいえねー状態 (w
まあいつものQzの自演だろ
>>977 だから、もともとデマじゃないって。
fflush(stdin) が処理系固有の動作って言うのは、相当有名な話だぞ
>>983 ブロックデバイス介したら結局OSより下位で止まるじゃん
あ
>>984 それが今の話になんか関係するのか?
Raw/Cooked モードとか誰でも知ってるような話には興味ないから、チラシにでも書いとけよ。
面白い人だな。 俺も一言言わせてもらおう stdinにsyncするなんて誰も言ってないよ? OSより下位の入出力で止まるって事が主題で バッファって知ってる?って意味の補強で言っただけだよ? 叩くことに集中しちゃって中身見えてないよね
>>991 主題が違うよ
>>965 >fflushはOSの機能でもあるだろ。ハードウェアや言語の機能でもある。バッファが用意されてる所全て。
本当なの?
stdio ライブラリってその中だけで完結しているんじゃないの?
read() write() 以外の低水準IOを呼び出しているの?
>>991 > stdinにsyncするなんて誰も言ってないよ?
967 ◆QZaw55cn4c [sage] 2013/08/11(日) 07:30:31.31 返信 (1)
stdin よりの下のレイヤで入力を抱え込んで掃き出さないでいる、っていうことがあるの?それはOSに存在するの?
969 デフォルトの名無しさん [sage] 2013/08/11(日) 09:40:58.83 返信 (1)
そこですか?
バッファって知らないの?
syncってコマンド知らないの?
995 :
デフォルトの名無しさん :2013/08/11(日) 11:01:13.36
>>994 それはちゃんと説明したぞ
>バッファって知ってる?って意味の補強で言っただけだよ?
うめ
>>995 ストリームのバッファと OS (と言うかドライバレベル) のバッファの区別付いてるか?
埋め
>>993 >本当なの?
>stdio ライブラリってその中だけで完結しているんじゃないの?
>read() write() 以外の低水準IOを呼び出しているの?
何言ってるのかわからない
libcを界面としてればfflushがOSを介する機能か直接的な実装かは確定しないが
libc自体は何かしらOSやハードに依存した機能使うに決まってるだろ
どうやって何も介さずに物理デバイスに入出力するんだよ
>>997 概念は同じだろ
とにかく叩きたいってのが先行して主題が見えてないだろ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。