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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 115
http://toro.2ch.net/test/read.cgi/tech/1368444993/
★過去スレ
http://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++の宿題片付けます 164代目
http://toro.2ch.net/test/read.cgi/tech/1370255305/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/C/C++の宿題片付けます 165代目
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
2デフォルトの名無しさん:2013/07/13(土) 12:47:03.18
惑星の軌道計算はCでも結構遅くないか?
3デフォルトの名無しさん:2013/07/13(土) 14:27:09.15
叩き台のup
4デフォルトの名無しさん:2013/07/13(土) 15:05:13.54
>>1
Part11乙
5デフォルトの名無しさん:2013/07/13(土) 15:14:38.53
前スレ
C言語なら俺に聞け(入門編)Part 116
http://toro.2ch.net/test/read.cgi/tech/1371208925/
6デフォルトの名無しさん:2013/07/13(土) 15:53:17.12
Cで動的にライブラリ読み込むのどうすんだっけ?
7デフォルトの名無しさん:2013/07/13(土) 15:55:57.93
OS依存
8デフォルトの名無しさん:2013/07/13(土) 18:29:51.46
客先常駐で偉そうな客先社員に見下されて何の経験にもならない雑用を押し付けられて精神病むのがオチw
30代で常駐先がなくなって未経験の異業種で人生やり直すのがオチw
常駐先企業の人件費抑制に利用されただけの人生だったな残念w

システムエンジニアになろう〜新入社員研修編〜
ttp://www.nicovideo.jp/watch/sm4010880
9デフォルトの名無しさん:2013/07/13(土) 21:13:35.02
惑星の楕円軌道って公式あんの?
つか楕円軌道の公式あっても今回の話は他の惑星の重力の影響があるから使えないか。
10デフォルトの名無しさん:2013/07/13(土) 21:14:37.43
近日点移動も考慮しなきゃいけないのか?
11デフォルトの名無しさん:2013/07/13(土) 21:21:50.45
アインシュタインかニュートンの運動方程式を解くんだ。


N 体シミュレーション初春の学校教科書
http://home.f08.itscom.net/okuya8/nnodysimulation.pdf

Rで多体問題を数値解析 - 餡子付゛録
http://d.hatena.ne.jp/uncorrelated/20130618/1371565502
12デフォルトの名無しさん:2013/07/13(土) 21:22:18.12
>>9
ある程度以上真円軌道でないと惑星と認められないので気にしない方向で
13デフォルトの名無しさん:2013/07/13(土) 21:30:46.23
水星の近日点移動
海王星の発見に大きな貢献をしたルヴェリエは、水星の近日点移動の問題にも気づき、この問題を解決するための仮説を模索し計算をおこなったが、水星の内側に新たな惑星は発見できなかった。
ルヴェリエの計算によれば、このうち38.3秒の分だけがニュートン力学に基づく計算値によっては説明できないで残るとされた。

この問題の解決は、数十年後に意外な形でえられた。
重力の扱いについて一般相対性理論を目指して格闘していたアインシュタインは、1915年11月18日に、彼の重力場の方程式から水星の近日点移動が定量的に予測できることを発見した。
水星のその予測された移動の量は、ルヴェリエ以後の研究でも説明不可能と見なされた43秒の分まで観測値とほぼぴったりと一致していたのである。
http://www1.kcn.ne.jp/~h-uchii/intro.PS/perihelion.html
14デフォルトの名無しさん:2013/07/13(土) 22:10:46.44
static const int x=10;
と、グローバル空間で宣言して

static const int Inv_x_= 1.0/x;
と、関数内で定義するとエラーが出てコンパイル出来ない・・・
C++だと通るけどCだとエラー出ます。
原因と対策を教えて下さいorz
15デフォルトの名無しさん:2013/07/13(土) 22:12:22.31
変数を使って初期化できないコンパイラなんじゃねえの
16デフォルトの名無しさん:2013/07/13(土) 22:14:27.24
>>14
C言語では const int が変数だから
17デフォルトの名無しさん:2013/07/13(土) 22:19:25.03
gcc 使ってます。
コンパイルオプション使って解決出来可能でしょうか?
18デフォルトの名無しさん:2013/07/13(土) 22:22:43.52
>>17
#define でおk
19デフォルトの名無しさん:2013/07/13(土) 22:23:37.25
enum { x = 10 };
20デフォルトの名無しさん:2013/07/13(土) 22:24:49.17
>>15>>16
やっぱり変数で初期化がNGなんですね・・・

static const double root_3 = sqrt(3);
ってコードも同様で弾かれます
元々やりたいことは計算量減らしたいだけなんだけど、
おとなしくマクロ使うべきでしょうか?
21デフォルトの名無しさん:2013/07/13(土) 22:25:34.26
constexpr使わないとだめな悪寒・・・
22デフォルトの名無しさん:2013/07/13(土) 22:33:46.03
double root_3;
static int initialized = 0;
if (!initialized){ root_3 = sqrt(3); initialized = 1;}
23デフォルトの名無しさん:2013/07/13(土) 22:56:09.68
C++にしてコンパイルすればいいんじゃねえの
24デフォルトの名無しさん:2013/07/13(土) 22:58:25.50
初期化する関数をこしらえる必要がありそうですね。

今やってるやり方は

double root_3=sqrt(3)
printf("%a",root_3)

で16進法で表して、コピペして、マクロ定義にしてます。
ここらへんもどかしいC言語・・・

>>23
C++でコンパイルすると分けわからないエラー出まくるので
勉強中です
25デフォルトの名無しさん:2013/07/13(土) 23:37:40.29
カッコ付けてgccでやらずに
素直にVC++でやったらええやん
Linuxとか無駄に時間を消耗するだけ
26デフォルトの名無しさん:2013/07/13(土) 23:48:19.71
そんなことはない。
vcのほうが標準的でない仕様。
27片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/13(土) 23:54:26.12
g++でC++11をコンパイルオプションで有効にしてconstexpr使えば問題解決
28デフォルトの名無しさん:2013/07/14(日) 01:40:39.56
取り敢えずmakefileのgccってところをg++変えてみて出来るかやってみたけど
やっぱりコレだけじゃ無理でした。
VC++使いたいけど、組み込みLinux環境なんです。
29デフォルトの名無しさん:2013/07/14(日) 01:45:52.00
#define HOGE_X 10

static const int Inv_x_= 1.0/HOGE_X;
30 ◆QZaw55cn4c :2013/07/14(日) 02:02:10.07
もう #define は時代遅れだからねえ
31デフォルトの名無しさん:2013/07/14(日) 02:03:32.30
プログラムサイズをlsで調べるのが最先端
32デフォルトの名無しさん:2013/07/14(日) 02:07:57.83
> 時代遅れ
?
33デフォルトの名無しさん:2013/07/14(日) 02:13:20.96
Qzは自分がロートル過ぎて全てを時代遅れって事にしとかないと
自分の中で辻褄が合わないんだろ
34デフォルトの名無しさん:2013/07/14(日) 02:15:16.16
>>29
今のところそのようなコードを使ってますが、
ルート3などを定数化するときにちょっと困りました
>>24みたいに書いて一応納得することにしましたが
もう少しキレイに書きたいです。
宣言して、フラグを設けて初期化部分を作る>>22さんの方法も
一つの答えだと思いますが、C++みたいに短く書けるに越したことはないし、
一つの関数でしか使わない定数なので、わざわざマクロ定義するのも
なんか汚いコードな気がして、もどかしいです
(C++でコンパイル出来たらそれに越したことはないですけど)
static const double root_3=sqrt(3);が通ってくれたら
こんなに葛藤することも無かった・・・
35デフォルトの名無しさん:2013/07/14(日) 02:20:33.00
ビルドの最中に数値に展開するソースコード生成する。
36デフォルトの名無しさん:2013/07/14(日) 02:24:32.57
組み込み?でsqrt(3)を使いたいなら、こんな感じ
static const double root_3=1.732050808;//sqrt(3);

手計算できるところはなるべく、即値入れたほうがいいかもね
37デフォルトの名無しさん:2013/07/14(日) 02:27:38.49
>>33
中途半端な知識で知ったかぶると恥をかくぞ。
定数定義限定なら#defineは

× 時代遅れ
○ enumを使うべき

だろう。でもショートコードのマクロ化は#defineじゃないと無理だ。
こういうのは適材適所なんだよ。

マクロも善し悪しで多用すると弊害が大きいけど適切な使用は
十分に利用価値がある。
38デフォルトの名無しさん:2013/07/14(日) 02:28:12.27
悪い>>33じゃなくて>>30だったわ。
39 ◆QZaw55cn4c :2013/07/14(日) 02:30:30.19
√3 を算出するコストは今ではたいしたことはない、とわりきるか、値を自分で書いてコメントを付けておくか
40デフォルトの名無しさん:2013/07/14(日) 02:32:06.23
富豪プログラムできる環境ばかりじゃないんだよ
41 ◆QZaw55cn4c :2013/07/14(日) 02:33:19.73
>>37
>定数定義限定なら#defineは
>× 時代遅れ
>○ enumを使うべき

今は浮動小数点の定数定義の話なんだと思っていましたが?enum で浮動小数点を定義できるとでも?
42デフォルトの名無しさん:2013/07/14(日) 02:35:35.70
そもそも#defineが時代遅れとか言うやつは定数定義しか
用途がないと勘違いしているアホだから。
#defineはマクロであって定数を定義する手段ではない。
マクロを使う機会は確かに減ったが、なくなっていいもの
でもない。
普通にコード書いてもいいけどマクロが使えたほうが便利
というシチュエーションはある。
43 ◆QZaw55cn4c :2013/07/14(日) 02:37:07.31
>>40
ではもう
double r5 = 2.2360679 // 5^0.5
とでもするしか‥‥ >>36 で既出でしたね。

コンパイル時にコード生成で math のライブラリ関数を呼び出すというのは、なかなかに凝ったコンパイラだと思います
44 ◆QZaw55cn4c :2013/07/14(日) 02:39:23.40
>>42
java とか c# ではマクロがなくなっていますが、それは理由があるとおもいますよ
45デフォルトの名無しさん:2013/07/14(日) 03:00:14.79
とJavaもc#も使えないボンクラがなんか言ってる
46 ◆QZaw55cn4c :2013/07/14(日) 03:13:19.58
>>45
それはそのとおりですがそう判断した理由は?
47デフォルトの名無しさん:2013/07/14(日) 03:37:49.28
>>44
javaやC#はそもそもクラス型設計から(C++を反面教師として)
スタートしてるから、そもそもマクロは使わない言語設計だから。
Cの世界では制御構造がクラス型に比べて制限されるんで、
マクロがあると便利なことがある。なくてもコードは書けるが。
ただCのマクロを時代遅れの一言でバッサリやるのはただの馬鹿。
48 ◆QZaw55cn4c :2013/07/14(日) 04:06:16.84
>>47
OOとマクロとは関係ないと思いますよ
マクロはIDEとの親和性を破壊するから、だと思っていますけれどもマクロやテンプレート様は文脈を著しく発散させますからね
まあ IDE の支援を「進歩的」、IDE を疎外する存在は obsolete と決め付けるのもどーかとも、まあ思いますが
49デフォルトの名無しさん:2013/07/14(日) 04:46:24.43
組み込みのくせにsqrtを使おうとは生意気だ
50デフォルトの名無しさん:2013/07/14(日) 04:58:50.66
テンプレートは言語仕様であってOOじゃねーよ馬鹿。
やっぱこいつ知ったかぶりだけなんだな。
51デフォルトの名無しさん:2013/07/14(日) 06:31:39.85
お前らカリカリしないで、渾身の自爆ギャグでなごもうぜ。
www54.atwiki.jp/qzaw55cn4c/pages/16.html
www54.atwiki.jp/qzaw55cn4c/pages/17.html
52デフォルトの名無しさん:2013/07/14(日) 07:48:02.81
バカな素人の思い込みを一々まともに相手する必要はないだろ
53 ◆QZaw55cn4c :2013/07/14(日) 08:38:41.10
>>50
「テンプレートは言語仕様であってマクロじゃない」っていいたかったの?
54デフォルトの名無しさん:2013/07/14(日) 09:58:57.11
>>47
制御構造にマクロを使う(#define の中で goto)のは
マクロと goto の最悪コンボ

窓から突き落とされるぞ
55デフォルトの名無しさん:2013/07/14(日) 10:03:25.20
>>51
ウンコに触って喜ぶのは小学生まで
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です


ユーザーが入力することなくプログラムが終了してしまうのです。
ユーザーに入力させたいのです。
どうしたらいいのでしょうか?教えてくださいお願いします。
58デフォルトの名無しさん:2013/07/14(日) 11:25:47.21
>>57
freopen
5957: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;
}
6057:2013/07/14(日) 12:40:46.99
>>58
freopen("/dev/tty", "r", stdin);
にしたところ期待通り動作するようになりました。
解決しました、ありがとうございました。
61デフォルトの名無しさん:2013/07/14(日) 23:09:12.13
でもそんなプログラムあったらキレる
62デフォルトの名無しさん:2013/07/15(月) 10:39:06.08
freopen じゃないけど stdin と tty 別々に開いて入力してるのはあった
GnuPG とか
63デフォルトの名無しさん:2013/07/15(月) 14:13:57.28
for文を使ってifは使わないで
■□■
■■■
■□■
みたいな処理をさせたいのですがどういう風に処理させたらいいですか?
白いところを黒いところに混ぜていくやり方がわからないです
64デフォルトの名無しさん:2013/07/15(月) 14:21:34.32
ary[] = {B, W, B, B, B, B, B, W, B}
65デフォルトの名無しさん:2013/07/15(月) 14:23:00.83
配列つかわないとやっぱり無理ですかね‥
66デフォルトの名無しさん:2013/07/15(月) 14:27:10.41
斜め方向はクロネッカーのデルタを使えばいい
x=0とX=maxはy方向に全部埋めればいいんでしょ
3つに処理を分ければif文不要
67デフォルトの名無しさん:2013/07/15(月) 14:29:12.27
(x==0)|(x==2)|(y==1)
68デフォルトの名無しさん:2013/07/15(月) 14:30:43.82
if文も三項演算子も同じ括りなんでしょ?
69デフォルトの名無しさん:2013/07/15(月) 14:33:05.93
>>63
for (i = 0; i < 9; i++)
(i / 3) % 2 + (i + 1) % 2;
70デフォルトの名無しさん:2013/07/15(月) 14:35:29.28
>>63
この質問で分かるのか。
エスパーさすがだな。
71デフォルトの名無しさん:2013/07/15(月) 14:36:43.07
>>69
それ任意のn×nでも使えるかな
72デフォルトの名無しさん:2013/07/15(月) 17:44:24.38
多次元配列って何次元まで可能なんですか?

int x[10][10][10][10][10];

5次元までエラー出ませんでした。皆さんは何次元まで
可能でしたか?
73デフォルトの名無しさん:2013/07/15(月) 17:46:58.59
メモリの許す限り行けそうな気がする。
74デフォルトの名無しさん:2013/07/15(月) 17:47:43.56
そんなもんコンパイラとコンパイル設定と実行環境次第だろ
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にて
76デフォルトの名無しさん:2013/07/15(月) 17:54:39.80
>>75
そこまで増やすと
スタックエラー出ませんか?w
恐ろしくてできないw
77デフォルトの名無しさん:2013/07/15(月) 18:03:57.13
規格では最低12次元。これを超えるものはコンパイルエラーにしても良い。
78デフォルトの名無しさん:2013/07/15(月) 18:05:04.42
でも多次元配列は必ずmallocしないといけないのが難ですよね。
79デフォルトの名無しさん:2013/07/15(月) 18:23:14.54
そもそも1次元で済むのに多次元使うのアホらしい
80デフォルトの名無しさん:2013/07/15(月) 18:43:40.75
変数名って最長100文字らしいね
自由じゃないのかよ
81デフォルトの名無しさん:2013/07/15(月) 18:51:59.19
C言語ってアメリカみたいだよな
自由といいつつ制限だらけ

変数名に制限あり(printfとか予約後はダメ)
82デフォルトの名無しさん:2013/07/15(月) 19:03:52.26
PCゲームの9割はC言語で作ってるんだろ?
需要高いし一生衰退しないだろうな
83デフォルトの名無しさん:2013/07/15(月) 19:07:51.03
>>80
色んな環境があるから限界値の設定は必要。

>>81
printf は、予約語じゃないだろ…
84デフォルトの名無しさん:2013/07/15(月) 19:10:01.59
>>83
いや彼は予約【後】とちゃんと言っているんだが
85デフォルトの名無しさん:2013/07/15(月) 19:11:44.99
そもそも自由なんて言ってないし
86デフォルトの名無しさん:2013/07/15(月) 19:12:09.15
夏厨
87デフォルトの名無しさん:2013/07/15(月) 19:45:18.98
Cはコンパイラがいらないから人気あるんだろう
88デフォルトの名無しさん:2013/07/15(月) 19:54:33.46
>>80
規格上は最長の規定はない。処理系毎の最長値はある。
89デフォルトの名無しさん:2013/07/15(月) 19:59:55.81
最低何文字までは保証しなければいけない、というのはあったよな
90デフォルトの名無しさん:2013/07/15(月) 20:04:43.39
今まで1000字を超える変数名とか見たことないが
安全性などを考慮して組み込み系では1万文字超える変数名もザラだって聞いたな
91デフォルトの名無しさん:2013/07/15(月) 20:09:15.21
リンカ次第だし何文字までとかCの側で一方的に決められるのか?
92デフォルトの名無しさん:2013/07/15(月) 20:11:16.65
リンカとコンパイラの違い教えて
分らん
分ったところでプログラミングと関係ないけど
93デフォルトの名無しさん:2013/07/15(月) 20:16:20.58
ソースファイルからオブジェクトファイルを作る奴と
オブジェクトファイルを結合して実行ファイルを作る奴
94デフォルトの名無しさん:2013/07/15(月) 20:17:00.49
ソースファイルから直接実行ファイル作ればいいじゃん?
何だよオブジェってw
95デフォルトの名無しさん:2013/07/15(月) 20:19:43.19
>>92
簡単に言うと↓の通り。
コンパイラは、言語を機械語に翻訳するだけ。
リンカは、翻訳された各機械語をくっつけるだけ。
96デフォルトの名無しさん:2013/07/15(月) 20:44:05.86
うむ、下々の惨めなプログラマもどきは知らずともよい
知る必要のないことじゃ
97デフォルトの名無しさん:2013/07/15(月) 20:45:19.56
>>94
超巨大なプログラムソース1000万行があったとして,一箇所修正したら,全部をコンパイルしなおすなんて無駄でしょう?
だから或る程度の規模のソフトウェアになると,複数の *.c ファイルをそれぞれコンパイルして,あとで一つにまとめる,という手法を使います.
今はちゃんとした OS ですらソースを公開しているし,一度眺めてみるとかカーネルビルドしてみるとか,おすすめです.
98デフォルトの名無しさん:2013/07/15(月) 20:58:22.13
HeadFirstCにリンカへのインタビューが載っているから見てくるといい
面白い
99デフォルトの名無しさん:2013/07/15(月) 21:18:08.61
>>97
ああそう言えば分割コンパイルをしない奴がいたっけなあ
平日の深夜とか昼間にレスする奴
100デフォルトの名無しさん:2013/07/15(月) 21:29:28.22
>>97
うーん意味分からないですね。
腐ったみかんじゃないけれど
一つ修正したら他は修正しなくていいって
器用すぎませんか...まぁそういうもんだということで。
101デフォルトの名無しさん:2013/07/15(月) 21:35:49.84
> 一つ修正したら他は修正しなくていいって
一般人にそういったことはできないでしょう

どっか修正したら、他に影響して、終わりなき道を進む...
102デフォルトの名無しさん:2013/07/15(月) 21:41:15.91
そんなのは設計の段階で間違ってるだろw
103デフォルトの名無しさん:2013/07/15(月) 21:43:25.68
ソースを書いたら終わりだと思ってる人たちがいるからね
104デフォルトの名無しさん:2013/07/15(月) 21:45:57.59
>>100
そうなるように作るの
器用とかの問題じゃない
105デフォルトの名無しさん:2013/07/15(月) 21:46:03.98
趣味プロなら
書いて終わりでしょ
組み込みやWebならそうはいかんけど
結局趣味レベなら動けばいいんですよ
106デフォルトの名無しさん:2013/07/15(月) 21:49:12.15
>>105
そりゃそうだな
107デフォルトの名無しさん:2013/07/15(月) 21:54:53.03
95が出た頃と比べるとプロセッサ性能1億倍近く上がってるんだし
どんな冗長なプログラム書いても一緒ですよ
108デフォルトの名無しさん:2013/07/15(月) 22:07:51.51
>>100
複数の .c にわけることで変数/関数のスコープも制御できるし
ある一つの .c をコンパイルするときに、他の .c には影響しない風にできるんだったら、そうしたほうがいい、それが分割コンパイル&リンクなんだ
109デフォルトの名無しさん:2013/07/15(月) 22:08:59.89
>>107
とりあえずお前が大規模開発したことがない事はわかったから、黙ってろ
110デフォルトの名無しさん:2013/07/15(月) 22:09:17.82
>>105
趣味プロでも、どこぞの別ソースを利用するときには、いっそ *.c を別にしますね
sha*** のハッシュ関数とか、メルセンヌツイスタとかね
111107: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
>>110
どうも
114デフォルトの名無しさん:2013/07/15(月) 23:15:55.24
>>112
え?
CPU のクロックって久しく 4G 超えは販売されていないようだけど、あ、プレスコットってどうだったっけ?
115デフォルトの名無しさん:2013/07/16(火) 00:45:01.70
クロック同じでも速くなってるけどな
並列化無関係に
116デフォルトの名無しさん:2013/07/16(火) 01:03:56.42
原発振を逓倍してることでもいってるのかな
117デフォルトの名無しさん:2013/07/16(火) 01:53:57.18
実測
118デフォルトの名無しさん:2013/07/16(火) 08:08:24.37
Core i7 は Pentium Pro の1億倍近くの性能がある?
定量的に何を基準にどういう計算で言っている?
119デフォルトの名無しさん:2013/07/16(火) 13:58:54.89
>>116
まあキャッシュとかバスの転送レートは向上し続けているのでパフォーマンスも向上し続ける。
SoC化とかプロセスルールの微細化とかでシステムがシュリンクするとどんどんそうなる。
120デフォルトの名無しさん:2013/07/16(火) 14:47:42.54
ムーアの法則でwiki検索したら
今のところ1億どころか100億なんだが
40年前は2300
121デフォルトの名無しさん:2013/07/16(火) 15:47:27.92
だから今は鈍ってるんだって
プロセスルールもほとんど限界に来ているし、マルチコアにしてみたものの
OpenMPを使える場面はそれほど多いわけではい

ゲームはマルチコアを積極的に使ってるけどね

その替り民生用量子コンピュータ第一号がついに出てきたな
これも何でも使えるわけではないが、公開暗号キーが解ける可能性が
ある、浮動小数点演算の速度が軽く100倍以上行くなど、PCでも
スパコンに迫る性能を部分的だが獲得出来る可能性が出てきた
122デフォルトの名無しさん:2013/07/16(火) 15:54:29.76
量子コンピュータが速いとは限らない。
販売されている量子コンピュータがスパコンを超えてる可能性はかなり低い。
123デフォルトの名無しさん:2013/07/16(火) 17:10:49.47
電磁気デバイスやっぱりもうダメなのかな。
プラズマとかを媒体にすればいいのではないか?
プラズマコンピュータ発売されてなかったっけ?
124デフォルトの名無しさん:2013/07/16(火) 17:23:43.84
回路はプログラミングできないからなー
効率良い配置とか絶対あるんだろうけど
125デフォルトの名無しさん:2013/07/16(火) 17:32:30.81
いや回路をプログラミングしてますが
126デフォルトの名無しさん:2013/07/16(火) 17:35:52.20
いや基盤の話ね
127デフォルトの名無しさん:2013/07/16(火) 18:06:02.86
手書きエッチングでもしてるのか?
128デフォルトの名無しさん:2013/07/16(火) 20:20:50.83
念写だよ
129片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/16(火) 20:28:43.86
プログラムを電気回路図に変換なんてずっと前からやってるし。
グラフ理論を猛勉強させられるらしいな。
130デフォルトの名無しさん:2013/07/16(火) 20:43:03.77
ただ「変換」するのではなく、最適化しなければ仕事が来ない
131片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/16(火) 20:44:52.74
コモディティ化とブラックボックス化がこれ以上進むと、アセンブラや電気工作がムダ知識になっちゃうんだろうな
132デフォルトの名無しさん:2013/07/16(火) 20:49:25.53
おバカな「最適化」にクレームたれる能力も必要
133片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/16(火) 21:00:19.43
回路の基本設計もスパコンでやる時代だからな。
134デフォルトの名無しさん:2013/07/16(火) 21:03:50.21
コンピューターノセッケイニ、ニンゲンナンテヒツヨウアリマセン。
135デフォルトの名無しさん:2013/07/16(火) 21:07:07.88
ドラえもんはまだできてないんだよ
136デフォルトの名無しさん:2013/07/16(火) 22:21:02.11
Intelに入りたい
137デフォルトの名無しさん:2013/07/16(火) 22:25:22.64
メモリはどんどん大容量化するのにCPUは何で性能伸びないくせに
馬鹿でかいまんまなんだろう
138デフォルトの名無しさん:2013/07/16(火) 22:27:16.95
>>137
PAD limit

それはそうとスレチじゃね?
139デフォルトの名無しさん:2013/07/16(火) 22:34:16.14
CPUだけの塊をロシアとか土地の広い場所に作って、そのCPUをネットで
利用するような事は無理なのか?
140デフォルトの名無しさん:2013/07/16(火) 22:35:31.43
>>139
スパコンでやってるじゃん
ロシアじゃないけど
141デフォルトの名無しさん:2013/07/16(火) 22:37:06.65
PS3を1億台くらい用意してさ
142デフォルトの名無しさん:2013/07/16(火) 22:46:25.61
極地方なら冷却が捗りそうだな
143デフォルトの名無しさん:2013/07/16(火) 23:08:13.99
>>141
ファンヒーターだな。寒冷地に設置してもらいたい。
144デフォルトの名無しさん:2013/07/16(火) 23:10:12.22
そっかw
寒冷地だと馬鹿重いファンがいらないのかwww
145デフォルトの名無しさん:2013/07/16(火) 23:14:12.75
コールドスタートに予熱が必要で
バッテリーも常に暖めておかないといけない
どっちにしても戸外環境との敷居は必要なのでラジエータ及びファンは必須
146デフォルトの名無しさん:2013/07/16(火) 23:19:20.88
バッテリーを屋外におけばいいじゃん
147デフォルトの名無しさん:2013/07/16(火) 23:25:36.84
ロシアの寒冷を定量化したら電気代10京円分だぞwww
148デフォルトの名無しさん:2013/07/16(火) 23:29:22.64
それに見合う性能があればペイできるんじゃない?
149デフォルトの名無しさん:2013/07/17(水) 01:41:44.04
main関数内で二次元配列を宣言して、とりあえず値を格納させ、別に宣言した関数にその二次元配列を引数として渡して値を上書きする方法を考えているのですが、どうも思いつきません。
よろしければヒント等を教えていただけないでしょうか。
150デフォルトの名無しさん:2013/07/17(水) 01:46:24.20
> どうも思いつきません。
誰か考えて?
151デフォルトの名無しさん:2013/07/17(水) 01:53:56.70
二次元配列嫌いだからなあ
気が進まない
152デフォルトの名無しさん:2013/07/17(水) 01:57:21.03
なにをしたのか、書いてくれんとね
153デフォルトの名無しさん:2013/07/17(水) 02:01:03.45
>>152
何をした、以前の問題で何をすればいいのか分からないところです。
154デフォルトの名無しさん:2013/07/17(水) 02:03:11.08
二次元配列を諦めて
一次元配列で扱えば良い

割とマジで

2つ目の要素数が決まってるなら手段があるけど、
不定だと本当に手段が無い
155デフォルトの名無しさん:2013/07/17(水) 02:03:31.06
じゃあ、一次元配列なら出来るの?
156デフォルトの名無しさん:2013/07/17(水) 02:04:18.83
#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
ポインタ配列?ってやつを使えばいいんでしょうか…?
158デフォルトの名無しさん:2013/07/17(水) 02:06:30.30
>>149
一次元配列を宣言して、関数に渡して値を上書きする方法は分かる?
159デフォルトの名無しさん:2013/07/17(水) 02:08:01.15
>>158
分からないです。
160デフォルトの名無しさん:2013/07/17(水) 02:24:36.63
本読めって、言いたくないほうだけど
入門書読んでね
ってとしか
161デフォルトの名無しさん:2013/07/17(水) 02:47:58.53
漠然とした質問だと、答えが中々返ってこない。
一つ目の方法は、「こういう事をしたいのだが、はどうすればできるか?」と具体的に聞いてみる。
二つ目の方法は、入門書の、「配列とポインタ」、「関数を使った処理」が書いてあるところを読む。
その上で、分からないところがあれば、「これはどういうこと?」と聞いてみる。

一つ目は、解決が差し迫っているなら有効だけど、上手に聞かないと回答がこないかも。
162 ◆QZaw55cn4c :2013/07/17(水) 03:30:58.65
>>149
http://codepad.org/OEL84wkY
前も似たようなコード書いた、これって需要があるの?
163デフォルトの名無しさん:2013/07/17(水) 04:07:30.79
mainだけで動くもの作って、関数化していくってのも手なんだけど
右も左もわからず、いきなり高度なことやろってのがよーわからんのよね
164デフォルトの名無しさん:2013/07/17(水) 04:31:37.42
まず、main関数でa[][]の初期設定(値の格納)

関数を用いて、a[][]の一部を上書き
↓(これを複数回)
最終的にmainの最後で表示

という流れをやりたいです。
オセロの盤面みたいな感じで操作ごとに一部を上書きしたいと思っています。
二次元配列を利用した理由はまた同じ例になりますが、オセロの盤面の1マスを二次元配列の1要素に見立てたいと思ったからです。

値渡しとポインタ渡しの所が少し自分の中で混ざって解釈してる気がしたので、ここで質問し、そこの部分の確認もしたいと思っていました。
165デフォルトの名無しさん:2013/07/17(水) 05:04:35.85
上書き=代入でいいんだよな?
166デフォルトの名無しさん:2013/07/17(水) 05:14:16.07
すでに格納してあるcharの1文字を別の1文字に書き換えて、mainでも保持させたいということです
167デフォルトの名無しさん:2013/07/17(水) 05:28:16.53
オセロなら0と1で表現できるからint型でもいいと思うよ
168デフォルトの名無しさん:2013/07/17(水) 05:41:45.36
>>167
オセロの盤面は例であって、オセロではないのでintではなくcharで扱いたいです。
169デフォルトの名無しさん:2013/07/17(水) 06:04:34.25
>>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]などのアドレスを保持させる意味がわからないんですが・・・
170 ◆QZaw55cn4c :2013/07/17(水) 06:12:30.61
171デフォルトの名無しさん:2013/07/17(水) 06:13:36.01
多分、二次配列、と参照渡しの複合問題だからそれぞれ別々に考えたほうがいいよ
172 ◆QZaw55cn4c :2013/07/17(水) 06:17:31.31
>>169
http://codepad.org/yORMquQm
でいいのなら、>>162>>170 は忘れてください
173デフォルトの名無しさん:2013/07/17(水) 08:03:50.15
ホントに1バイトのcharでいいなら代入で上書きできるけど、
たとえば、Windowsでなんの工夫もしなければ、
○も●も2バイトになるよ。char[3]
174デフォルトの名無しさん:2013/07/17(水) 08:07:33.22
>>169
配列ary[6][6]があったとして
ary[0][0],ary[0][1],...,ary[0][5],ary[1][0],...,ary[5][5]
は、配列だからアドレスが連続です。それが配列の特徴
175デフォルトの名無しさん:2013/07/17(水) 10:00:00.65
>>169
ary[1][0]のように1, 0を指定したら、ary[1][0]の記憶領域のアドレスを計算してくれるんだよ
176デフォルトの名無しさん:2013/07/17(水) 11:18:12.55
コンソールで
scanf関数を抜ける事ってできますか?
一定時間入力が無かったらスルーみたいな事はできないですかね?
177デフォルトの名無しさん:2013/07/17(水) 11:26:47.21
178デフォルトの名無しさん:2013/07/17(水) 11:31:04.55
>>177
いやCygwinで無理ですか?
端末上で行うゲームを作りたいんですが、繰り返し制御の中で
scanf使うと思うんですけど入力が無いときも処理が進むようにしたいんです。
179デフォルトの名無しさん:2013/07/17(水) 12:00:00.95
cygwinってunixと似てる
180デフォルトの名無しさん:2013/07/17(水) 12:01:42.45
>>178
Cygwinのマニュアル読むなり、テストコード書くなりしてみたら?
10分で終わるでしょ。
終わったら結果報告よろしく。
181デフォルトの名無しさん:2013/07/17(水) 12:16:49.94
signal処理はunixとWindowsで大きく違うところじゃん。
リンク先見てないけどSIGALRMでlongjmpするんでしょ。

> Cygwinのマニュアル読むなり、テストコード書くなりしてみたら?
これが最も早いとは思えないな。
182デフォルトの名無しさん:2013/07/17(水) 12:17:02.20
ゲームならここのgetch()とkbhit()をコピペすればいいんじゃないの。

http://peroon.hatenablog.com/entry/20110730/1311996770
183デフォルトの名無しさん:2013/07/17(水) 12:23:22.34
>>181
そうだね。
ヒント出されても自分で調べたり確かめたりできないから聞いてるんだろうしね。
184デフォルトの名無しさん:2013/07/17(水) 12:40:29.36
何もわかりません
全部、考えてください
って、言ってる?
185デフォルトの名無しさん:2013/07/17(水) 12:42:54.39
そもそもゲームでscanf()を使うと言う発想が理解できん。
186デフォルトの名無しさん:2013/07/17(水) 12:51:22.01
もしかして、日本語で動作を考えてるだけ
187デフォルトの名無しさん:2013/07/17(水) 13:04:24.40
配列とポインタアクセスをごちゃごちゃに理解してるような
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=に閾値までいれてどんな役割をこなしているのかわかりません!!
このド低能のクソ豚めにどうかご教授ください!
190デフォルトの名無しさん:2013/07/17(水) 15:32:13.28
>>189
http://hooktail.org/computer/index.php?Perceptron

単純パーセプトロン のところ
 N個 の セル + 閾値判定 を
 N+1個 の セル ただし最終セルは常時閾値となる
に置き換えたモデルだね
191デフォルトの名無しさん:2013/07/17(水) 16:06:28.56
発火判定: Σ(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] で発火判定すれば良いことになるん
192デフォルトの名無しさん:2013/07/17(水) 16:55:34.67
Cの場合、配列は0から数えるからでしょ
193デフォルトの名無しさん:2013/07/17(水) 17:09:24.03
>>185
じゃぁどうやって入力するの?
標準ライブラリだけしか使っちゃいけないなら
scanf必須でしょう?
194デフォルトの名無しさん:2013/07/17(水) 17:12:24.20
標準ライブラリのみって縛りだったらscanf()でタイムアウト処理はムリ。
初心者だからしょうがないけど環境とかこういう条件は最初に言うように。
195デフォルトの名無しさん:2013/07/17(水) 17:13:15.60
入力にscanf使って良いのは初心者向けの入門書だけ。
196デフォルトの名無しさん:2013/07/17(水) 17:32:34.80
>>195
何使えばいいでしょうか?
hで右
gで左
上がy
下がb
という標準キー設定にしたいんですが。
197デフォルトの名無しさん:2013/07/17(水) 17:37:44.25
環境は
と問いかけられてるのスルーする質問者
198デフォルトの名無しさん:2013/07/17(水) 17:40:21.12
scanfの解説でページ数稼げるからかも、入門書系
テスト作って採点するときも楽なのかもね、scanf
199デフォルトの名無しさん:2013/07/17(水) 17:48:44.29
>>197
すいません。
さっきのCygwinです。
200デフォルトの名無しさん:2013/07/17(水) 17:54:27.10
Cygwinなら、ncurses使うのが

とりあえず、このへんから
ttp://www.kis-lab.com/serikashiki/man/ncurses.html
201デフォルトの名無しさん:2013/07/17(水) 18:16:01.58
cygwinでDOSプロンプトでcursesは苦労するかもしれん
なんかローグ動かそうとして苦労した記憶がある
202デフォルトの名無しさん:2013/07/17(水) 18:18:02.66
やりたいことが、入門編じゃないところが...
203デフォルトの名無しさん:2013/07/17(水) 18:23:25.30
>>182 で十分だと思うけどこれをスルーしたってことは>>200とか使うの無理なんじゃないの。
204デフォルトの名無しさん:2013/07/17(水) 18:28:16.92
夏休み中に出来れば、いいのかもね
205デフォルトの名無しさん:2013/07/17(水) 18:32:40.70
結局DXlib使えば楽勝すぎだなw
CUIでゲームとか職人にもほどがある
206デフォルトの名無しさん:2013/07/17(水) 18:34:25.58
scanfがセキュリティ的に危ない関数であるのは分かったけど何故?
格納される変数のサイズ以上に入力されたときも変数を超えてメモリへ格納されるから?
じゃあ何の関数を使えばいい?
207デフォルトの名無しさん:2013/07/17(水) 18:37:33.50
scanfじゃなくて、やりたいことができる自前の関数を作る
自己責任関数がおすすめ
208デフォルトの名無しさん:2013/07/17(水) 18:39:58.90
鯖にしてANSIエスケープシーケンス対応の端末ソフト側に●投げ
入力はノンブロッキングでいけるハズ

本末転倒な解w
209デフォルトの名無しさん:2013/07/17(水) 18:43:03.92
>>206
fgets使えば
210デフォルトの名無しさん:2013/07/17(水) 18:51:13.05
このスレの人はDXlibについてどう思う?
便利過ぎだろって思う?
211デフォルトの名無しさん:2013/07/17(水) 18:56:39.62
便利さならプラットフォーム選ばない分SDLのほうが上
212デフォルトの名無しさん:2013/07/17(水) 19:04:43.55
プラットフォームって何?
OSのこと?
213デフォルトの名無しさん:2013/07/17(水) 19:11:16.71
黙ってろ
214デフォルトの名無しさん:2013/07/17(水) 19:29:58.27
>>212 ← 人生諦めたほうがいい池沼の典型例
215デフォルトの名無しさん:2013/07/17(水) 19:42:21.18
>>206
ちゃんと使えばセキュリティーも問題ないけど使い方がけっこう複雑だし、
仕様とかに精通したって、入門書を卒業して実用的なコードを書き出したら
まず使わないし時間の無駄っていうか。
216 ◆QZaw55cn4c :2013/07/17(水) 21:40:49.68
>>201
昔 CUI 花火のコードを宿題スレで公開した猛者がおられましたが、それを実行したのは cygwin/bash では無理で cmd? いや、もしかすると command.com だったかな‥‥
217デフォルトの名無しさん:2013/07/17(水) 21:49:14.55
昔は int や in/out でグラフィックを扱っていた物だ
218デフォルトの名無しさん:2013/07/17(水) 21:57:39.45
>>216
そのプログラム感動したわ
何年か前だったと思うが今でもおぼえてる
219 ◆QZaw55cn4c :2013/07/17(水) 22:19:24.52
>>218
エスケープシーケンスだけであそこまで出来るなんて‥‥
どなたか URL をご存じないかと‥‥
codepad か ideone なら今でも拾えるはず‥‥

手元に置かなかったのは不覚でした
220デフォルトの名無しさん:2013/07/17(水) 22:24:04.73
初歩的な質問で申し訳ないのですが
例えばint型のnという変数を宣言したとき、
同時にnのアドレスを保持した変数&nも宣言されるのでしょうか。
それとも&nが使われる時にnのアドレスを確認してそのアドレスを格納した変数&nができるのでしょうか。
221デフォルトの名無しさん:2013/07/17(水) 22:36:07.62
>同時にnのアドレスを保持した変数&nも宣言されるのでしょうか。
いいえ

>それとも&nが使われる時にnのアドレスを確認してそのアドレスを格納した変数&nができるのでしょうか。
いいえ

&は「nのアドレスを確認してそのアドレスを」値として返すだけの演算子でやんす
単項のマイナス -n なんかと同じ (nの値を確認してその値の符号を変えたものを返す演算子)
222220:2013/07/17(水) 22:43:25.37
>>221
では++&nなど&n自体を弄ることはできないんですね
マイナスの例えわかり易かったです。ありがとうございました
223デフォルトの名無しさん:2013/07/17(水) 23:43:10.47
マクロの置き換えで、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));
224デフォルトの名無しさん:2013/07/17(水) 23:45:25.04
/*  for (i=0; i<2; i++)*/
   printf("%d\n", A(i));
   printf("%d\n", A(i));
225デフォルトの名無しさん:2013/07/17(水) 23:48:27.87
>>224
アホ
226デフォルトの名無しさん:2013/07/17(水) 23:50:45.06
   printf("%d\n", A0);
   printf("%d\n", A1);
227デフォルトの名無しさん:2013/07/17(水) 23:54:26.45
int *arrayA[] = { &A0, &A1 };
と配列を用意しておいて

#define A(i) (*arrayA[(i)])

こうするぐらいしかアイデアが思い浮かばない
228デフォルトの名無しさん:2013/07/17(水) 23:56:19.42
forは実行時のループ
マクロを展開するためのループじゃねえし
229デフォルトの名無しさん:2013/07/17(水) 23:59:24.22
>>216
多分これじゃないかと思う。
http://unkar.org/r/tech/1217741118/86

回答は多分、
http://unkar.org/r/tech/1217741118/138
のようだけど、アップロードしたサイトは既に閉鎖している
230デフォルトの名無しさん:2013/07/18(木) 00:00:41.74
>>227
ああ、#define使わないでそうした方がいいですかね

>>228
分かった上で一応聞いてみたんだが
231デフォルトの名無しさん:2013/07/18(木) 00:12:02.25
C++のtemplateに逃げる
232デフォルトの名無しさん:2013/07/18(木) 00:14:07.26
自前で展開したソース吐くようなプログラム書けばいいのに
233デフォルトの名無しさん:2013/07/18(木) 00:14:26.59
そもそもわかってるものは、こんなもんにマクロ使おうとしない
234デフォルトの名無しさん:2013/07/18(木) 00:15:17.08
可変個引数マクロで
#define FOR(m, ...) ここは考えろ
FOR(A, 1, 2, 3, 4)
235デフォルトの名無しさん:2013/07/18(木) 00:17:22.42
ここでうだうだ言ってないで、
こつこつ、エディタでコピペしながらやるほうが早かったりして
236デフォルトの名無しさん:2013/07/18(木) 23:44:15.39
いずれは国籍なんて無視して理系及び理系の重要性を認めて理系側についた
人間(ニュータイプ)だけで独立国家のジオン公国つくって、何も生み出す
能力がなく金や資源や穀物を右から左に動かして中間搾取するだけのモラル
の無い腐りきった文系男(オールドタイプ)国家に戦争しかけるのが人類の
最終形態だろう、200年先になるか300年先になるかはわからんが
237デフォルトの名無しさん:2013/07/18(木) 23:54:02.14
C言語やってたら頭ぼけるってあれは嘘だな
細かい事に躓くタイプがぼけるだけで、これやりてーとか
頭ふるちんぽしてたらかなり頭使うからボケない
238デフォルトの名無しさん:2013/07/19(金) 07:42:26.85
簡単に作れるゲームない?
表示とかは記号で十分なんだが
239デフォルトの名無しさん:2013/07/19(金) 08:28:49.54
Tic tac toe
240デフォルトの名無しさん:2013/07/19(金) 13:18:16.01
hangman(単語当て)
数十分もあれば作れるはず
241デフォルトの名無しさん:2013/07/19(金) 14:09:33.82
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)
247デフォルトの名無しさん:2013/07/19(金) 22:18:50.79
char str[]={"apple\0tree\0orange\0notebook\0eggplanet\0jym\0mountain\0"}; // \0をセパレータ \0\0をセンチネル
248デフォルトの名無しさん:2013/07/19(金) 22:52:44.20
>>247
strcatでfgetsで持ってきた文字列を追加した後にヌル文字を付加する感じですか?
249デフォルトの名無しさん:2013/07/19(金) 22:58:08.89
文字列に制限がないなら
char **
250 ◆QZaw55cn4c :2013/07/19(金) 23:41:09.18
>>244
ここはやっぱり
typedef struct {
.....いろいろ
char word[0];
} WORD;
と不定長構造体で決めたいところ
251デフォルトの名無しさん:2013/07/20(土) 06:29:38.69
老人性痴ほう症が進んだか? WWWW
可変長構造体は否定してたんじゃないのか? WWWW
しかもGCCの拡張形式。WWWW
てめーはフレキシブル配列メンバは使用禁止だ WWWW

http://toro.2ch.net/test/read.cgi/tech/1349527750/672
> あと可変長構造体はリッチーはすごく嫌っていたみたい
> http://www.kouno.jp/home/c_faq/c2.html#6
> >ただしDennis Ritchieは「Cの実装への根拠 のない馴れ馴れしさ」と呼んだ。
> C99 では公認されたにしてもちょっとねえ、妙なところは技巧的にいくんだ?
252デフォルトの名無しさん:2013/07/20(土) 07:04:15.11
>>251
半年前のレスを引っ張り出してきて粘着するとか
253デフォルトの名無しさん:2013/07/20(土) 07:40:23.84
半年前の煽りすら記憶しておけない痴呆症 WWWW
254デフォルトの名無しさん:2013/07/20(土) 09:23:53.76
人の噂も75日っていうし、せいぜい2ヶ月くらいだろ
半年も粘着するのは異常
255デフォルトの名無しさん:2013/07/20(土) 09:26:18.29
異常なのは Qz
巣でやってりゃいいのに出てきてゴミをばらまく
256デフォルトの名無しさん:2013/07/20(土) 09:29:11.80
どっちも異常
257デフォルトの名無しさん:2013/07/20(土) 10:48:15.94
www
258デフォルトの名無しさん:2013/07/21(日) 02:13:07.74
ちょっと質問失礼します
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"を付ける
260デフォルトの名無しさん:2013/07/21(日) 03:16:42.01
gccの場合はC++拡張子はcxxかccだったような
最近は変わったのか?
261デフォルトの名無しさん:2013/07/21(日) 04:45:57.91
>>259
普通に出来るみたいで良かった
今まで extern使ってなかったから初めて使ってみます
262デフォルトの名無しさん:2013/07/21(日) 06:56:56.87
gccではC++をコンパイルしないから問題ない
263デフォルトの名無しさん:2013/07/21(日) 07:34:39.86
>>260
GnuCompilerCollection にて c++ をコンパイルするときには、拡張子に関係なく g++ でコンパイルする
gcc 界隈の人達は、c ソースの拡張子は *.c、c++ソースは *.C だったかと。
264デフォルトの名無しさん:2013/07/21(日) 10:20:36.55
申し訳ありません、どこに質問したらわからないのでこちらに質問させて頂きます>_<

malloc(3)やfork(2)などの()内の数字は何を表しているのでしょうか。引数でもないようで調べてもよく分かりませんでした
265デフォルトの名無しさん:2013/07/21(日) 10:57:29.44
man の section 番号

man 3 malloc
266デフォルトの名無しさん:2013/07/21(日) 11:05:42.29
ミニ四駆に組み込みプログラム入れてマグナムトルネードできるようにしたいのですが可能でしょうか?
267デフォルトの名無しさん:2013/07/21(日) 11:12:13.44
忍法帖がLv3なんだけどcookie改造してLvあげることできませんか?
Cで出来たら嬉しいです。
268デフォルトの名無しさん:2013/07/21(日) 11:15:09.14
データはサーバー側で保存してるんじゃないのか
269デフォルトの名無しさん:2013/07/21(日) 11:23:52.29
>>268
いやシークレットモードにしたら別々に忍法帖が出ました。ってことは
完全にブラウザ側じゃないですか?
270デフォルトの名無しさん:2013/07/21(日) 11:36:13.05
>>269
クッキーにはIDだけあって
IDに対応する忍法帖レベルはサーバーで管理してる

誰かからレベルの高いクッキー貰えば使える
HAP=FOXdayoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
みたいなの
271デフォルトの名無しさん:2013/07/21(日) 11:42:29.35
>>270
まじっすか?
くれませんか?
272デフォルトの名無しさん:2013/07/21(日) 11:50:22.62
ならID適当に入れて高いレベル出るまでループすればよくね?
273デフォルトの名無しさん:2013/07/21(日) 11:52:40.98
>>270
それってマジなの?
クッキーごとにサーバーに情報保管してたら
サーバー大変じゃない?いつまで保管していいのかわかんねえし。
274デフォルトの名無しさん:2013/07/21(日) 12:33:16.90
>>273
これまでもちょくちょくリセットあったろ
275デフォルトの名無しさん:2013/07/21(日) 12:47:11.96
>>274
は?
276デフォルトの名無しさん:2013/07/21(日) 12:54:00.13
>>275
ちったぁ自分の頭使え
277デフォルトの名無しさん:2013/07/21(日) 12:57:29.92
>>276
リセットなんて運営者がやろうと思えばできるんで、
リセットされたからサーバーに情報がありますなんてのはバカの考えだと思う。
これが俺の頭を使った結果です。反論ありますか?
278デフォルトの名無しさん:2013/07/21(日) 12:57:48.66
>>273
こういう頭の悪い書込みを未来永劫記録するのに比べれば
ずっとかんたんだよ
279デフォルトの名無しさん:2013/07/21(日) 12:59:59.44
>>278
どこが頭悪いと思う?
クッキーに情報を暗号化して保持する方がよほど合理的だと思うけど。
280デフォルトの名無しさん:2013/07/21(日) 13:01:57.83
>>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
282デフォルトの名無しさん:2013/07/21(日) 13:10:12.66
>>281
実験手順も経過も結果も報告は不要
ってかするな
バカが真似するから
283デフォルトの名無しさん:2013/07/21(日) 13:13:05.32
>>282
まだ答えてもらってないけど、クッキーがIDだけってのはウソなんじゃないの?
リセット以外に根拠あるの?誰かがそう言ってた?
284デフォルトの名無しさん:2013/07/21(日) 13:32:36.42
ボーヤが暴れる夏休み

> まだ答えてもらってないけど、クッキーが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
287デフォルトの名無しさん:2013/07/21(日) 13:41:37.67
何言っても疑うんだから自分の頭使えよ
288デフォルトの名無しさん:2013/07/21(日) 13:43:13.29
>>285
知らんよ。オレIDだけだなんて言ってないし。
カミ付く相手とカミつく場所を間違えてるぞ。ぼーず。
289デフォルトの名無しさん:2013/07/21(日) 13:44:18.07
> ですのでクッキーには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アプリなどどうでもいいし、
暗号を解読するのが難しいのはアタリマエのことです。なぜそんなゴミのような知識で
でしゃばってきたのでしょうか。しかも論破されています。ダサいと思いますよ。
291デフォルトの名無しさん:2013/07/21(日) 14:05:40.13
>>290
それを論破といえるのは頭がどうかしてるだろ
嘘というならその根拠を示せ
嘘であることを示すなら反証をひとつ上げるだけでいいんだから
292デフォルトの名無しさん:2013/07/21(日) 14:06:57.30
>>290
あれで論破したつもりになっているのか。(笑)(笑)(笑)(笑)
http://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%B3%E3%83%91%E3%83%BC%E3%83%AB%E3%83%BC%E3%83%A0
293デフォルトの名無しさん:2013/07/21(日) 14:10:39.64
>>290
>270が半端な知識ででたらめ教えて申し訳ありませんでした。
今後こんな事をしないようにきつく申し付けておきますのでお帰り願えますでしょうか。
294デフォルトの名無しさん:2013/07/21(日) 14:13:16.17
ボーヤ帰った?
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です。バカなのにボーヤをからかってしまいました。
全部クッキーにあるのでソーメーな頭脳で頑張ってレベル上げてください。カシコ
300デフォルトの名無しさん:2013/07/21(日) 14:21:27.81
>>295
全部まとめてIDで不都合無いだろ
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
>>299
黙れバカ。はい論破。
303デフォルトの名無しさん:2013/07/21(日) 14:30:13.66
>>301
勝手な解釈すぎるだろ
とりあえずその質問だか恥の上塗りだかを続ける間はコテをつけてくれ
304デフォルトの名無しさん:2013/07/21(日) 14:32:50.13
>>303
は?はい論破。
305デフォルトの名無しさん:2013/07/21(日) 14:33:33.19
で、今度ボーヤは何を知りたいんだ?
306デフォルトの名無しさん:2013/07/21(日) 14:40:35.61
>>305
ボーヤに論破される頭の悪い老害は引っ込んでてくれないかな、うざいだけだから。はい論破。
307デフォルトの名無しさん:2013/07/21(日) 14:42:20.04
証拠は無いけど気に入らないから嘘に違いない
これが論破だ!
308デフォルトの名無しさん:2013/07/21(日) 15:16:41.56
>>307
あるあるw
・・・おっととマ板でやるべきだな、こりゃ
309デフォルトの名無しさん:2013/07/21(日) 15:32:02.93
夏だなあって思った奴がどれだけ居るかな
310デフォルトの名無しさん:2013/07/21(日) 15:33:01.12
>>307
>>308
ねーよ雑魚ども。さっさと>>270の根拠を言えよ。はい論破。
311デフォルトの名無しさん:2013/07/21(日) 15:57:01.34
>>299が正しくない根拠あげてみ。ボーヤ
312デフォルトの名無しさん:2013/07/21(日) 16:05:53.83
>>311
>>295に書いた。はい論破。
313デフォルトの名無しさん:2013/07/21(日) 16:15:42.90
> 忍法帖(2chCookie)には【お名前】【レベル数】【他ごにょごにょ】が暗号化されている
全部クッキーにあるじゃないですかあああああああ
はい、ロンパース
314デフォルトの名無しさん:2013/07/21(日) 16:38:06.68
以前ニュース速報を見ていたけど、あるときから忍法帖とかスイトンがどうとかってカキコミを
見るようになって、しかも知っていて当然のように語られているのな。
なんでこの連中はこんなこと知ってるんだって思ったわ。
315デフォルトの名無しさん:2013/07/21(日) 17:48:40.51
忍法帖のせいで荒らしとか簡単に出来なくなったわ。
2ちゃんねるって荒らされたくないけど、中傷は放置する最低の
メディアだよな。誰が運営してるかも不透明で本当に不気味。
忍法帖のせいで本当に2chがつまらなくなった。
昔はコピペ荒らしも大量にやってたんだけど出来なくなった。
316デフォルトの名無しさん:2013/07/21(日) 18:23:11.17
ポインタのメリットが分からん
ポインタ使うとメモリ喰らうのに何で使うの?
アドレスと要素を分けて格納ってやっかいじゃないですか?
317デフォルトの名無しさん:2013/07/21(日) 18:41:55.16
おしゃれだから使われてるだけ
318デフォルトの名無しさん:2013/07/21(日) 18:46:44.28
アドレスを参照してから要素に参照してるから
二度手間なんだよなw
最初から変数の値で参照すればいいだけ
ポインタ考えた奴はおしゃれ好きな奴
319デフォルトの名無しさん:2013/07/21(日) 18:51:00.67
ポインタなんか使わないでぜんぶ参照にすればよかったのに。
320デフォルトの名無しさん:2013/07/21(日) 18:58:07.39
オサレに命かけてますから
321デフォルトの名無しさん:2013/07/21(日) 23:07:32.63
ポインタ使うとメモリ喰らう?
322デフォルトの名無しさん:2013/07/21(日) 23:12:23.41
c++ の参照も結局はポインタだしねえ‥‥
ただその意見面白そうだからもう少し詳しく説明してよ >>316
323デフォルトの名無しさん:2013/07/21(日) 23:39:32.91
>>321
大抵省メモリになるが、ポインタは最適化の妨げになる
最適化の妨げにならないrestrictポインタを使う事をお勧めする
324デフォルトの名無しさん:2013/07/22(月) 00:03:10.19
>>323
どんなときに restrict 修飾子をつければいいの?
restrict のついたポインタが指すオブジェクトは、他のいかなるポインタも指すことがない、という意味であればいいの?
関数の引数のときだけに使うものなの?
325デフォルトの名無しさん:2013/07/22(月) 00:39:19.05
ポインタは不利にはならん。実際、容量は食うが無視出来るほどでメリットが多い。
ポインタと整数型変数の容量はほぼ一緒。
ポインタがいけなければ、一切変数を使うなと一緒。
326デフォルトの名無しさん:2013/07/22(月) 00:50:48.85
空間的なコストより速度が問題
327デフォルトの名無しさん:2013/07/22(月) 00:53:47.60
>>324
http://seclan.dll.jp/c99d/c99d07.htm
ここの7.6当たりを参照

ポインタのエイリアス問題でぐぐってもよい
要するにポインタを介した変数のアクセスは、他のポインタによって知らない間に
書き換えられてしまう危険性があるために、使う前にいちいちロードし直す手間が
かかり、それが最適化の妨げになっている

restrictはこのエイリアス問題が存在しない事をコンパイラに伝えるので、他の
ポインタによって書き換えられる事がないのを前提にコンパイルするのでFORTRAN
と同等の効率が出るし、マルチスレッドでも役立つ事が多い

ただし複数のポインタの参照範囲が重なるとたちまちバグるので、それはユーザーの
責任になる
328デフォルトの名無しさん:2013/07/22(月) 01:25:05.56
>>327
ありがとうございます。ユーザーの責任で指定しなければならないんですね。
329デフォルトの名無しさん:2013/07/22(月) 02:50:10.63
>>327
それ最適化阻害の原因にはならないよ

オーバーラップ領域のメモリ転送、メモリ演算の保証は昔からない
オーバーラップ領域のメモリ転送はmemcpyじゃなくてmemmoveを使う

言いたいことは
メモリ喰うじゃなくて、コードサイズが肥大化する
の間違いじゃ

Cソース上で動作追いかけるんじゃなくて、どんなコード履いてるか確認しないと
330デフォルトの名無しさん:2013/07/22(月) 07:43:52.60
>>329
つSIMD
331デフォルトの名無しさん:2013/07/22(月) 08:19:52.92
>>329
> Cソース上で動作追いかけるんじゃなくて、どんなコード履いてるか確認しないと

restrict の有無でどう変わるかやってみなよ...
332デフォルトの名無しさん:2013/07/22(月) 10:29:28.91
extern const HogeHoge TestData[] = {
{ 3, 100, 200, 300 },
{ 2, 400, 500 },
{ 5, 600, 700, 800, 900, 1000 },
{ 1, 1100 },
};

こんな可変長構造体 HogeHoge って定義する方法ないでしょうか?
333デフォルトの名無しさん:2013/07/22(月) 10:56:58.62
ない。
334デフォルトの名無しさん:2013/07/22(月) 11:22:20.92
ですよねー
いろんなサイトで調べて出来なさそうとは思ってたんですが
ありがとうございました

(なんか美しく可変長のデーター列扱う方法はないものか……)
335デフォルトの名無しさん:2013/07/22(月) 11:38:23.93
>>332
いわゆる可変長には出来ないが、上限があるなら
構造体メンバを上限で定義すれば、
その初期化式そのままで使える
336デフォルトの名無しさん:2013/07/22(月) 11:54:41.17
100, 200, 300 を格納する固定長の配列を用意して
構造体の各行では、要素数と使用先頭位置とを管理したらどうかな?
337デフォルトの名無しさん:2013/07/22(月) 12:00:00.12
可変長な構造体を扱う方法は普通にあるのだが、
extern const HogeHoge* TestData[];
これじゃダメな理由が意味不明だから答えようがない。
338デフォルトの名無しさん:2013/07/22(月) 12:48:15.92
>>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],
};
339デフォルトの名無しさん:2013/07/22(月) 12:51:48.43
>>335
まじっすか!?

typedef struct _HogeHoge {
 int data[10];
} HogeHoge;

こんな風に定義しておけば初期化時にデーター10個並べなくてもいいんですか?
340デフォルトの名無しさん:2013/07/22(月) 13:07:01.87
>>335
今試しにコード書いてみたらエラーなく目的のデーター作れました!
メンバって全部書く必要なかったんですね
これで今作ってるプログラムが美しくなります
ありがとうありがとうありがとう
341デフォルトの名無しさん:2013/07/22(月) 14:35:54.50
>>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の倍数のアドレスじゃないと
実行時に遅くなることがあるよってことで
コンパイラの最適化の問題になるのかどうかは微妙
342デフォルトの名無しさん:2013/07/22(月) 15:17:14.47
>>341
そういう転送物はどっちみち利用前にロードし直すので、最適化の妨げが現れない
そうではなくて、一度最初にロードして、ずっとその値をレジスタに入れて使いまわす
ような最適化が出来なくなると言っているわけで

そういうプログラムを書かないと
343デフォルトの名無しさん:2013/07/22(月) 15:19:06.04
知ったかする素人って見苦しい。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;
}
344デフォルトの名無しさん:2013/07/22(月) 15:32:34.37
>>343
それ差が出なかったぞ
345デフォルトの名無しさん:2013/07/22(月) 15:36:30.55
コンパイルも満足にできないガキかよ。ほらよ。
http://pastebin.com/NBpLX4Ae
346デフォルトの名無しさん:2013/07/22(月) 15:45:57.98
というか-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);
}
347デフォルトの名無しさん:2013/07/22(月) 15:48:19.66
>>345
まあそれも rbx に入れた値を使いまわすか、もう一度ロードし直しているかと
いう差が出てるんだけどな
348デフォルトの名無しさん:2013/07/22(月) 15:48:31.02
http://ideone.com/HqOdWV
挿入ソートのプログラム作ったのですが、データの数が30万超えるとコンパイルできても実行するとプログラム終了になってしまいます。1千万までのデータ数に対応させたいので、どのようにしたらいいか教えて下さい!
349デフォルトの名無しさん:2013/07/22(月) 15:52:16.27
>>348
こういうの多いなあ

> int i,A[N],b,c;

スタックオーバーフローだよ

static付けるかmallocでヒープ領域に確保してみな
350デフォルトの名無しさん:2013/07/22(月) 15:53:13.24
>>349
static?を習ってないので出来たらプログラムの例を教えてもらえるとありがたいです。
351デフォルトの名無しさん:2013/07/22(月) 15:53:42.93
>>345
ああそうか、俺は-O3でコンパイルしてしまったから差が出なかったのか
aaa()がa()やb()に取り込まれてしまうとcallが無くなってしまうので
事情が違ってくる

-O2だと同じ結果になったわ
352デフォルトの名無しさん:2013/07/22(月) 15:57:09.07
>>350
int i, b,c;
static int A[N];

これでAはスタック領域ではなく静的領域に確保される
353デフォルトの名無しさん:2013/07/22(月) 15:58:23.30
>>352
ちょっとやってみます!
354デフォルトの名無しさん:2013/07/22(月) 16:03:16.89
>>352
出来ました!ありがとうございます!
355デフォルトの名無しさん:2013/07/22(月) 16:07:54.90
>>346 >>351
aaaは宣言だけで定義してないんだからインライン展開できるわけねーだろ。ボンクラ
356デフォルトの名無しさん:2013/07/22(月) 16:16:02.67
restrict君の言いたいことがよーわからんな
357デフォルトの名無しさん:2013/07/22(月) 16:48:36.78
memcpyの高速化手法とかを知らない考えたことも無いお人が「魔法の呪文restrict」と覚えててそのまま吹いちゃったんでしょ
358デフォルトの名無しさん:2013/07/22(月) 17:31:57.29
>>355
自分でaaa()書いたんだよ
お前本当にアホだな
359デフォルトの名無しさん:2013/07/22(月) 17:48:07.09
バカは言われたとおりにやってりゃ良いんだよ。
360デフォルトの名無しさん:2013/07/22(月) 18:12:48.77
memcpyよりstrcpyのほうが効率的だよ
memcpyみたいなメモリを莫大に使う関数使っちゃだめ
361デフォルトの名無しさん:2013/07/22(月) 18:14:22.76
memcpyがいいだろ。
strは確実にサイズ測定するルーチンを含む。
362デフォルトの名無しさん:2013/07/22(月) 18:16:00.07
strcpyかstrcmpのほうがいいね
コピーするだけなら確実にstrcpyのほうがいい
何故ならstrcpyは標準Cの関数だからね
後からできた関数より信頼できる
363デフォルトの名無しさん:2013/07/22(月) 18:21:52.93
memmove()があればmemcpy()いらないよな。
使い分けなんて必要なくて全部memmove()でいいわ。
364デフォルトの名無しさん:2013/07/22(月) 18:31:35.21
memmoveは無駄がある
365デフォルトの名無しさん:2013/07/22(月) 18:32:57.02
気にすんな
366デフォルトの名無しさん:2013/07/22(月) 18:33:02.22
strcpyには無駄がない
それ故に高速
367デフォルトの名無しさん:2013/07/22(月) 18:51:46.58
strcpy以外使う奴wwww
368デフォルトの名無しさん:2013/07/22(月) 19:05:47.77
ったく誰だよキチガイのトラウマスイッチ押したヤツは
369デフォルトの名無しさん:2013/07/22(月) 19:08:26.47
strcpyとmemcpyの違いもわからん人が連投レス流し?
370片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/22(月) 19:09:45.59
ウソつき
371デフォルトの名無しさん:2013/07/22(月) 19:10:21.31
memcpy→memがメモリっぽいから機械語よりっぽくてかっけーwww
372デフォルトの名無しさん:2013/07/22(月) 19:29:28.29
>>360>>362>>363はウソつきですぅ
373デフォルトの名無しさん:2013/07/22(月) 19:45:45.93
memcpyは仕事で使う事ほとんどないな
memcpy使ってるプログラマは皆無と言えよう
374デフォルトの名無しさん:2013/07/22(月) 19:48:18.67
strcpyは\0で止まる。
バイナリ文字列はダメだ。
375デフォルトの名無しさん:2013/07/22(月) 19:48:45.43
memcpyはランタイムエラー出やすいからな
環境によっちゃコンパイルすら行かない事もある
376デフォルトの名無しさん:2013/07/22(月) 19:50:49.76
strcpyはコピーする側の文字の方が短いと
コピーされる配列の長さを変えてくれるのが良い
いちいち\0を入れるのは面倒だからstrcpyは重宝している
377デフォルトの名無しさん:2013/07/22(月) 19:53:41.64
原因が分らないエラーの原因は9割方memcpy
本当に厄介
378デフォルトの名無しさん:2013/07/22(月) 19:56:24.69
strcpyがあるのに何故memcpy作ったか分らんわ
forがあるのにwhile作った理由と同じくらいね
379デフォルトの名無しさん:2013/07/22(月) 19:59:42.05
memcpyなしだとビットマップとか扱うときどーすんの?
デコーダが渡してきたメモリブロックをこちらのバッファに書き込むとき、
forで1byteずつコピーするのか?
380デフォルトの名無しさん:2013/07/22(月) 20:03:39.86
あsdふぁ
381デフォルトの名無しさん:2013/07/22(月) 20:06:07.39
そんなに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;
}
384デフォルトの名無しさん:2013/07/22(月) 20:29:36.96
Duff's device - Wikipedia
Duff's Device(ダフズデバイス)とは、連続的コピーの最適化実装の1つで、アセンブリ言語のループ展開において用いられている手法を(C言語で)使ったものである。
C言語のswitch-case文におけるフォールスルーを利用した手法である。
しかし、このバージョンのコードはそれほど有用ではない。
というのも標準Cライブラリには十分に最適化されたメモリコピー関数 (memcpy) が用意されているからである。
そちらのコードの方がアーキテクチャ依存の最適化を施していて、ずっと高速に動作する[3][4]。
385デフォルトの名無しさん:2013/07/22(月) 20:33:21.80
お前らなんでbcopy使わないの?もしかしてSysV派?
386デフォルトの名無しさん:2013/07/22(月) 20:34:24.67
領域外アクセスで確実に落ちる仕様にして欲しい
387デフォルトの名無しさん:2013/07/22(月) 20:35:09.78
>>382
x86なら16バイトアライメントにしとけばSSE2使って高速になるのに
そんな古臭い実装誰が使うんだよ?
フルHDだと8bitYUV4:2:0でも、一枚あたり3MB弱コピーするんだぞ?
strcpyこそsprintfあれば無用だよ
どうせせいぜい数KB程度なんだろ?
388デフォルトの名無しさん:2013/07/22(月) 20:42:30.84
>>385 野蛮人発見
389デフォルトの名無しさん:2013/07/22(月) 20:44:01.43
ユーザーの環境を決め打ちで選べるなんて羨ましい
390デフォルトの名無しさん:2013/07/22(月) 21:15:07.22
uClibcでmemcpyの実装見たがCPUごとにアセンブラになってるぞ。
他のコンパイラでもそうだろ。
素直に使っとけ。
391デフォルトの名無しさん:2013/07/22(月) 23:04:32.87
strcpy使えよ
392デフォルトの名無しさん:2013/07/22(月) 23:07:22.20
memcpyは使う機会がまず無いからな
393デフォルトの名無しさん:2013/07/22(月) 23:13:27.90
memcpyは脆弱性がなぁ...
394デフォルトの名無しさん:2013/07/22(月) 23:29:09.34
memcpy使わざる
395デフォルトの名無しさん:2013/07/22(月) 23:48:03.55
脆弱性ってのは関数にあるんじゃなくて
作った人のミスで脆弱性になるの

ベボ、ヘタレはミスを自分以外になすりつけようとする傾向があるのかもね
396デフォルトの名無しさん:2013/07/22(月) 23:50:08.11
っていうかどこらへんが脆弱性なんだろ。
コピーのサイズの間違えるとか?
397デフォルトの名無しさん:2013/07/23(火) 00:46:03.57
そう言えば上の方で「スタックオーバーフロー」で落ちるってレスだけど、
スタック領域を広げるという別の手もある

だけど基本的にはローカル変数はあまり大きな物を確保しないのがいいよね
malloc() / free() はそれを補うための物だけど、あまりにもエラーが多すぎるため
(メモリリークなど)、C++でほとんど必然的にコンストラクタ/デストラクタが入れられた

それでもエラーが無くならないのでスマポへと
398デフォルトの名無しさん:2013/07/23(火) 02:55:40.00
>>397
>malloc() / free() はそれを補うための物だけど、あまりにもエラーが多すぎるため
>(メモリリークなど)、
これと
> C++でほとんど必然的にコンストラクタ/デストラクタが入れられた
これ全然関係ない。ヴァカは引きこもってりゃ良いのに。
399デフォルトの名無しさん:2013/07/23(火) 03:20:11.54
そもそも「エラー」の使い方がおかしい
400デフォルトの名無しさん:2013/07/23(火) 04:14:31.20
>>398
かわいそうにmalloc()で痛い目に遭った事もないんだな
401デフォルトの名無しさん:2013/07/23(火) 04:24:28.60
>>398
コンストラクタ/デストラクタの存在により malloc()/free() または new/delete の処理がずいぶんと楽になったのは周知の事実なんだが?
402デフォルトの名無しさん:2013/07/23(火) 04:28:23.17
>>399
こういう「エラー」の使い方はD&Eの禿の使い方に倣ったものだ
お前禿に文句言えるほど偉いのか?
403デフォルトの名無しさん:2013/07/23(火) 05:54:23.60
>>400-401
アホ
コンストラクタ/デストラクタはC++以前から存在するOOPの基本概念だ
malloc/freeでのエラーが多いために導入されたものじゃない

ヴァカは引きこもってろ
404デフォルトの名無しさん:2013/07/23(火) 07:29:32.62
俺はfreeしか使わねぇ
405デフォルトの名無しさん:2013/07/23(火) 11:31:21.56
>>403
馬鹿すぎる・・・
406デフォルトの名無しさん:2013/07/23(火) 11:37:14.33
>>403
D&EのP116〜117を読め
どこにもOOPなどとは書いてない
407デフォルトの名無しさん:2013/07/23(火) 12:10:54.80
問題です

コンストラクタが最初に実装された言語の名前を答えてみよう
408デフォルトの名無しさん:2013/07/23(火) 12:33:17.59
D&E手元に無いけど、malloc/freeでミスるカスのためのものじゃなくて
そういうカスのサポートにも便利に使えるってだけだろう
カスが本末転倒な主張してるように見える
409デフォルトの名無しさん:2013/07/23(火) 12:35:14.10
デストラクタがオブジェクト指向の基本概念って、ガベコレのある言語は
いつデストラクタ(相当の機能)が呼ばれるかわからないからC++みたいに
リソースの解放には使えないな。
410デフォルトの名無しさん:2013/07/23(火) 12:37:33.15
>>408
D&Eも持ってないカスがつべこべしゃべんな

>>409
俺もそれ書こうと思ったけどやめたけど、そうだよな
C#はusingとかGC.Collect()を呼び出さないとすぐに解放する事も困難
411デフォルトの名無しさん:2013/07/23(火) 13:09:55.29
>>409
別にデストラクト時に解放されれば問題ないのでは
412デフォルトの名無しさん:2013/07/23(火) 13:12:20.85
>>411
リソースってのはファイルとかその他一つしか使えないデバイスも含んでるんだよ

ファイルは閉じないと次にそのファイルに読み書きできないだろ
一つしかないデバイスは行儀よく閉じないとデッドロックの原因になる

こういう点がGC言語の弱点とされている
ちゃんと回避策もあるけど読んでるのか?
413デフォルトの名無しさん:2013/07/23(火) 13:37:33.26
>>412
普通にcloseするだけでしょ
414デフォルトの名無しさん:2013/07/23(火) 13:37:55.31
デストラクト時っていつ?って聞かれれば、
「一生来ないかもしれない」ってのがGC有りのOOP言語だからなぁ。
415デフォルトの名無しさん:2013/07/23(火) 13:43:45.86
ここ、C言語スレなんですけど
416デフォルトの名無しさん:2013/07/23(火) 13:59:06.87
>>409-410
C++より後に出来たガベコレ有り言語の話が、C++と何の関係があるんだ?
C++のコンストラクタ/デストラクタはオブジェクト指向の機能ですよん
417デフォルトの名無しさん:2013/07/23(火) 14:44:27.06
>>416
バカかお前。
418デフォルトの名無しさん:2013/07/23(火) 15:04:40.18
>>416
バカだなこいつ。
419デフォルトの名無しさん:2013/07/23(火) 15:16:31.06
とりあえずハゲ信者はC++スレに帰れよ
420デフォルトの名無しさん:2013/07/23(火) 15:36:53.54
>>417-418
こっちはかなり具体的な主張をしてるのに
それに対して誤りを指摘するわけでもなく涙目でレッテル貼りか
421デフォルトの名無しさん:2013/07/23(火) 16:05:15.67
>>420
C++がガベコレ有り言語より先って・・・
422デフォルトの名無しさん:2013/07/23(火) 16:17:10.64
>>420
「C++のデストラクタはオブジェクト指向の基本概念」っていうから、C++のデストラクタのような
機能のない言語の例を上げたら
「それはC++と関係ない。デストラクタはオブジェクト指向の基本機能だ」って繰り返すだけだろ?

話の通じないバカにしか見えない。
423デフォルトの名無しさん:2013/07/23(火) 16:34:08.77
>>422
お前は物事の順序を理解してない
C++がオブジェクト指向を定義したんだよ
つまり後から出てきてオブジェクト指向を名乗る言語がどんな仕様を採用していようが、C++が定義したオブジェクト指向の定義とは無関係
424デフォルトの名無しさん:2013/07/23(火) 16:43:19.89
>>423
つ[Smalltalk]
425デフォルトの名無しさん:2013/07/23(火) 17:01:54.09
馬鹿って100%言い負けてるのに絶対にそれを認めようとしないよな
外から見ていたら滑稽なアホにしか見えないんだけど
426デフォルトの名無しさん:2013/07/23(火) 17:04:27.19
>>425
俺はお前がアホにしか見えないよ。
427デフォルトの名無しさん:2013/07/23(火) 17:09:18.77
>>426
ほら釣れた
428デフォルトの名無しさん:2013/07/23(火) 17:42:27.87
夏かよ
429デフォルトの名無しさん:2013/07/23(火) 17:43:33.21
夏じゃないか
430デフォルトの名無しさん:2013/07/23(火) 17:44:37.81
ホント夏だなぁ
431デフォルトの名無しさん:2013/07/23(火) 18:02:39.15
海行ったか?
432デフォルトの名無しさん:2013/07/23(火) 20:18:24.17
>>423
Simula、後ろ後ろ
433デフォルトの名無しさん:2013/07/23(火) 22:02:57.63
>>424
Smalltalkがこの話題にどういう関係があるのかわからない。
君はどこから勘違いをしてるんだ?

>>432
Simulaはオブジェクト指向を「定義」したわけじゃないから。Simulaの論文にオブジェクトという単語は登場しないよ
あくまで言語機能としてクラスやコンストラクタを備えてだけであって、
その後にオブジェクト指向の必要条件を定義したのはストラウストラップ
434デフォルトの名無しさん:2013/07/23(火) 22:46:30.91
だめだこりゃ
435 ◆QZaw55cn4c :2013/07/24(水) 03:07:26.97
>>431
20年いってない‥‥
436デフォルトの名無しさん:2013/07/24(水) 08:32:25.85
>>433
> Simulaの論文にオブジェクトという単語は登場しないよ
著者名、タイトル、発行年は?
437デフォルトの名無しさん:2013/07/24(水) 09:19:03.64
まとめ

バカ「C++のデストラクタはオブジェクト指向の基本概念だ!」

「C++のデストラクタのような機能のないオブジェクト指向言語もあるけど」

バカ「オブジェクト指向はC++が規定した!C++以外の言語は関係ない」

「C++以前からオブジェクト指向言語はあるけど。SmalltalkとかSimulaとか」

バカ「Smalltalkは関係ない。君は何を勘違いしてるんだ。
 Simulaの論文にオブジェクトとう単語は登場しない。
 オブジェクト指向を定義したのはビョーン スッポスッポだ!」
438デフォルトの名無しさん:2013/07/24(水) 10:16:34.51
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++
  {
    オブジェクト指向
  }
}
441デフォルトの名無しさん:2013/07/24(水) 10:25:17.61
俺だけはここが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
>>442

Simula(シミュラ)は最初期のオブジェクト指向言語の一つである。

Simula - Wikipedia
http://ja.wikipedia.org/wiki/Simula
445デフォルトの名無しさん:2013/07/24(水) 10:31:45.91
>>440
後付で「俺の言ってるのはC++のオブジェクト指向だ」って言ってるだけでしょ。
最初はC++の機能とオブジェクト指向一般の区別がついてなかっただけ。
446デフォルトの名無しさん:2013/07/24(水) 10:34:07.64
>>439-440
> 他の人はオブジェクト指向の話をしてる

例えばJavaScriptという言語は「オブジェクト指向」ではあるけど、
クラスが存在しないプロトタイプベースのオブジェクト指向言語だ。
対象を限定せず単に「オブジェクト指向」と言ったらそういうものも含むわけだが、
そんな広すぎる話題について何を話し合うつもりなの?

教えてくれよ。
俺はC++が提唱したクラスベースのオブジェクト指向に関する話題だと思ってたけど、
あんたらの定義を見る限りメッセージ指向もプロトタイプベースも含むらしいからな。
447デフォルトの名無しさん:2013/07/24(水) 10:38:44.93
>>446
コンストラクタ・デストラクタがオブジェクト指向の基本と呼べるものなのかについて。
448デフォルトの名無しさん:2013/07/24(水) 10:41:31.93
>>444
Wikipediaを論文と呼ぶのか。お前は
449デフォルトの名無しさん:2013/07/24(水) 10:43:15.92
>>447
順序が逆よ
オブジェクト指向においてインスタンスを生成するための仕組みをコンストラクタと呼んでいるだけ
インスタンスを破棄するための仕組みをデストラクタと呼んでいるだけ

例えばC言語でオブジェクト指向プログラミングをしようと思ったら、
mallocとfreeでコンストラクタ/デストラクタの機能を果たす
構造体でクラスの代わりをする

そういうものだ
わかったかな?
450デフォルトの名無しさん:2013/07/24(水) 10:44:03.29
wikiなんてある程度誰でも編集できるから信憑性は薄いぞ
知識として使うのは間違ってもいい日常会話程度にしとけ
451デフォルトの名無しさん:2013/07/24(水) 10:45:10.56
>>448
目次も概要も歴史も参考文献もある。立派な論文だろ。
452デフォルトの名無しさん:2013/07/24(水) 10:46:10.31
>>451
アホだなこいつ
日本語訳がなきゃソースとは言わねーよ
453デフォルトの名無しさん:2013/07/24(水) 10:47:06.66
>>446みたいに知識ばかり頭でっかちでプログラミング能力が低い新人って多いよな
口だけは達者だからすぐ反論してきてウザい
454デフォルトの名無しさん:2013/07/24(水) 10:47:21.23
このヴァカ、本気でWikipediaを論文と言ってるようだ。晒しあげ
455デフォルトの名無しさん:2013/07/24(水) 10:47:24.81
wikipediaの使い方を知らないアホが集うスレ
456デフォルトの名無しさん:2013/07/24(水) 10:48:20.79
>>450
お前の発言よりよほどましだろ。お前はシムラのことどれだけ知ってるわけ?
集団的知性を馬鹿にしてはいけないよ。
457デフォルトの名無しさん:2013/07/24(水) 10:48:22.87
>>446
典型的屁理屈乙
誰もJavascriptを含めて話なんてしてねーよ
smalltalkはクラスも含んでるからほとんどC++に近い言語仕様だろ
458デフォルトの名無しさん:2013/07/24(水) 10:48:59.07
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
>>459
> >>452
> アホはお前だハゲ。Wikipediaは論文だ。
462デフォルトの名無しさん:2013/07/24(水) 10:55:41.29
>>449
デストラクタがないオブジェクト指向の言語もあるよね。
コンストラクタ・デストラクタはオブジェクト指向の基本と呼べるものなんでしょうかってこと。
463デフォルトの名無しさん:2013/07/24(水) 10:55:46.79
多分、レポート作成教育も受けていない低学歴なんだろうな。
464デフォルトの名無しさん:2013/07/24(水) 10:57:34.83
>>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
465デフォルトの名無しさん:2013/07/24(水) 11:01:06.49
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より立派な文章書けない分際でガタガタ抜かすんじゃないよ。
467446: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は論文だ。

どんなに恥ずかしい発言か理解できない低学歴が墓穴をどんどん深くしていく。
469デフォルトの名無しさん:2013/07/24(水) 11:16:46.92
バカの発言の変遷

「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 お前には逆立ちしたって無理だろ。
シムラについて語ってみろよ。できないんだったら黙ってろ。
471デフォルトの名無しさん:2013/07/24(水) 11:28:24.05
Wikipediaは誰もが編集に参加できる百科事典のようなもの
百科事典を論文と呼ぶかどうかは疑問
472デフォルトの名無しさん:2013/07/24(水) 11:30:34.08
> アホはお前だハゲ。Wikipediaは論文だ。
> アホはお前だハゲ。Wikipediaは論文だ。
> アホはお前だハゲ。Wikipediaは論文だ。
> アホはお前だハゲ。Wikipediaは論文だ。
> アホはお前だハゲ。Wikipediaは論文だ。
> アホはお前だハゲ。Wikipediaは論文だ。
> アホはお前だハゲ。Wikipediaは論文だ。

どんなに恥ずかしい発言か理解できない低学歴が墓穴をどんどん深くしていく。
473デフォルトの名無しさん:2013/07/24(水) 11:32:41.15
>>401-
ここまで削除依頼かな
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は論文だ。

どんなに恥ずかしい発言か理解できない低学歴が墓穴をどんどん深くしていく。
478デフォルトの名無しさん:2013/07/24(水) 11:56:35.79
>>467
『Booch 91』と『Coplien 92』読んでから話して。
479デフォルトの名無しさん:2013/07/24(水) 11:58:47.48
禿ストラウストラップが「オブジェクト指向を自身が始めて定義した」という
論文なり文章なりのポインタ示せば話は終わりなのに。
480デフォルトの名無しさん:2013/07/24(水) 12:00:35.95
Wikipediaには書いてないから示せない。
481デフォルトの名無しさん:2013/07/24(水) 12:57:28.24
アンサイクロペディアにも無い?
482デフォルトの名無しさん:2013/07/24(水) 13:03:55.20
ここ、C言語スレなんだけど。
483デフォルトの名無しさん:2013/07/24(水) 13:07:23.04
このスレって罵倒合戦が無かったことないよね?
仲良くしろよ
484デフォルトの名無しさん:2013/07/24(水) 13:09:16.32
だってファビョってる奴がD&Eも持ってないって言うんだから話にならねーよ
485446:2013/07/24(水) 13:37:25.88
>>479
C++の開発者のサイトくらい一度は見ておこうぜ
http://www.stroustrup.com/whatis.pdf
486デフォルトの名無しさん:2013/07/24(水) 13:48:13.05
>>485
それのどこに「ストラウストラップがオブジェクト指向を初めて定義した」と書かれてるんだ?
487デフォルトの名無しさん:2013/07/24(水) 13:49:29.52
>>485
いつまでこのスレを荒らすつもりなんだよ?
ブログでやってくれよ。
488446:2013/07/24(水) 13:58:41.69
>>486
ストラウストラップはあくまでオブジェクト指向の一つの定義を提唱しただけだっていう話の流れすら追いきれてないのか
この定義が爆発的に流行ったから他の定義を押しのけて現在まで居座ってるだけだよ…w
489デフォルトの名無しさん:2013/07/24(水) 14:00:58.20
アスペって本当にタチが悪いな
もう皆うんざりしてんのに
490446:2013/07/24(水) 14:02:53.11
Simulaっていう革新的な言語が登場した

それにヒントを得た開発者がC++やSmalltalkを作った
C++の開発者は自身のオブジェクト指向の定義として「カプセル化、継承、多相性」を主張した
この主張はみなさん御存知の通り今日まで爆発的に流行っており、オブジェクト指向=カプセル化、継承、多相性
と考える人も多いくらいに流行ってます

つまりC++は今日流行っているオブジェクト指向の元祖とも言える言語であり
C++が正しいのです。

わかりましたか?
491デフォルトの名無しさん:2013/07/24(水) 14:03:29.07
全然わかりません
492デフォルトの名無しさん:2013/07/24(水) 14:05:14.14
だいたい「カプセル化、継承、多相性」を主張したのはC++が最初じゃないだろ
それはOOP言語の特徴とも言える物で他のOOP言語も当然持っている

最も成功したOOP言語の一つとしてC++を挙げるのならまだわかるが
493デフォルトの名無しさん:2013/07/24(水) 14:05:53.09
ちょっともう何を主張したいのかよくわからんことになってるが、
「C++は今日流行っているオブジェクト指向の元祖」
が正しいとして、それをベースにお前は何を主張したいの?
494446:2013/07/24(水) 14:10:03.75
>>492
> 一方、Smalltalkとは別にSimulaの影響を受け作られたC++(1979年)は
> 抽象データ型のスーパーセットとしてのクラス、オブジェクトに注目し、
> オブジェクト指向をカプセル化、継承、多相性をサポートするものと再定義した
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0

> しかし、現在「オブジェクト指向」を説明する人が(たいていは意識せずに)前提としているのは、
> C++ の設計者として知られるビアルネ・ストラウストラップが、C++ の設計を通じて
> 1980年代半ばまでに体系付けた“2”の「オブジェクト指向」です。
> カプセル化/情報隠蔽、継承、多態性…とかのいわゆる「三点セット」は、
> おそらくここで言われる「抽象データ型 + 継承と仮想関数による動的性(つまるところ「クラス」の機能)」が
> 変形させられたものだと思って間違いないでしょう。
> (これ以前に発表された論文で、三点を網羅したものは見あたらないので…)
http://d.hatena.ne.jp/sumim/20040525/p1


> (これ以前に発表された論文で、三点を網羅したものは見あたらないので…)
495デフォルトの名無しさん:2013/07/24(水) 14:10:10.55
つーかC++はSTLを入れた辺りから「ジェネリック・プログラミング」の流れも作ったんだが
それまでSTLのような物はなかった

これは断言してもいいし、D&Eにも書いてある
Adaも総称プログラミングは出来たが、templateのような柔軟性はなかった
C#やJava、他のいくつかの言語がこの新しい潮流に乗った
こっちの方には着目しないのかい?www
496デフォルトの名無しさん:2013/07/24(水) 14:11:00.16
>>494
Wikipediaなんか参考にしてる時点で終わっトルよ
どこの誰が書いた物かも分からないのに
497446:2013/07/24(水) 14:11:26.04
>>493
C++がオブジェクト指向の元祖だから、他の言語を引き合いに出して「C++の○○という機能はオブジェクト指向に非ず」という主張をするなということ

C++ = オブジェクト指向
他の言語 ⊆ オブジェクト指向
498デフォルトの名無しさん:2013/07/24(水) 14:12:43.53
>>497
頭おかしい
街に行ってそれを大声で叫んで賛同者を1000人集めたら認めてやる
499デフォルトの名無しさん:2013/07/24(水) 14:14:30.26
イスラム原理主義とかもこういう感じなんだろうな
思想が強すぎて修正がきかない、他者とのコミュニケーションが取れない
500デフォルトの名無しさん:2013/07/24(水) 14:19:50.51
>>497
> 「C++の○○という機能はオブジェクト指向に非ず」という主張

具体的に、どのレスの事を言ってるんだ?
501446:2013/07/24(水) 14:23:42.36
>>500
このスレ
502デフォルトの名無しさん:2013/07/24(水) 14:25:59.27
>>501
レス番を示せないということか?
だとしたら、お前の思い込みじゃないのか?
503デフォルトの名無しさん:2013/07/24(水) 14:26:11.90
なにももってオブジェクト指向とするかって議論はあって、いろんな
意見があるってのは知ってるけど「C++のデストラクタがOOPの基本概念」って
話は見たことないな。
どっかの論文に書いてあるのかな。
504デフォルトの名無しさん:2013/07/24(水) 14:26:13.52
結局Cとの互換性なけりゃ誰も使わんよーな言語がエラソーに
505デフォルトの名無しさん:2013/07/24(水) 14:26:31.39
>>501
そもそもこのスレはC言語スレなんですが
506デフォルトの名無しさん:2013/07/24(水) 14:30:09.03
「C++のデストラクタがOOPの基本概念」ということを主張したいのだとしたら、
「デストラクタの無い言語はOOPLではない」あるいは「完全なOOPLとは言えない」
ということになるが、それでよろしいか?
507デフォルトの名無しさん:2013/07/24(水) 14:38:32.06
デストラクタって実装詳細じゃないの?
508デフォルトの名無しさん:2013/07/24(水) 14:52:37.46
いつまでスレ違いの話を続けるんだよ
509デフォルトの名無しさん:2013/07/24(水) 14:56:35.11
>>397-398が元凶
510デフォルトの名無しさん:2013/07/24(水) 15:09:22.01
>>506
論理学を学んでから出直せ、低学歴。
511デフォルトの名無しさん:2013/07/24(水) 15:14:02.87
>>510
「C++のデストラクタがOOPの基本概念」ということは、C++のデストラクタがOOPLの必要条件ということだろ。
必要条件を備えていない言語はOOPLではないということになる。
どこが間違い?
512446:2013/07/24(水) 15:22:50.58
そろそろ生徒の採点で忙しいからバイバイするよ
午後の講義も残ってるし
513デフォルトの名無しさん:2013/07/24(水) 15:26:40.07
なんだ、素人だったのか
514デフォルトの名無しさん:2013/07/24(水) 15:26:43.48
チャットじゃないんでいちいちそういう報告いらないです。
515デフォルトの名無しさん:2013/07/24(水) 15:32:01.26
脳内生徒に脳内講義ですか。大変ですなぁ。
516デフォルトの名無しさん:2013/07/24(水) 15:40:12.48
>>506
逆は必ずしも真ならず
対偶なら成り立つ
517デフォルトの名無しさん:2013/07/24(水) 15:40:41.69
>>515
seikyouじゃねーのwww
518デフォルトの名無しさん:2013/07/24(水) 16:01:50.20
>>516
「C++のデストラクタがOOPの基本概念」は
「デストラクタはOOPLの必要条件である」と言い換えられる。
命題にすると「OOPLであればデストラクタを備えている」。
対偶は「デストラクタを備えてなければOOPLではない」。
なお逆は「デストラクタを備えていればOOPLである」。
519デフォルトの名無しさん:2013/07/24(水) 16:45:46.58
低学歴は煽り体制が低いな。
必死でググった論理学だが身についていないので、無知を証明する結果になる。

まわり道に思えても基礎から体系だてて学ぶ事の重要性が良くわかる。
520デフォルトの名無しさん:2013/07/24(水) 16:52:42.44
>>519
あーあ逃げてやんのダッセwww
521デフォルトの名無しさん:2013/07/24(水) 17:12:07.54
>>518
だからその「C++のデストラクタがOOPの基本概念」というのがまだ証明されて
ないんだから、その対偶の「デストラクタはOOPLの必要条件である」も成り立たないわけ

低学歴には分からないよな
522デフォルトの名無しさん:2013/07/24(水) 17:12:43.76
いや対偶じゃなかった

必要十分条件のうちの必要条件だった
523デフォルトの名無しさん:2013/07/24(水) 17:22:14.05
>>521
だから、このスレで何をやりたいのかわからないが、それがもし
 「C++のデストラクタがOOPの基本概念」
ということを主張したいのだとしたら、それは
 「デストラクタを備えてなければOOPLではない」
と主張するのと同じ事になるが、それでいいのかと質問しているのだが。
524デフォルトの名無しさん:2013/07/24(水) 18:35:00.19
C言語では、ループ文にラベル付けして指定のループを抜けるcontinue文って出来ないんですかね?

for(){
 for(){
//ここでコンティニューして、外側のfor文の先頭にいきたいんですけど
}
}
525デフォルトの名無しさん:2013/07/24(水) 18:36:15.72
出来ない

gotoでいいじゃ〜〜〜ん
526デフォルトの名無しさん:2013/07/24(水) 18:39:13.20
for文の中でwhile文つかったらエラーが出るんですけど何故ですか?
for文の中はfor文しか使ったらダメとか?
527デフォルトの名無しさん:2013/07/24(水) 18:40:12.10
わかりました ありがとうございます

goto で戻ると更新文は作動しませんよね?
528デフォルトの名無しさん:2013/07/24(水) 18:40:37.61
C++に固執するのは低学歴である

対偶
低学歴でないならC++にこだわらない
529デフォルトの名無しさん:2013/07/24(水) 18:40:54.59
>>526
そんなんで他人に分かると思ってるくらい頭悪いからじゃね?
530デフォルトの名無しさん:2013/07/24(水) 18:43:20.03
>>528 は対偶を知らないので中学生以下である
531デフォルトの名無しさん:2013/07/24(水) 18:44:50.92
>>526
んなわけあるか
コード出せ
恐らく一瞬で答えが出る
532デフォルトの名無しさん:2013/07/24(水) 18:49:40.54
>>531
for(i= ;i<=20; i++)
while(j=0; j<=20; j++)
{
if(j=kof(j))
if(j==1)break;
}

}
533デフォルトの名無しさん:2013/07/24(水) 18:52:29.77
>>532
いくらなんでもそりゃねーよw
534デフォルトの名無しさん:2013/07/24(水) 18:54:59.87
>>532
括弧の対応が合っているか確認しろ
そのソースを見る限り合ってないが、最初のforの前次第なので、断定はできない
つか、初心者は{}を省略しちゃいかん
535デフォルトの名無しさん:2013/07/24(水) 18:56:20.78
>>534
お前は while の中を見ろよw
536デフォルトの名無しさん:2013/07/24(水) 18:58:22.05
>>535
なるほど、そこかw
そこは省略できんな

つか、前提がfor は動くのだったかと思い込んでたはわw
537デフォルトの名無しさん:2013/07/24(水) 19:04:47.20
それ以外にも


for()
{
int oppaimomimomi;;
while(){oppaimomimomi=3;;;}

}


whileの方はkが無効化されます。
何故?入子の変数は無効化されますか?
538デフォルトの名無しさん:2013/07/24(水) 20:10:13.07
>>528
「C++ に固執する人の集合は低学歴の集合に含まれる」
本当か?
C++に固執する人で高学歴の人はいないのか?
539デフォルトの名無しさん:2013/07/24(水) 20:10:17.61
>>537
kどこだよwww
whileの()の中は条件分だけだからな。
while(a < 1) {/* do loop */}
540デフォルトの名無しさん:2013/07/24(水) 20:25:49.93
>>520
「犬は動物である」は
「犬は動物であることの必要条件である」とは言い換える事はできない。

これなら低学歴のお前でもわかるかな。
541デフォルトの名無しさん:2013/07/24(水) 20:28:27.89
>>526
http://codepad.org/
http://ideone.com/
にコードを貼って!100% ではないけれども、割といい精度で回答がつく

http://toro.2ch.net/test/read.cgi/tech/1371208925/914,918,920
542デフォルトの名無しさん:2013/07/24(水) 20:30:03.60
>>540
「犬は動物であることの十分条件である」とはいいかえれますけどね
543デフォルトの名無しさん:2013/07/24(水) 20:42:42.21
>>542
何を言ってるんだ?
544デフォルトの名無しさん:2013/07/24(水) 20:45:47.53
「C言語の入門者向け解説スレッド」だって事分かってやってる?
545デフォルトの名無しさん:2013/07/24(水) 20:52:33.23
>>544
何が?
546デフォルトの名無しさん:2013/07/24(水) 20:54:56.35
>>545
頭おかしいの?
547デフォルトの名無しさん:2013/07/24(水) 20:55:40.01
うん。
低学歴で自信満々の知ったかは、知識の乏しい初心者にとって害でしかないからね。
その場で叩き潰すべし。
548デフォルトの名無しさん:2013/07/24(水) 20:57:54.09
>>546
お前がな。日本語を上戸に扱えない奴め
549デフォルトの名無しさん:2013/07/24(水) 21:01:48.85
>>542
だからなに?
お前が低学歴で論理学を全く知らないと言う事は証明されたから
それ以上あがいても恥の上塗りするだけだぞ
550デフォルトの名無しさん:2013/07/24(水) 21:06:01.85
ろんりがく!ろんりがく!って騒ぐ方がどーかとおもいますけどね
551デフォルトの名無しさん:2013/07/24(水) 21:06:06.99
>>548
自己紹介しなくてもいいですよ(ニッコリ
552デフォルトの名無しさん:2013/07/24(水) 21:19:42.07
あのー…
ここはC言gグフッ
553デフォルトの名無しさん:2013/07/24(水) 21:25:23.21
お前、ゴキブリ見つけたらその場で叩き潰すだろ。
処刑場で潰すとか悠長な事しないだろ。
554デフォルトの名無しさん:2013/07/24(水) 21:35:58.81
うるさいゴミ
555デフォルトの名無しさん:2013/07/24(水) 21:38:45.50
コンストラクタとか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を入れる領域の初期化が不必要か。
558 ◆QZaw55cn4c :2013/07/24(水) 22:11:40.72
>>556
\0 は単なる8進によるキャラクタ表現(ISO/IEC9899:1999 6.4.4.4)
プロトタイプがインクルードするヘッダにあるだろうから、memset() に関しては 0 と書こうが \0 と書こうが差異はないし、整数としての 0 だったら integral promotion でも問題なし
プロトタイプがかけない関数の引数にヌルポインタを渡すにだけ注意すればよい
559デフォルトの名無しさん:2013/07/24(水) 22:21:57.74
たまにcharの0が\0に解釈されるときあるけど
こういうエラーは防げないですかね?
0も\0も同じ1byteだからいっしょくたにされるのかな?
560デフォルトの名無しさん:2013/07/24(水) 22:26:11.96
\0と文字0は、完全に異なるもの。
\0はバイナリで0だが、文字0はそうでない。
561デフォルトの名無しさん:2013/07/24(水) 22:27:07.75
>>556
この文章でよく分かるな。
まあなんとなく分かるけど。
562デフォルトの名無しさん:2013/07/24(水) 22:29:50.20
>>559
char a = 0;
char b = '\0';
if (a == b) <- true判定

たまに↑こうなることがあるって意味?
たまにじゃなくて常にこうなるんじゃないの。
563デフォルトの名無しさん:2013/07/24(水) 22:34:16.57
>>562
これが別者とおもってるは相当な初心者。
どんなC/C++コンパイラであっても同じだろうし、正規表現でも\0はバイナリの0を表すだろう。
564デフォルトの名無しさん:2013/07/24(水) 23:50:21.20
言語うんぬんというよりはアスキーコード表とかを一度眺めたほうがよくね
'\0'でエラーな人は
565デフォルトの名無しさん:2013/07/25(木) 02:51:28.79
>>559
たまにってどういうことだよw
566デフォルトの名無しさん:2013/07/25(木) 06:55:21.97
メモリの許す限りの大きな数値を扱うのってどうやるんだ?
扱うってんだから四則演算はしたいよな。
考えたんだけど、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型が最適。
567 ◆QZaw55cn4c :2013/07/25(木) 07:32:37.12
>>566
http://toro.2ch.net/test/read.cgi/tech/1313183984/743
近いうちに改良しようとおもってます
568デフォルトの名無しさん:2013/07/25(木) 07:40:31.03
>>566
任意精度演算とか言われる分野の話で、
ぶっちゃけると配列に格納された巨大整数どうしの四則演算を考えることになる
GMPとかそれ専用のライブラリもある

最も単純なアルゴリズムは要するに筆算なので、
そんなに難しくない(除算はやや面倒)
569デフォルトの名無しさん:2013/07/25(木) 09:09:49.30
こういう>>566明らかに算術ライブラリを使うべき用途を個人で開発したがる理由って何だろうね
アルゴリズムの練習ならもっとマシな題材がいくつもあるし、何がしたいのかわからん
570デフォルトの名無しさん:2013/07/25(木) 09:16:21.12
何でも分かれると思うなよw
お前が分からないことなんて世の中にはいっぱいあるんだ。
571デフォルトの名無しさん:2013/07/25(木) 09:28:40.08
自由に使える任意精度演算ライブラリって何がある?
gmpは感染するから却下
572デフォルトの名無しさん:2013/07/25(木) 09:35:00.44
573デフォルトの名無しさん:2013/07/25(木) 09:54:20.89
>>572
商用、無料、C、整数、非GPLなので生きてるの無いじゃん
574デフォルトの名無しさん:2013/07/25(木) 11:49:06.63
>>573
つまり金(有料)か思想(GPL)がなければ任意性度演算のライブラリを作るメリットがないということだな
無料でライセンスも自由で作るには割が合わないということ

世の中の仕組みがわかってよかったな
575デフォルトの名無しさん:2013/07/25(木) 12:07:21.48
GMPってLGPLじゃん。
576デフォルトの名無しさん:2013/07/25(木) 12:11:42.79
リバースエンジニアリングされたくないんだろ
577デフォルトの名無しさん:2013/07/25(木) 12:17:50.49
>>574
世の中にはバカには見えてない理由があるって事だな。>>569に言えよ

>>575
面倒臭え奴だな。スタティックリンクすりゃ感染するんだから一緒だよ。
578デフォルトの名無しさん:2013/07/25(木) 12:23:52.68
>>577
商用でもないのにLGPLやGPLで困る状況ってのがわからない
フリーソフトだけどソースコードは開示したくないってどういう状況だよ
579デフォルトの名無しさん:2013/07/25(木) 12:32:59.69
>>578
GPLにしといても盗む奴は沢山いる
580デフォルトの名無しさん:2013/07/25(木) 12:43:23.33
>>577
スタティックリンクでも同じだろ。
581デフォルトの名無しさん:2013/07/25(木) 12:55:37.20
>>580
違う。せめてWikipediaくらいは読んでから出直せ
582デフォルトの名無しさん:2013/07/25(木) 12:57:40.44
>>581
https://ja.wikipedia.org/wiki/GNU_Lesser_General_Public_License
(動的・静的に関わらず)リンクされる可能性のあるプログラムBの
ソースコードについてはLGPLを適用する必要は無く、その頒布の制限にも関与しない。
583sage:2013/07/25(木) 13:00:35.30
外部のマシンのファイルを読み込む方法って何かある?
アクセス制限でエラーになる…
WNetAddConnection2()を使うとIDとPASSが必要だから他の方法を探してるんだが。
584デフォルトの名無しさん:2013/07/25(木) 13:11:09.26
http使えば?
585デフォルトの名無しさん:2013/07/25(木) 13:18:58.66
>>582
こっちだよ、バカ
ライブラリAに静的リンクしたプログラムBを頒布する場合、Bのソースコードまたはオブジェクトコードの頒布に制限があってはならない。(LGPLv2第6節a、LGPLv3第4節d0)
586デフォルトの名無しさん:2013/07/25(木) 13:58:55.08
ソースコード公開が条件だったとしても、動的リンクであれば本体コードは必要ないだろ。
条件の詳細を確認したり商用利用したわけではないが。
587デフォルトの名無しさん:2013/07/25(木) 14:03:24.86
見苦しいぞ。
スタティックリンクしたら感染する事を知らなかった、お前の負け。
588デフォルトの名無しさん:2013/07/25(木) 14:12:00.03
>>587
商用なら有償ライブラリ使え
私用ならGPL使え

私用なのにコード盗まれちゃ困る?
贅沢言うなボケ
589デフォルトの名無しさん:2013/07/25(木) 14:15:24.52
自前で作るのがめんどくなさそう
590デフォルトの名無しさん:2013/07/25(木) 14:21:17.37
多倍長とか任意精度が必要なコードをいまどき外部ライブラリ無しでCで書くとか
どれだけ無能なんだ
591デフォルトの名無しさん:2013/07/25(木) 14:29:55.97
1ビット脳は世界が単純に割りきれて羨ましい
592デフォルトの名無しさん:2013/07/25(木) 14:30:23.39
>>590
時間がありあまってるニートなら自前で用意するという発想に至りそう
間違っても社会人の発想ではないな
593デフォルトの名無しさん:2013/07/25(木) 14:41:43.91
C言語の外部ライブラリってDXライブラリしか聞いたこと無いんですが
他にもあるんですか?

JavaだとEclipse、3DJAVAとか他にも色々ありますけど。

というか外部ライブラリってリファレンスが無い事が多くて
使えないんですよね。リファレンス読むのが自慢な人って羨ましいです。
594デフォルトの名無しさん:2013/07/25(木) 14:42:20.30
>>588
ライセンスフィーいくらだよ。
使えってるんだから、当然知った上での発言だろうな。
595デフォルトの名無しさん:2013/07/25(木) 14:46:38.36
>>590
OpenSSLやputtyの作者は無能ですか、そうですか。
暗号関係のソフトは普通に自分で実装してるけど。
596デフォルトの名無しさん:2013/07/25(木) 15:02:31.30
>>593
libpngとかWinsockとか
色々あるだろ無能
597デフォルトの名無しさん:2013/07/25(木) 15:03:28.47
ソフトウェアに金出すのってアホらしくね?
1と0の組み合わせのアイディアに金出してるってだけでしょ?
それが分かれば一瞬でコピーできるのに。
統合環境、描画ソフトに10万とか20万払ってる奴はどんだけ金持ちなん?
598597:2013/07/25(木) 15:07:58.54
友達で、グラフィックが良いソフトはCDの表面の光沢が普通のに比べて
格段にツヤがあるとかいっててワロタwwww
いやそれはプレステの機械のほうで、CDは全部一緒だよwコードが違うだけww
599デフォルトの名無しさん:2013/07/25(木) 15:09:32.14
>>597
> それが分かれば一瞬でコピーできるのに

科学の数式だって「わかれば一瞬でコピー」できるよね
発想に対する価値の否定は科学の否定と同義
つまり原始時代に帰れってことだ
600597:2013/07/25(木) 15:14:33.30
>>599
いやでもプログラムには著作権ないよね?
アルゴリズムには著作権無いって法律に記されてるし。
仮に引っかかるなら変数名を変えればいいし。
601597:2013/07/25(木) 15:17:36.93
プログラムの挙動からそのプログラムの中身を透視できるソフトがあればいいのにな。
何故作らない?
602デフォルトの名無しさん:2013/07/25(木) 15:51:30.35
透視って何を透視すんだよ
603デフォルトの名無しさん:2013/07/25(木) 15:54:52.60
明らかにマじゃないので相手する必要なし
604デフォルトの名無しさん:2013/07/25(木) 16:22:34.20
こういうアホだろ
マじゃないニートの癖に出しゃばって来てIDを入れようとする馬鹿どもは
605デフォルトの名無しさん:2013/07/25(木) 17:04:32.03
どのAPIを叩いているかを追跡して
何のジャンルのソフトかを絞り込むくらいはできると思うけど
606デフォルトの名無しさん:2013/07/25(木) 17:10:29.46
俺はフリーしか使わない。
607597:2013/07/25(木) 18:17:38.45
>>604
マじゃなくてエンジニアですが何か?w
というかマって何の略ですか?マンマミーヤですか?
608デフォルトの名無しさん:2013/07/25(木) 20:01:16.86
YouTubeで視聴できる
一番イケてるPVを
教えてください
プロアマ問いません
609デフォルトの名無しさん:2013/07/25(木) 20:54:36.01
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柱の一番下の値とします。
612デフォルトの名無しさん:2013/07/25(木) 22:30:52.85
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
615 ◆QZaw55cn4c :2013/07/25(木) 23:10:56.09
>>600
ありますよ
616デフォルトの名無しさん:2013/07/25(木) 23:22:13.11
マルチスレッドなんざ女子供向け
男ならシングルスレッド一択

お〜と〜こだった〜ら〜♪
シングルスレッドにか〜け〜る〜♪
か〜け〜て〜も〜つれ〜た〜♪
アルゴリズムを読み解く〜♪
617デフォルトの名無しさん:2013/07/25(木) 23:48:13.36
>>600
ヘッダ部分にコピーライト書いてあるソースは良く見かける
618デフォルトの名無しさん:2013/07/26(金) 00:26:25.73
ソース(のテキスト)にはある
アルゴリズムにはない
変数名関数名を変えたりすると侵害を証明するのが難しい
619デフォルトの名無しさん:2013/07/26(金) 01:00:30.48
ttp://www.houko.com/00/01/S45/048.HTM
著作権法第10条3項
> 3.解法 プログラムにおける電子計算機に対する指令の組合せの方法をいう。

解法ってのは、アセンブラのニーモニックとかのこといってるだけじゃね
コンピュータの命令(言語の文法?)自体には著作権はないが
コンピュータの命令の組み合わせによる表現には著作権があるってことじゃ

解法をアルゴリズムって解釈していいのかってところ?
数学の解法には著作権がないところから来てるらしいけどね(著作権切れしてるだけ?)
ttp://www.furutani.co.jp/cgi-bin/term.cgi?title=%83A%83%8B%83S%83%8A%83Y%83%80
620デフォルトの名無しさん:2013/07/26(金) 01:04:47.48
>>619
解法は解を得る方法なんだから、アルゴリズムの事じゃないの?
根拠はないけど、一般的に考えて。
621デフォルトの名無しさん:2013/07/26(金) 01:27:19.20
第1項第9号に掲げる著作物に対するこの法律による保護は、
その著作物を作成するために用いるプログラム言語、規約及び解法に
及ばない。

おまいら前後の文脈を読み取れずにプログラムいじって
バグ仕込む無能だな
622デフォルトの名無しさん:2013/07/26(金) 02:12:14.87
ソフトウェアの著作権と特許、アルゴリズムとその表現(具体的な実装)を
区別しないと混沌とした話にしかならんな
623 ◆QZaw55cn4c :2013/07/26(金) 05:12:11.74
624 ◆QZaw55cn4c :2013/07/26(金) 05:29:30.51
>>619-620
プロの意見 http://www.indigobullet.com/info-d/programCopyright.html
解法(アルゴリズム)は著作権法で保護されない(著作権法第10条第3項)。

ここをみて発見した驚愕の事実‥‥
・フォント(書体の形状自体)は、原則、保護対象外(最高裁H12.9.7-H10(受)332号)。
・リバースエンジニアリング は、複製等にあたらないため、著作権の侵害行為とはならない

・ダイナミックリンクによるライブラリの使用
実行形式ファイルにライブラリのコードは含まれない。
したがって、ライブラリをダイナミックリンクで実行時に使用する実行形式ファイルを作成する行為は、ライブラリ内のコードの複製とは考えられない。
その実行形式ファイルを実行するとライブラリファイル内のコードがメモリにロードされるが、
現時点の日本では、メモリへのロードが複製に該当するか否かは明確ではない(著作権審議会国際小委員会報告書H12.11)。

GPL 汚染は DLL で防げるらしい、誰か前例をつくってくれ
625デフォルトの名無しさん:2013/07/26(金) 06:09:42.90
>>624
GPLは民事契約だから著作権法は関係ない
626 ◆QZaw55cn4c :2013/07/26(金) 06:58:16.55
>>625
民事契約も法的拘束力の一つであるし、民事契約は主に民法に基づいて締結されるのが普通。
よく引用されるのだが、民法第90条では民事契約と成文法とがリンクしていることを示しているのでは?
627デフォルトの名無しさん:2013/07/26(金) 08:39:20.64
面白そうな話だがスレ違いだ
http://toro.2ch.net/test/read.cgi/tech/1266247461/l50
628デフォルトの名無しさん:2013/07/26(金) 08:54:49.56
公序良俗に反する行為を必死て煽っているゴミクズが民法90条とは大笑いだ
629 ◆QZaw55cn4c :2013/07/26(金) 12:25:42.66
>>628
>公序良俗に反する行為
え?何かしたかなぁ‥‥

>公序良俗
定義は?
630デフォルトの名無しさん:2013/07/26(金) 13:10:31.87
またノータリンのQzが暴れていると聞いて
631デフォルトの名無しさん:2013/07/26(金) 13:20:43.49
立教の法学の先生のページ
www.rikkyo.ne.jp/~asatsuma/12gendaishakai.html
3.講義ノート7.2.参照。カンニングペーパーの販売契約は、民法90条の公序良俗違反であるとして、契約の有効性が否定される。
632デフォルトの名無しさん:2013/07/26(金) 13:45:11.61
都合が悪くなるとすぐにコテを外すクズ
633デフォルトの名無しさん:2013/07/26(金) 16:16:01.00
手の形を自動的に描画するプログラムって作れますか?
そういう事考えた人このスレにいますか?
ちょっと今自動お絵かきソフトの研究しているんですが、精通している
人がいたら教えて欲しいです。
634デフォルトの名無しさん:2013/07/26(金) 16:20:20.58
>>633
内部に3Dモデル持つのが一番楽だと思う
画角と距離はユーザーが調整できるようにするしかない
635デフォルトの名無しさん:2013/07/26(金) 16:33:59.26
3Dプリンターのスキャナー部分を購入する。
636デフォルトの名無しさん:2013/07/26(金) 17:04:18.47
>>634
3Dじゃなくてもいいです。
二次元でいいです。
637デフォルトの名無しさん:2013/07/26(金) 17:07:12.88
3Dモデルを写真のように2Dにしろってことだろう。
638デフォルトの名無しさん:2013/07/26(金) 17:19:40.57
リアルな絵じゃなくて、女性らしいしなやかな手とか
荒くれ男のゴツゴツした手とかを自動描画したいんじゃないかね
あれなかなか難しいからね
639デフォルトの名無しさん:2013/07/26(金) 17:21:35.04
>>636
2Dだと元画像が山ほど必要になってしまうから
3Dのほうが簡単
640デフォルトの名無しさん:2013/07/26(金) 17:40:49.33
>>637
違うんです。
アニメ絵(例えば、どらえもんとか)を学習してアニメを自動で描きたいのです。
641デフォルトの名無しさん:2013/07/26(金) 17:43:41.95
学習する材料が写真ではなくアニメという事です。
642デフォルトの名無しさん:2013/07/26(金) 17:49:03.09
>>640
そんな技術があったらアニメ会社がとっくに目をつけてるよ
つまり現段階では不可能てこった
643デフォルトの名無しさん:2013/07/26(金) 17:52:32.92
研究とかいってるけど
単にトゥーンレンダリングしたいだけとかいうオチは?
644デフォルトの名無しさん:2013/07/26(金) 17:54:06.86
アニメの3Dモデルつくれ。
ピクサー・アニメーションは早い時期にフィギュアを作ってるらしい。
645デフォルトの名無しさん:2013/07/26(金) 17:56:08.11
PCで直に3Dモデルを作れるならそのままでよく、
苦手だったらドラえもんのフィギュアを買ってくるか、粘土で作って3Dスキャナーで取り込む。
646デフォルトの名無しさん:2013/07/26(金) 17:58:17.57
>>642
何故無理なんでしょうか?

のび太が走るという動作を、のび太のグラフィックから解析して
自動でアニメーション作成とかできないですか?
3Dでできるんだから2Dならもっと楽かと思いますが。
もしかしてアニメ会社の人ですか?
アニメが簡単に作られたら困るからそういう技術が開発されないように
圧力とかあるんでしょうか?
647デフォルトの名無しさん:2013/07/26(金) 18:02:02.95
>>646
フラッシュアニメっぽいのならいけるんじゃね?

先行論文読まない研究ってどういうことだよw
探してすらないだろw
648デフォルトの名無しさん:2013/07/26(金) 18:02:10.43
3Dの方が簡単。
2Dから新たな2D画像を作り出すほうが困難。
2Dには、隠れた部分や奥行きのデータがない。
649デフォルトの名無しさん:2013/07/26(金) 18:04:13.09
/script
のび太笑う
のび太笑い転げる
どらえもんそれを見る
どらえもん怒る
どらえもんお仕置きバットをポケットから出す
のびたにそれで叩こうとする
のびた怖がる


こんな感じで文字だけでアニメつくれないですか?
650デフォルトの名無しさん:2013/07/26(金) 18:05:20.28
全身稼働するフィギュアを買ってきてポージングさせて写真にとることは
絵心やPCに詳しくなくても出来ること。
3Dモデルを作っておくことはそれと一緒。
651デフォルトの名無しさん:2013/07/26(金) 18:09:35.96
>>650
そういう場合でも写真は何枚も取らないとダメなんでしょう?
2Dだと真正面だけで済むじゃないですか?
652デフォルトの名無しさん:2013/07/26(金) 18:11:35.41
>>647
夏休みの自由研究とかあるじゃん
653デフォルトの名無しさん:2013/07/26(金) 18:12:21.64
つべに
ブランコにのるように学習させるのあるけど
3Dすげーな
654デフォルトの名無しさん:2013/07/26(金) 18:16:57.13
スパコン使えばアニメ作れるかもな
スパコンって1秒に1億以上の計算するから余裕だろ
655デフォルトの名無しさん:2013/07/26(金) 18:34:38.54
作れると思うならその通りやればいいじゃん
656 ◆QZaw55cn4c :2013/07/26(金) 19:07:51.58
657デフォルトの名無しさん:2013/07/26(金) 19:30:03.79
最近のアニメ見てると割と3DのCGを動かしてるシーンは多いよ
でも人物を3Dで置き換えるレベルにはなってないね
658デフォルトの名無しさん:2013/07/26(金) 20:49:04.42
何か途中から荒らし的な発言に変わってる気がするが、質問者は同一人物なのだろうか
659デフォルトの名無しさん:2013/07/26(金) 21:13:59.96
俺も同じ事を考えたがなつやすみだから訳のわからないのがわいてるだけかも知れん
660デフォルトの名無しさん:2013/07/26(金) 22:17:34.83
C言語を使える人間が集まってプログラミング関係の雑談するスレに成り下がったなこのスレ
専門板の勢いトップがこれなんだから、もう専門板ってコンテンツとして終わってるよね
まともなプログラミング関連の情報は全てTwitterとブログに移行した
661デフォルトの名無しさん:2013/07/26(金) 22:20:55.19
技術情報を2chから得ようとは思わんなあ
662デフォルトの名無しさん:2013/07/26(金) 22:27:55.59
そんなにツイッターとブログって役に立つの
663デフォルトの名無しさん:2013/07/26(金) 22:38:36.34
役に立つ。2chだと返答を待たなきゃならないし、過去スレは手に入るか怪しい。
他人のコードは勉強になる。
664デフォルトの名無しさん:2013/07/26(金) 22:47:55.58
どこよ
2chの代わりになるツイッターとブログを頼む
665デフォルトの名無しさん:2013/07/26(金) 22:51:12.44
最新の情報についてあれこれ語ってるスレは皆無だし、
今のム板は老人が過去を思い出しつつプログラム談義するだけの板でしかない
666デフォルトの名無しさん:2013/07/26(金) 22:53:05.50
どこと言われても困る。必要な時に必要な情報を開示してるサイトを探す。
C++に入らずC言語限定なら本だけで何とかなるが
667デフォルトの名無しさん:2013/07/26(金) 23:17:26.48
専門板の勢いトップが糞スレなのは自明
668デフォルトの名無しさん:2013/07/26(金) 23:19:32.91
こんな勢いで最新情報語ってたら、いつ勉強してるんだって事になるし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?バイト


これが俺のトラウマ
672デフォルトの名無しさん:2013/07/27(土) 06:25:39.81
2chから人を減らそうとしてる工作員が活動してるんだろ
win32apiスレや宿題スレを荒らしてるのも工作員の仕業だろ
くやしかったら2chに代わるtwitterやブログのURLを書き込んでみろよ
673デフォルトの名無しさん:2013/07/27(土) 06:38:37.42
理不尽な巻き添え規制で、まともなひとがかきこめず、荒らしがスレ立てをする
674えざだ ◆0ezadaSAmA :2013/07/27(土) 06:39:23.96
プログラム技術@open2ch掲示板
http://toro.open2ch.net/tech/

プログラム板
http://next2ch.net/tech/
675デフォルトの名無しさん:2013/07/27(土) 09:58:54.96
2chで手に入る技術の情報なんて自前で手に入るしな
むしろ間違ったこと指摘されて腹立つことのほうが多い
676デフォルトの名無しさん:2013/07/27(土) 10:39:33.74
間違った指摘が返ってくるのは入力がおかしいからだ
相手が解釈できない入力を書いた時点でマの負けと教科書に書いてある
677デフォルトの名無しさん:2013/07/27(土) 10:44:32.41
質問を自然言語で記述するから曖昧になりトンチンカンな答えが返ってくる
プログラマなら質問記述言語を開発して使うべきだ
678デフォルトの名無しさん:2013/07/27(土) 14:42:16.38
プログラムやる前にまともに勉強してれば自然言語でも十分通用するんだがな。
「説明能力検定」みたいなやつを作って、その検定である程度の級以上じゃないとプログラムしてはいけないことにすれば良い。

プログラムやろうと思えばできる環境は残るだろうが、無資格は違法にすればよい。
無線みたいなもんだ。

趣味グラマが貢献してる部分が大きいのにそんなことしたら
日本のITが世界から遅れをとると大ブーイングが起きると思うが、
母国語でまともに説明すらできない雑魚がガタガタ抜かすなという姿勢で黙殺すればよい。

検定を作れば政府も収入増えるわ天下り先は増えるわで一石二鳥だろ。
はやくやれ。
679デフォルトの名無しさん:2013/07/27(土) 14:59:29.36
お前はおそらく資格なくなるがいいのか?
680デフォルトの名無しさん:2013/07/27(土) 15:45:45.77
>>671って本当?
681デフォルトの名無しさん:2013/07/27(土) 15:48:19.43
>>680
このくらいは自分で確かめてみるほうが後々のためになる
682デフォルトの名無しさん:2013/07/27(土) 15:49:02.51
>>680
完全なウソだから信じたらダメだよ
683デフォルトの名無しさん:2013/07/27(土) 15:50:39.80
ポインタが4バイトとか都市伝説だから
684デフォルトの名無しさん:2013/07/27(土) 15:51:59.82
プログラム能力検定試験よりも、ネット利用能力検定試験が必要なんじゃない?
685デフォルトの名無しさん:2013/07/27(土) 16:04:56.78
マ板でやれ

# 段級で儲かるとか将棋じゃあるまいし
686 ◆QZaw55cn4c :2013/07/27(土) 17:48:20.98
>>677

おもしろそー、どんな漢字になるの?
687 ◆QZaw55cn4c :2013/07/27(土) 17:51:09.16
>>685
いややっぱりなんでもいいから段とか欲しい○○アマ初段!とかかっこいいじゃないすか
ネット碁今でも二桁級‥‥
688デフォルトの名無しさん:2013/07/27(土) 20:46:33.24
689デフォルトの名無しさん:2013/07/27(土) 21:10:01.77
>>680
64bit長のポインタを持っていると結果が8になる
Windows 64bitはLLP64だから8になる
690デフォルトの名無しさん:2013/07/27(土) 21:29:04.08
>>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
692デフォルトの名無しさん:2013/07/27(土) 22:11:28.38
なにこれ。
引数でポインタ受け取った側からサイズ調べるにはどうすんの?
693デフォルトの名無しさん:2013/07/27(土) 22:11:34.40
なに当たり前のこと延々とやってんの?バカ?
694デフォルトの名無しさん:2013/07/27(土) 22:31:50.56
>>692
釣り針?
695デフォルトの名無しさん:2013/07/28(日) 01:39:45.96
>>692
普通はポインタとサイズをセットにした構造体を作ってセットで渡す
696デフォルトの名無しさん:2013/07/28(日) 02:20:44.37
C++なら
template <int N>
void func(int (&array)[N]);

とすればサイズNを引っ張ってくれるけどな
配列の参照渡し
697デフォルトの名無しさん:2013/07/28(日) 05:04:35.96
>>696
C++スレへお帰りください
698デフォルトの名無しさん:2013/07/28(日) 06:33:51.94
疑心暗鬼の>>694がかわいそう。
盛大に釣られたトラウマでもあるんだろうか。

とりあえず頭は悪そう。
699デフォルトの名無しさん:2013/07/28(日) 07:28:27.43
初心者が質問するスレで、何度も同じような質問が出るのは当たり前なのにね
700デフォルトの名無しさん:2013/07/28(日) 07:48:35.44
!(0)*2
これを詳しく調べたいのですがクグるキーワード教えてもらえませんか?
701デフォルトの名無しさん:2013/07/28(日) 07:53:38.93
演算子の優先順位
702デフォルトの名無しさん:2013/07/28(日) 08:02:27.96
(!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ですか?
705デフォルトの名無しさん:2013/07/28(日) 08:11:22.04
>>703
そりゃC++じゃ
int a[ac];
こんなことできないからな
どこかで聞きかじった半端な知識で恥をかく。
706デフォルトの名無しさん:2013/07/28(日) 09:04:03.24
>>705
うわ、本当だ。gccの拡張機能か。
今まで使ってたところ修正しないと。面倒くせえ
707デフォルトの名無しさん:2013/07/28(日) 09:13:19.91
なんとC11じゃ、サポートはオプショナルに格下げだと!
余計な手間が増えた
708デフォルトの名無しさん:2013/07/28(日) 09:17:47.23
>>628
遅いレスになってしまったが実際問題として困るのは短いスパンでも長期的スパンでもお題掲示者その人だ
短いスパン:「はい、あなたの回答はここのコピペですね再提出ね」あそこは有名だし
長期的スパンについてはいうまでもない
709デフォルトの名無しさん:2013/07/28(日) 13:56:30.94
>>649
作れるよ。
「怒るとは?」レベルから全部定義する事になるんで、即効ではない。
710デフォルトの名無しさん:2013/07/28(日) 17:42:12.71
typedef したものをさらに typedef するメリットを教えてくらさい

例えば、<WinNT.h> に
char型を CHARに typedef した後
CHAR を *LPCH に typedefしてるんだけど

typedef char *LPCH

ってしちゃだめなの?
711デフォルトの名無しさん:2013/07/28(日) 17:47:03.45
CHAR型に一般性をもたせるためだろ。
CHAR≠charとなっても、CHARを使っている部分は変更しなくてよく
CHARだけの変更でいい。
712デフォルトの名無しさん:2013/07/28(日) 17:51:19.01
>>711
なるほどなるほど

CHAR を変えるだけで
修正しやすいってことですね
なるほど
ありがとう!
713デフォルトの名無しさん:2013/07/28(日) 17:52:26.88
たしかに、他にも CHAR で typedef してますね
714デフォルトの名無しさん:2013/07/28(日) 18:13:45.72
質問です。
CADなどのソフトで登録できる要素は無限というソフトはどういったデータ管理してるのですか?
715デフォルトの名無しさん:2013/07/28(日) 18:18:05.13
reallocなどで要素数と共に確保するメモリを増やす
構造体にpNextポインタとかを用いてリンクされたデータ領域に次々と足していく
とかの方法がある
716デフォルトの名無しさん:2013/07/28(日) 18:18:45.38
でもこーゆーのは他人のコード見るのが一番勉強になるんだが
717デフォルトの名無しさん:2013/07/28(日) 18:32:41.63
>>714
データベースに突っ込んで、データの管理は丸投げするとか
718デフォルトの名無しさん:2013/07/28(日) 19:05:33.54
CHAR=charと仮定するコードを警告できない時点でアホの一言
719デフォルトの名無しさん:2013/07/28(日) 19:10:32.15
DWORDで管理してるから実質上無限とか(笑)
720デフォルトの名無しさん:2013/07/28(日) 19:15:39.35
質問です
strlenの返り値はsize_tですが、size_tではほとんどの関数の引数に渡せないため、
実際に使う際はintやlongにキャストすると思います
でもキャストするときにキャスト先のデータ型に収まらない可能性もありますよね。

その可能性を防ぐにはどのように対処するのが一般的なのでしょうか。
処理系ごとにsize_tの定義を確認してキャストが収まるか確認するべきなのでしょうか?
721デフォルトの名無しさん:2013/07/28(日) 19:17:20.52
処理系ごとにsize_tの定義を確認
しかしよっぽどヘボい例えば8ビットとかでなければ問題でないだろ
722デフォルトの名無しさん:2013/07/28(日) 19:19:19.74
>>720
基本的にはキャスト前にチェックするしか無いと思うお。
723 ◆pYmFvXkESk :2013/07/28(日) 19:25:48.43
C言語を用いた大学一年生のプログラム作成課題の代行をしていただける人を探しています。
理学部や工学部の課題ではないので難解なものではないと思います。
報酬は5000円程度で考えております。

どなたか宜しくお願いします。

bc149kあっとやふー
724デフォルトの名無しさん:2013/07/28(日) 19:28:59.53
725デフォルトの名無しさん:2013/07/28(日) 19:53:43.34
>>723
マルチ市ね
726デフォルトの名無しさん:2013/07/28(日) 21:50:41.39
>>708
麻薬の売人には罪が無いとでも?
727デフォルトの名無しさん:2013/07/28(日) 22:56:35.57
>>720
キャストした後に負かどうか調べりゃいいんじゃね
728デフォルトの名無しさん:2013/07/29(月) 07:02:11.76
型のサイズの問題が顕在化するのってコンパイル時?実行時?
コンパイル時ならコンパイル済のバイナリ配布の場合は気にしなくていいよね
729デフォルトの名無しさん:2013/07/29(月) 07:33:12.82
>>727
キャストによってオーバーフローを起こした時点で結果は未定義のはずだし、
運良く上位ビットを切り捨てる挙動をしたとしても
値が負になる保証はない気がする
730デフォルトの名無しさん:2013/07/29(月) 07:59:18.92
>>726
麻薬売人と宿題スレとはなんの関係もない
731デフォルトの名無しさん:2013/07/29(月) 10:04:05.49
なぜ唐突に宿題スレが?
宿題スレで麻薬の密売やってるのか?
732デフォルトの名無しさん:2013/07/29(月) 16:21:52.21
型のサイズの問題が顕在化するのってコンパイル時?実行時?
コンパイル時ならコンパイル済のバイナリ配布の場合はそこまで気にしなくていいよね
オープンソースみたいにソースそのものを配布する場合は注意が必要だけど
733デフォルトの名無しさん:2013/07/29(月) 18:42:52.54
>>732
何が問題なのか分からない
734デフォルトの名無しさん:2013/07/29(月) 19:13:48.32
>>729
キャストでオーバーフローって何だよ
0xFFFFFFFFが-1になるかUINT_MAXになるかの違いじゃないの?
735デフォルトの名無しさん:2013/07/29(月) 19:18:23.51
>>732
C言語のソースコードはよほど注意深く作らない限り必ず環境依存が発生するから、あまり気にしてもしょうがない
環境依存を吸収するための条件分岐だらけでも困るだろ?
736デフォルトの名無しさん:2013/07/29(月) 20:01:27.74
実行時にも顕在化せずにたまーに落ちるとかもありえるけどね
737デフォルトの名無しさん:2013/07/29(月) 20:07:13.52
>>734
(符号のことは一旦棚上げして)
サイズが小さくなる整数型へキャストした時の話なんでないの?

戻りsize_t → int へキャスト
ただし sizeof(size_t) > sizeof(int) でした
738デフォルトの名無しさん:2013/07/29(月) 23:45:02.49
int (* const funcs[])(int) = {fun1, fun2};
の関数ポインタ配列でconstなのは何ですか?
739デフォルトの名無しさん:2013/07/30(火) 00:06:38.96
書き換え不能
740デフォルトの名無しさん:2013/07/30(火) 01:29:36.35
#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;
}
741 ◆QZaw55cn4c :2013/07/30(火) 01:43:45.91
>>738
配列。funcs[1] = func3; とかができない
http://codepad.org/2fEZaA9D
742デフォルトの名無しさん:2013/07/30(火) 18:01:37.17
>>740
HOGE厨は消えろクズ
743デフォルトの名無しさん:2013/07/30(火) 20:23:31.78
解説やサンプルでhoge使ってる書籍は例外なく悪本だから、
購入前にチェックすることをおすすめする。
744デフォルトの名無しさん:2013/07/30(火) 20:42:20.60
foobarならいいのか?
745デフォルトの名無しさん:2013/07/30(火) 20:50:40.52
usugeなら許す
746デフォルトの名無しさん:2013/07/31(水) 12:31:19.34
>>743
そんな本ばかり買ってたんですか。
747デフォルトの名無しさん:2013/07/31(水) 12:34:22.80
解説やサンプルでfoobar使ってる書籍は例外なく悪本だから、
購入前にチェックすることをおすすめする。
748デフォルトの名無しさん:2013/07/31(水) 16:16:43.66
解説やサンプルでhoge使ってる書籍は例外なく悪本だから、
購入前にチェックすることをおすすめする。
749デフォルトの名無しさん:2013/07/31(水) 19:09:26.18
解説やサンプルでusuge使ってる書籍は例外なく悪本だから、
購入前にチェックすることをおすすめする。
750デフォルトの名無しさん:2013/07/31(水) 19:57:54.63
そんなんあるわけないだろw
751デフォルトの名無しさん:2013/07/31(水) 20:04:02.78
具体的に書籍名を挙げてみて
752デフォルトの名無しさん:2013/07/31(水) 20:13:10.06
解説でusageを書いてる書籍は良本
753デフォルトの名無しさん:2013/07/31(水) 20:17:03.01
解説でhageを書いてる書籍は良本?
754デフォルトの名無しさん:2013/07/31(水) 22:49:12.33
hageが書いたC++ D&E本は良書だった
755デフォルトの名無しさん:2013/08/01(木) 09:30:01.03
>>754
うむ、それにはハゲしく同意
756デフォルトの名無しさん:2013/08/01(木) 11:59:18.48
>>754
禿同
757デフォルトの名無しさん:2013/08/01(木) 12:32:08.93
758デフォルトの名無しさん:2013/08/02(金) 00:43:35.67
「減価償却費を経費扱いせず、固定資産税もかからない建設仮勘定に計上」 経費で消えるはずの金額をなぜか利益に積み増す!!!!!
馬鹿か!!!! 世界に通用しない朝鮮独自の会計ルールでやりたい放題の統計水増し!!!!! 韓国以外の株式市場で一切上場できないという間抜けな結果に!!!!

「あり得ない・・」「粉飾とかいうレベルじゃなくて、複式簿記の概念からして間違ってない?」

サ ム ス ン は 減 価 償 却 費 を 経 費 扱 い せ ず 、  固 定 資 産 税 も か か ら な い 建 設 仮 勘 定 に 計 上 し て い る

日本で言うところの経費を利益として計上している朝鮮会計のせいで、日本や海外の株式市場に上場できない。
韓国の税法上、仕掛かり中の製品、部品も全部資産。  その上、売れ残った製品も売れたのと同等の扱いなので、作れば作っただけ利益が増えるの。
そのため、ガラケーの際も3年分の在庫があったんだけど、それも資産。廃棄して潰したんだけど、それは帳簿上、どこにも出てこない。

減価償却費を経費扱いせず、固定資産税もかからない建設仮勘定に計上し資産化できるので、 半導体のような巨大装置産業に必要な巨額の設備投資を、丸々利益扱いできる。
また、海外子会社の利益を特許使用料の名目で特別損益にし、さらに法人税を韓国の輸出還付政策で丸々ゲットしてる。
759デフォルトの名無しさん:2013/08/02(金) 10:17:35.06
www
760デフォルトの名無しさん:2013/08/02(金) 10:58:36.58
建設中=仮勘定 → 竣工・利用開始=資産計上 → 償却開始 じゃないのか?

古いネタな上におかしすぎる
761デフォルトの名無しさん:2013/08/02(金) 11:24:35.11
質問です。
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を返す。

どなたか分る方いませんか?
ポインタを初期化にどう絡めるかまったくわかんないです;;
762デフォルトの名無しさん:2013/08/02(金) 11:44:46.03
まずは構造体を定義してみ
763デフォルトの名無しさん:2013/08/02(金) 12:28:05.23
struct stack {
char date;
}

void init(Stack *stack){
struct stack = {\0}
}
これじゃポインタ要らないですよね
764デフォルトの名無しさん:2013/08/02(金) 12:37:53.78
>>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)];
}
765デフォルトの名無しさん:2013/08/02(金) 12:50:00.56
>>764
ありがとうございます
766デフォルトの名無しさん:2013/08/02(金) 12:50:00.64
>>763
そうとうがんばらないと落ちこぼれるな。
767デフォルトの名無しさん:2013/08/02(金) 13:02:54.00
いまどき最大値が決めうちのスタックなんて誰も使わねーよ
そういうプログラムを書く人が多いから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];
}
768デフォルトの名無しさん:2013/08/02(金) 13:09:52.49
明らかに初学者の学習目的の設問なのに
勝手に実用向けの拡大解釈なんかすんじゃねーよ

そもそも pushで 0 が渡された時の欠陥を指摘できない素人が何語ってるんだ
769デフォルトの名無しさん:2013/08/02(金) 13:16:41.63
>>768
いくら初心者向けの設問だからって最大値が決まってるスタックはありえないわ
ただの配列じゃんw
770デフォルトの名無しさん:2013/08/02(金) 13:19:13.51
固定サイズでもエラーを返すなら問題ない
0ターミネートのスタックはゴミ
771デフォルトの名無しさん:2013/08/02(金) 13:23:19.74
> 固定サイズでもエラーを返すなら問題ない

くそワロタ
エラー処理なんてライブラリによってさじ加減が異なるんだからサイズチェックするもしないも自由
nullチェックからサイズチェックまで全部やるの?w
772デフォルトの名無しさん:2013/08/02(金) 14:26:05.84
>>769
どこの馬の骨か分からない雑魚が俺様理論を展開したいならブログでどうぞ
根拠があるなら信頼できるソースをどうぞ
773デフォルトの名無しさん:2013/08/02(金) 14:32:34.03
スタックのひとつのエントリを構造体で作成して
リンクリストにするんじゃないの?
774デフォルトの名無しさん:2013/08/02(金) 14:39:56.99
VS(Visual Studio)上でC言語でプログラム作っています。
VSで-lっていうオプションはどういう働きをしますか?
この-lに対応するコードは書かないと駄目なのでしょうか?
775774:2013/08/02(金) 14:49:54.33
すいません。
コードにargv[i]が-,pのときとオプションが指定されてました。
776773:2013/08/02(金) 14:55:29.89
というわけでやってみたよ
>>761
http://ideone.com/UoAmWW
777デフォルトの名無しさん:2013/08/02(金) 15:04:30.57
>>776
これが一番シンプルかつ最良の答えだな
778デフォルトの名無しさん:2013/08/02(金) 16:08:09.96
設問だから仕方ないけど pop と push の戻り値が int だったら
エラーと値が区別つくのにと思った
779デフォルトの名無しさん:2013/08/02(金) 17:54:12.97
>>778
俺も一瞬それ思ったけど、charとintのサイズが同じ環境もありえるから
扱うデータの範囲を0以上にするとか仕様がないとintにしても同じだな。
780デフォルトの名無しさん:2013/08/02(金) 17:58:23.92
>>767
realloc()使うのにこういうまとまったサイズごとに、確保するのって
コードが複雑になるだけでメリットなんもないね。
(みたいなツッコミをすると組み込みの環境では〜とか反論しだしたりするんだろうけど)
781デフォルトの名無しさん:2013/08/02(金) 18:06:31.81
まあアセンブラで書いたら頭がこんがらかってバグが取れないところを
C言語だと割りと楽に書けるというのはあるけどな
782デフォルトの名無しさん:2013/08/02(金) 18:14:21.90
>>776
initは失敗できない。というお題を満たしてないので
http://ideone.com/2RAa1a
783デフォルトの名無しさん:2013/08/02(金) 18:23:43.63
'\0'はpushできなくていいのかね。
784デフォルトの名無しさん:2013/08/02(金) 18:37:04.54
popの失敗値が0だから必然的に0はpushできないという制約がある。
785デフォルトの名無しさん:2013/08/02(金) 19:02:44.57
1) 失敗と成功を区別するために0はpushできない
2) 0がpushされた際は失敗と成功を区別できなくなる

どちらの仕様かは解釈によるだろ?
786デフォルトの名無しさん:2013/08/02(金) 19:07:47.33
push成功したオブジェクトをpopできないスタックは壊れている
787デフォルトの名無しさん:2013/08/02(金) 20:17:23.03
>>786
0もpopはできるでしょ
ただそれが成功か失敗か判別できないだけで、データは返されている
788デフォルトの名無しさん:2013/08/02(金) 20:57:49.89
区別する必要はない
区別できないスタックは壊れている
789デフォルトの名無しさん:2013/08/02(金) 20:58:26.23
壊れてるwww
790デフォルトの名無しさん:2013/08/02(金) 21:03:36.72
頭が壊れてんのか
791デフォルトの名無しさん:2013/08/02(金) 21:38:18.92
返しているけど区別できないなどいう戯言は壊れた頭でなければ発する事は不可能
792デフォルトの名無しさん:2013/08/02(金) 21:51:10.15
そこまでできれば改良は簡単でしょう
793デフォルトの名無しさん:2013/08/02(金) 22:15:19.44
>>787
失敗だったら、データが返されてるとは言えないだろ
そもそもその後、ポインタずれてるかもしれないようなスタック使い物にならんだろ
794デフォルトの名無しさん:2013/08/02(金) 23:21:27.50
仕様書に「失敗したときは0を返す」って書いてあったらさ
0認めない派の人は勝手に入力値から0を削っちゃうの?
795デフォルトの名無しさん:2013/08/02(金) 23:50:50.55
>>794
普通に、これこれの時まずくないですか? って確認するだろ。
796デフォルトの名無しさん:2013/08/02(金) 23:59:44.20
エラーのときは99を返すという仕様で作ってて、
いつの間にか返却値がその値になるケースが出てきたことがあったな
どう対処したかは、忘れた
797デフォルトの名無しさん:2013/08/03(土) 00:13:47.53
>>795
ライブラリの仕様書に「この関数は失敗したときに0を返す」って書いてあったらさ
「じゃあ0は受け付けないようになってるんだな」って勝手に解釈するの?
798デフォルトの名無しさん:2013/08/03(土) 00:18:42.40
たとえば成功失敗フラグを別の変数にセットするとか
それなら同じ0が返ってきても成功か失敗か区別できるだろ?
だから失敗時に0を返すからと言って入力値の0を制限するのは拡大解釈だよ
799デフォルトの名無しさん:2013/08/03(土) 01:23:04.91
仕様書には間違いがある。
問題文には間違いは無い。不合理な部分も含めて問題だ。

問題文と仕様書を取り違えてるバカってなんなの?
800デフォルトの名無しさん:2013/08/03(土) 04:15:59.96
>>797
確認するって書いてあるのに、勝手に解釈するの? って聞かれても...
日本語難しいですか?
801デフォルトの名無しさん:2013/08/03(土) 04:52:02.94
ま、教育的な問題ではないことは確かだね
802デフォルトの名無しさん:2013/08/03(土) 08:54:00.46
>>767
>いまどき最大値が決めうちのスタックなんて誰も使わねーよ

いや、普通に使うし・・・
特にミッションクリティカルな場面ではそうするだろ。
803デフォルトの名無しさん:2013/08/03(土) 09:07:29.31
固定配列の方が、その都度メモリアロケーター呼び出すより格段に速いからな。
804デフォルトの名無しさん:2013/08/03(土) 09:20:07.46
>>767
組み込みバカにすんな!
805デフォルトの名無しさん:2013/08/03(土) 09:50:21.81
ミッションクリティカルな場面だとか
組み込みだとか
そういう特殊な用途じゃなきゃ最大値固定スタックなんて誰も使わないって認識でおkかニャ?
806デフォルトの名無しさん:2013/08/03(土) 10:13:19.32
>>794
Alloyを使って最初に試しそうな問題だな。
その妥当性を確かめるにはどのようなassertを入れればいいかとか、正しく
動作するようにするためにはどのような仕様(制約)を追加すればいいかとか。
807デフォルトの名無しさん:2013/08/03(土) 10:16:47.34
>>805
誰も使わないわけじゃないが、動的にメモリ取って問題ないならそうするだろう
808デフォルトの名無しさん:2013/08/03(土) 10:42:00.35
>>806
・呼び出し側は関数の実行結果が成功か失敗か区別できる必要があるのか
・その場合、成功か失敗かは関数の返り値から区別しなければならないのか。
 たとえばGetLastErrorのように最後のエラー内容を取得する仕組みではだめなのか

この二つをどう解釈するかの問題。
一般常識的に言えば両方「YES」。仕様書に厳密に従うのであれば両方「NO」
例えばライブラリの仕様書に>>761が書いてあったら、
成功時に0が返ってきても仕様書通りではあるので文句は言えない。
809デフォルトの名無しさん:2013/08/03(土) 11:38:12.06
>>808
>GetLastError
これ今いち嫌い、マルチスレッドで保証されているのか、とか
810デフォルトの名無しさん:2013/08/03(土) 11:42:34.18
push(0, stack)がエラーであるという定義はないので、全部受け入れる
pop(stack)==0ならエラーである
まあ取り敢えずおかしいってことを頭に入れときゃ、文字列だけの運用ならどうにでもなるだろう
811デフォルトの名無しさん:2013/08/03(土) 11:48:38.96
>>808
Alloyって、その従うべき仕様書が妥当かどうか確かめるツールよ。

【Alloy】形式言語による仕様記述【VDM】
http://toro.2ch.net/test/read.cgi/tech/1357387746/
812デフォルトの名無しさん:2013/08/03(土) 12:19:33.13
>>811
Alloyは形式的に記述した仕様の妥当性(矛盾はないか、条件は満たしてるか、想定外外のケースは起きないか)などを
確かめるためのツールであって、自然言語で書かれた仕様の解釈が妥当か確かめるツールではないよ。残念ながら
自然言語の仕様書の解釈を誤ってAlloyに入力したとしても、その解釈の誤り自体はAlloyは指摘してくれない
813デフォルトの名無しさん:2013/08/03(土) 12:30:29.42
>>805
当たり前だが、要件次第でしよ。
要素が 10個までとなっているなら固定でいいだろうし。
814デフォルトの名無しさん:2013/08/03(土) 12:40:49.90
>>813
ほとんどの用途において最大値を固定するメリットはありませんよw
815デフォルトの名無しさん:2013/08/03(土) 13:04:30.97
>>812

そりゃ、Alloyは仕様の妥当性を確かめるツールであって仕様書の解釈を確かめる
ツールじゃないわな。
妥当性を検証すべきは>>761の仕様であって、その解釈じゃない。そもそも>>761
記述であいまいさが残るのはpush()の返値ぐらいで、十分明確だから解釈問題にも
ならんだろう。
816デフォルトの名無しさん:2013/08/03(土) 13:10:07.23
>>814
君にはないと言うだけのこと
817デフォルトの名無しさん:2013/08/03(土) 13:43:08.82
>>815
つまり>>761の仕様に対してAlloyを用いても特に意味はないと。
818デフォルトの名無しさん:2013/08/03(土) 13:59:04.79
>>817
もちろん、仕様を所与のものとして受け取るだけの人が使っても意味はない。
819 ◆QZaw55cn4c :2013/08/03(土) 14:06:30.56
>>767
やってみた
http://codepad.org/Q6DnnCy7

‥‥‥
820デフォルトの名無しさん:2013/08/03(土) 15:46:34.07
Cで、return に使う定数ってどこかのヘッダに定義されていないの?
exitならstdlib.hにEXIT_FAILUREみたいなのがあるんだけど、それのreturn版が欲しい
821デフォルトの名無しさん:2013/08/03(土) 15:51:23.90
>>820
main 以外の関数の話?
822デフォルトの名無しさん:2013/08/03(土) 16:18:37.80
sysexit.hとか
でも子プロセスの終了ステータスをboolじゃなく、値で扱っている奴はMTA以外には知らない
823デフォルトの名無しさん:2013/08/03(土) 17:10:02.53
>>820
ない

enum とか使って自分で定義して
それを使うように統一するとエレガント

てか単純に、ライブラリのその関数の説明見ろや、で済む話かも知れんがw
824デフォルトの名無しさん:2013/08/03(土) 17:24:06.80
前から思ってたんだけど、このスレって、勘違い君が一人だけ紛れ込んでいるよね
普通は〜とか言いながら固定環境に特化した極論ばかり主張している事に気付いて無い人
多分知識には自信があるんだろうけど、経験の種類が足りてないと見る
825デフォルトの名無しさん:2013/08/03(土) 17:26:57.75
>>824
具体的にどのレスのことかアンカー振ってみてよ
826デフォルトの名無しさん:2013/08/03(土) 17:41:47.99
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 ◆QZaw55cn4c :2013/08/03(土) 17:53:19.24
828デフォルトの名無しさん:2013/08/03(土) 18:00:53.31
829デフォルトの名無しさん:2013/08/03(土) 18:05:55.31
>>824
>固定環境
何が「固定」なんだ?どこの方言だ?

https://www.google.co.jp/search?client=opera&q=%E5%9B%BA%E5%AE%9A%E7%92%B0%E5%A2%83
ググってもよくわからんが?
830デフォルトの名無しさん:2013/08/03(土) 18:06:56.69
>>827
なんというドンピシャなコードwww
ありがとうございますありがとうございます!!

>>828
過去ログ漁って修行します
831デフォルトの名無しさん:2013/08/03(土) 18:07:47.67
>>767
yahoo知恵袋からパクってきた
http://codepad.org/LUs0DiiT
832デフォルトの名無しさん:2013/08/03(土) 18:29:27.41
hoge狩りの次は普通狩りかよ
833デフォルトの名無しさん:2013/08/03(土) 19:07:11.33
>>828
なにか言いたいことはわかったが、何を言いたいのかさっぱりわからん
834デフォルトの名無しさん:2013/08/03(土) 19:27:52.70
>>767 のいまどき君は入らないの?
835デフォルトの名無しさん:2013/08/03(土) 19:32:47.66
>>767 なんてヘボすぎて話しにならないってことだろ
得意げにバカ晒してるのがかわいそう
836デフォルトの名無しさん:2013/08/03(土) 21:21:47.50
二年以上公開オナニーを続けている最下層ゴミクズに比べりゃかわいいもの
837デフォルトの名無しさん:2013/08/04(日) 00:54:35.25
いいからお前ら早くコーディング作業に戻るんだ
838デフォルトの名無しさん:2013/08/04(日) 12:40:05.17
>>836
オナニーも徹底すれば芸術だね
839デフォルトの名無しさん:2013/08/04(日) 22:43:27.61
関数の、このプロトタイプ宣言と実体と
 static void test(void);

 void test(void) {
  return;
 }

これとでは
 static void test(void);

 static void test(void) {
  return;
 }

関数のスコープは変わるのでしょうか?
840デフォルトの名無しさん:2013/08/04(日) 23:36:10.18
>>839
上の奴は、gccだとexternで外部参照しようとしたらエラー出た
error: static declaration of 'test' follows non-static declaration
841デフォルトの名無しさん:2013/08/05(月) 01:28:14.93
>>840 レスありがとうございます。
ちょっと頭が混乱してきたので出直します。
842デフォルトの名無しさん:2013/08/05(月) 03:29:06.89
>頭が混乱
お前頭以外の部分が混乱することあんの?
頭痛が痛い?
843デフォルトの名無しさん:2013/08/05(月) 07:50:17.41
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が追加されただけ
844デフォルトの名無しさん:2013/08/05(月) 07:55:55.12
>>842
おもしろくない、0点
845デフォルトの名無しさん:2013/08/05(月) 07:59:43.50
>>843
問題無いように作れば問題無い
846デフォルトの名無しさん:2013/08/05(月) 08:38:44.35
3Dのモデリングツール作ってるんだが数値がずれることがある。
3Dって特性上、小数を扱うんだけど、入力した値が0.0001とか、細かい単位で勝手に変わってることがある。
入力しても見てみるとまたずれてる。

コンピュータは2進数で管理してるから1ビットごとに0.5、0.25、0.125、・・・ってやつのビットで管理してるから
まぁ近似値しか表現できないのかとも思うが何とかならんのか。
847デフォルトの名無しさん:2013/08/05(月) 08:42:21.68
>>846
諦めるか適当なBCDライブラリを探すか作るか
848デフォルトの名無しさん:2013/08/05(月) 10:25:01.11
有理数で計算すればいいじゃん
849デフォルトの名無しさん:2013/08/05(月) 12:02:41.26
850デフォルトの名無しさん:2013/08/05(月) 12:19:44.28
普通はユニット値として整数で持つ
0.1μまで扱うなら1ユニット:0.005μ位か
851デフォルトの名無しさん:2013/08/05(月) 13:08:04.45
852デフォルトの名無しさん:2013/08/05(月) 13:22:29.45
>>851
処理系依存かどうかって話だろ…
特定の処理系で動いたからといって何の意味もねーよw
853デフォルトの名無しさん:2013/08/05(月) 13:54:54.65
>>852
処理系変えるなんてどこにも書いてねえじゃん
勝手に要件追加するのはカスプログラマー
854デフォルトの名無しさん:2013/08/05(月) 14:02:33.75
>>853
メンバ追加の前後で処理系を跨いでいない という前提でも

メンバの宣言順にメモリ配置されるかどうかは処理系依存なんじゃないの?
=メンバ追加行為において、追加要素がメモリ末尾側に配置されるかどうかが処理系依存
855デフォルトの名無しさん:2013/08/05(月) 14:53:17.67
>>853
質問が理解できていないようだな。
codepadの処理系でうまく動いたからと言って、
質問者が使用する処理系でうまく動かどうかは無関係ってことだ。
856デフォルトの名無しさん:2013/08/05(月) 15:12:09.07
>>854
そんなこたーない
857デフォルトの名無しさん:2013/08/05(月) 15:15:34.79
>>856
仕様書の何ページに書いてあるのか教えてね
858デフォルトの名無しさん:2013/08/06(火) 00:51:22.12
>>854
もし保証がないとしたら初期化子が直感的ではなくなるな
ビットフィールドもおかしな事になりそう
効率と互換性重視の保守党言語だからなあ、そこは保証してると思うぞ、常識的に考えてな
めんどくさいから調べないけど
859デフォルトの名無しさん:2013/08/06(火) 01:12:51.37
メンバ順にアドレスが増えるように配置される、という程度の保証はある
もちろんエンディアンやパディングについての問題は残るが
860デフォルトの名無しさん:2013/08/06(火) 01:42:53.14
>>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
861デフォルトの名無しさん:2013/08/06(火) 06:36:17.32
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
対数グラフにするとか、外れ値だけ破断線で特別枠に表示するとか
864デフォルトの名無しさん:2013/08/06(火) 10:30:26.22
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
>>862
常用対数
866デフォルトの名無しさん:2013/08/06(火) 17:07:21.64
底は色々だろ、自然対数とかマグニチュードとか
867デフォルトの名無しさん:2013/08/06(火) 19:10:46.63
対数が適当かどうかはデータ次第だな
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));
}
869デフォルトの名無しさん:2013/08/07(水) 16:57:38.08
char buf[20];
unsigned len = sprintf(buf, "%u", maxValue);
int graphYMax = power(10, len - 1) * (buf[0] - '0' + 1);
870デフォルトの名無しさん:2013/08/08(木) 10:08:54.95
expatでXMLの中身を表示していくだけのサンプルコードがありましたら教えて下さい
871デフォルトの名無しさん:2013/08/08(木) 10:21:33.37
こんなところで聞くよりgoogleに聞いた方が速いと考えない理由は?
872デフォルトの名無しさん:2013/08/08(木) 11:48:13.48
int main(void)
{
int num func();
ptintf("%d", num);
return o;
}
int func(void)
{
return 10;

独習Cを勉強しています。本に voidと宣言した関数は値を返しません
とありますが、この値を返さないとはどういう意味ですか?
10 を numに返してると思うんですが・・・・
873デフォルトの名無しさん:2013/08/08(木) 11:51:57.67
>>872 間違えました
int main(void)
{
int num;
num = func();
ptintf("%d", num);
return 0;
}

int func(void)
{
return 10;

独習Cを勉強しています。本に voidと宣言した関数は値を返しません
とありますが、この値を返さないとはどういう意味ですか?
10 を numに返してると思うんですが・・・・
874デフォルトの名無しさん:2013/08/08(木) 12:31:04.42
わかるまで何度も読み返そう。
875デフォルトの名無しさん:2013/08/08(木) 12:54:51.05
返り値の型を…と明記してないなら本が悪いな
C系の独習シリーズはあまりいい評価聞かないような
876デフォルトの名無しさん:2013/08/08(木) 12:59:48.72
>>873
void func(void)
{
return 10;
}
ならエラーになるでしょ。
877デフォルトの名無しさん:2013/08/08(木) 13:39:49.46
それ、書いといてほしいwww
878デフォルトの名無しさん:2013/08/08(木) 13:53:07.28
main() {
  return 0;
}
879デフォルトの名無しさん:2013/08/08(木) 13:54:41.71
なにもかかなかったら
intになる
880デフォルトの名無しさん:2013/08/08(木) 14:03:46.64
独習Cで独習したけど、「voidと宣言した関数」の意味がわからないなんてことはなかったけどなあ
881デフォルトの名無しさん:2013/08/08(木) 15:52:29.57
独習Cは、初心者向きじゃないからなw
引数 仮引数 実引数 値渡し 参照渡し
こういうのがよくわからず、ごちゃごちゃになる
柴田望洋買え!
882デフォルトの名無しさん:2013/08/08(木) 15:58:54.43
まあ初心者相手なんだし、「戻り値を」voidとした関数くらいにしてもいいだろう
883デフォルトの名無しさん:2013/08/08(木) 19:08:18.89
>>871
聞いたけど要素の開始と終了を表示するやつしか教えてくれませんでした
中身まで表示するのはありませんでした
884デフォルトの名無しさん:2013/08/08(木) 19:58:33.52
expat exampleで一番目に出てくるが
885デフォルトの名無しさん:2013/08/09(金) 02:12:57.79
プログラムを2人で作っています。

相手のプログラムへのインターフェースとして
構造体(のポインタ)を渡す必要があり、
その構造体が定義されているヘッダBを取り込んだところ、
コンパイルが通りませんでした。

で、見てみるとヘッダBには別のヘッダAで定義されてる定数が書かれており
にも関わらずヘッダAを取り込んでないからエラーが出ているようでした。

なので、ヘッダBでヘッダAを取り込むように相手に言ったところ、
ヘッダAとヘッダBを取り込んでいるヘッダCを取り込めと言われました。

確かにヘッダCを取り込めばコンパイルは通るものの
自分が使いたい構造体はヘッダCには定義されていないし、
結局Cで取り込んでるヘッダBを見ないと構造体の中身はわからない。

なのに、ヘッダBを取り込んではいけない、と言われて
一体何を言ってるのか理解できなかったのですが、
こういう自分の使いたい構造体なりdefine値が書かれていないヘッダを
取り込んで暗黙的にそこで取り込まれてる先のヘッダの何かを使う
というのは普通の話なんでしょうか?
886デフォルトの名無しさん:2013/08/09(金) 02:23:55.16
windows.h
普通に行われている
887デフォルトの名無しさん:2013/08/09(金) 02:27:09.86
いちばん、内容が豊富なヘッダを読み込んでもエラーならなければ問題ない。
標準のヘッダでも使わない機能は多いだろ。
888デフォルトの名無しさん:2013/08/09(金) 02:55:25.32
血美出武!
889835:2013/08/09(金) 07:14:54.36
そっか、普通なんですね

>>837
一番内容が豊富なヘッダはBです。
てか、構造体以外にもdefineだとかほぼ全部がBに入っていて、
Cに入ってるのは関数のプロトタイプ宣言くらいです。

その宣言されてる関数で渡す構造体の中身設定するためには
Bの中「の構造体を設定する必要があるのだけど、
Bヘッダは単体で読み込むとエラーだらけでまともに動かない
って感じです。
890デフォルトの名無しさん:2013/08/09(金) 08:17:20.55
なんだろうな
単体でも読み込んで動くようにしてもいいし、しなくてもいい
ただプロトタイプ宣言があるのなら、ヘッダCをincludeするのが正解なんじゃね?
891デフォルトの名無しさん:2013/08/09(金) 08:34:19.05
どっちでもいい
むしろ俺は両方やるぞ
B 単体でもコンパイル通すし、いちいち選択の指示出すのがめんどくさいから、かなり広範囲にまとめたCも用意したりする
892デフォルトの名無しさん:2013/08/09(金) 08:38:46.58
>>885
前半と後半で言っていることが逆のような気もするがそれはさておき、
別のところ(テストとか)で定義を差し替えたいからBにはインクルード
しない、みたいなのはよくある。
893デフォルトの名無しさん:2013/08/09(金) 10:10:56.03
>>889
CではBをincludeしてるんだよね?
ならCにはBの内容がまるまる書いてあるのと同じなんだから、
BよりCの方が「一番内容が豊富なヘッダ」だよ。
894デフォルトの名無しさん:2013/08/09(金) 10:23:51.23
>>885
美しくはないが、現実に広く行われていることだ
おまえさんの不満には俺も同感で、B の担当者の責任を押しつけられるのは筋違い

B のドキュメントに
「必要なヘッダ: C.h」と書いてあるのに見落としているならおまえさんの落ち度
「必要なヘッダ: B.h」と書いてあればバグレポート突きつけてやれ
895デフォルトの名無しさん:2013/08/09(金) 15:23:56.38
このスレ、ハード寄りでアルゴリズムに関して質問していいか分らないけど
Cで色んなプログラムを再帰で作り変えていて疑問が湧きました。

再帰関数って、とりあえずmain関数内で一回呼び出して、その引数に見合う
結果を出力しますよね?でも、再帰関数の中で、引数を変化させて関数を呼び出してますけど
途中でその各々の引数に見合う結果、状態になっているのでしょうか?途中でも、必ずその状態になるという
のは保障されるのでしょうか?

それとも、いくら同じ関数が途中で呼び出されようとも、mainで呼び出される再帰関数のみが、引数に見合う
処理をしていて、実は再帰関数によって行われる全ての同じ関数の処理の組み合わせで、ひとつの処理となっているのか
気になりました。
896デフォルトの名無しさん:2013/08/09(金) 15:49:13.60
>>895
何だい、その main で 1回てのは?
while で何度も繰り返したり、位相を変えて呼び出したりは普通にするぞ

第一、関数が内部で本当に再帰しているかどうかは、main には関係ない
ム板で末尾再帰の話題が頻繁に出てくるように
非再帰に変形も普通にすることだ

それと関数が状態を持つのはあまり褒めたものではない
897デフォルトの名無しさん:2013/08/09(金) 15:53:23.72
>>895
「再入可能」でググれ
898デフォルトの名無しさん:2013/08/09(金) 16:02:06.15
デバッカの使い方を覚えてステップ実行してみるとか、printf()(IDEならログ出力)とかで
変数の中身を確認しながら実行するとイメージしやすいと思う。
このさいだからデバッガの使い方を覚えるのを薦めるけど。
899デフォルトの名無しさん:2013/08/09(金) 16:53:14.84
auto 変数と static 変数の違いは分かってるのかな
900デフォルトの名無しさん:2013/08/09(金) 17:51:50.46
>>899
さすがにそのレベルの人間が再帰なんて学んでたら驚きだ
901デフォルトの名無しさん:2013/08/09(金) 17:55:27.62
俺は再帰を憶えたあとで auto と static を知ったが
902デフォルトの名無しさん:2013/08/09(金) 17:57:09.75
>>901
autoやstaticはC言語の基礎
再帰はプログラミングの中でも高度な話題

おk?
903デフォルトの名無しさん:2013/08/09(金) 18:01:06.82
>>902
再帰ってそんなに高度なのか?
合わせ鏡な話題は理系の色んな分野で普通に出てくるが
904デフォルトの名無しさん:2013/08/09(金) 18:12:59.88
>>903
再帰なんて普通の人間は使わねーよ
905デフォルトの名無しさん:2013/08/09(金) 18:28:19.45
再帰をつかわない方が高度になりえる。
ディレクトリ探索は再帰が便利。
あと再帰定理だったか、再帰とループで出来ることは全く同じ。一方は外してもいい。
ということはループが使える程度の難易度。
906デフォルトの名無しさん:2013/08/09(金) 18:36:37.38
FSM とデータパスでできているものが再帰的な働きをしても、それは非再帰だとでも言いたげだな
907デフォルトの名無しさん:2013/08/09(金) 20:28:12.80
スタックのサイズを気にする時代でもなくなったしな
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;
}
909デフォルトの名無しさん:2013/08/09(金) 20:47:19.59
4と9が出力されるだけだろ
何が入れ替わるって?
910デフォルトの名無しさん:2013/08/09(金) 20:50:52.23
>>909
なんで4と9が出力されるんですか?
3と9が出力されると思っていたのですが、
4と9が出力されるので、だったらなんで4と4が出力されないのかなと…
911デフォルトの名無しさん:2013/08/09(金) 20:56:36.26
すみません、聞き方おかしいですね…
ローカル関数で変わった値がreturnせずに、
main関数で配列だけ変更が保持されてるのはなぜかなと

初心者すぎて質問するための単語も思いつかなくてわかりにくくてすみません
912デフォルトの名無しさん:2013/08/09(金) 21:00:58.97
testを値渡ししてるからmain()のtestは初期値のまま
「参照渡し」でぐぐってみ
913デフォルトの名無しさん:2013/08/09(金) 21:08:54.28
>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のまま
914デフォルトの名無しさん:2013/08/09(金) 22:01:37.98
>>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;
}
915デフォルトの名無しさん:2013/08/09(金) 22:20:07.84
>>914
C言語には参照渡しは無いよ
全て値渡し
916デフォルトの名無しさん:2013/08/09(金) 22:51:03.24
>>915
本当だ・・・勉強になりました
>>908
すまん。>>914は「参照渡し」を「ポインタ渡し」に置き換えて読んでみて
917デフォルトの名無しさん:2013/08/09(金) 23:15:11.22
参照渡しとポインタ渡しの違いがわからない・・・
918デフォルトの名無しさん:2013/08/10(土) 00:10:54.13
ポインタ渡し・・・変数のポインタを値で渡す
参照渡し・・・
919デフォルトの名無しさん:2013/08/10(土) 00:28:34.47
参照渡しとポインタ渡しは別物。
ポインタの参照渡しも出来る。
参照渡しは呼び出し元の変数をそのまま渡す。
920デフォルトの名無しさん:2013/08/10(土) 00:33:28.56
Cには参照がないからポインタによるアドレス渡しで代用している
921デフォルトの名無しさん:2013/08/10(土) 00:41:46.69
話は逸れるけど、C++の場合にはポインタが使えます。
この場合、参照渡しとポインタ渡しでどのような違いがありますか?
922デフォルトの名無しさん:2013/08/10(土) 00:48:24.21
const& と && の場合の特殊な解釈
923デフォルトの名無しさん:2013/08/10(土) 00:54:22.51
>>921
参照渡しですむなら、その方が楽だし高速。
924デフォルトの名無しさん:2013/08/10(土) 01:03:14.81
>921
個人的なルールですが、
参照は、constと一緒に使って、その変数が変更できない場合に使う
ポインタは、変更する時に使う
925デフォルトの名無しさん:2013/08/10(土) 03:51:33.87
何だそのルールw
926 ◆QZaw55cn4c :2013/08/10(土) 07:03:47.12
>>923
本当か?
927デフォルトの名無しさん:2013/08/10(土) 07:12:05.66
参照はポインタ隠蔽しただけだから変わらない
しかし参照のがコンパイル時に最適化がしやすい
928デフォルトの名無しさん:2013/08/10(土) 09:21:23.87
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
929デフォルトの名無しさん:2013/08/10(土) 10:50:09.32
>>925
参照は呼び出しの字面見ただけじゃ、呼び出し先で変更されるのか判別出来ないから、
そのようなルールで判別可能にする事は可読性を向上させる。
良いオレルールだと思う
930デフォルトの名無しさん:2013/08/10(土) 11:56:16.98
理屈上はそれでいいだろうが。
値渡ししたくない時がポインタのみだと作るのが難しくなる。
C言語・ポインタに慣れきってばそれでいいが。
931デフォルトの名無しさん:2013/08/10(土) 12:03:50.11
>>929
ポインタだって判別出来ねえよ
const付けりゃどっちも同じ
932デフォルトの名無しさん:2013/08/10(土) 12:40:05.65
ただのデータ
*をつけるとアドレスとみなしてそのアドレスの値を読み書きするだけ
933デフォルトの名無しさん:2013/08/10(土) 13:21:22.10
C言語と同じ使い道に限定したいんだろ。
変数が書き換わるのはポインタアクセスのみ。
参照はデータ受け渡しの高速化目的のみ。
934デフォルトの名無しさん:2013/08/10(土) 13:25:37.11
ttp://pastebin.com/gxQ7QM8j
C言語勉強し始めて1年程度です
デバッグすると 'format' : 仮パラメーター リスト内にありません。
と出ます、どうすればいいですか?
935デフォルトの名無しさん:2013/08/10(土) 13:34:51.95
全角半角の空白が混じってないか
936デフォルトの名無しさん:2013/08/10(土) 14:33:12.73
全角混じってたw
初めて、Vsual studio 使ってるけど便利
重いのは難点だが・・・
937デフォルトの名無しさん:2013/08/10(土) 14:34:43.18
>>933
何で分けるかやっぱ理解できんわ
チームがそう同意してりゃいいけどさ
938デフォルトの名無しさん:2013/08/10(土) 15:40:14.95
ポインタのnullチェックとか無駄な処理が入るとテスト工程のつまらない作業が増えるんだよね
最初から参照で渡せよクズが
939デフォルトの名無しさん:2013/08/10(土) 16:19:32.65
Cでか?
C++ でも != end() は必要なら「無駄な処理」じゃないし
940デフォルトの名無しさん:2013/08/10(土) 16:22:25.81
>>939
out引数の話
オプションでもないバッファをnull許容にするとか狂気の沙汰だろ
941デフォルトの名無しさん:2013/08/10(土) 16:32:37.80
nullがある言語の時点でCに限らず実行時に判別だろう
942デフォルトの名無しさん:2013/08/10(土) 16:32:58.48
スレチだけど
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
例外は発生しない
未定義の動作なのでこれすら保証なし
945デフォルトの名無しさん:2013/08/10(土) 16:42:51.76
>>942
例外の有無そのものが処理系に依存する
また出来上がるコードは最適化による

だがどちらも一般的なコンパイラなら
恐らく関数呼び出しの直前にアクセス違反になる
(アセンブラ的にはpushしてからcallだから)
946デフォルトの名無しさん:2013/08/10(土) 16:46:35.03
>>945
>恐らく関数呼び出しの直前にアクセス違反になる
肝心な部分が書いてなかった
aの呼び出しの直前にアクセス違反になる
947デフォルトの名無しさん:2013/08/10(土) 16:53:19.34
>>940
どういうことですか?
948946:2013/08/10(土) 17:05:28.28
あれー試してみたらgcc 4.8.1/clanf 3.3 + O0だと
何事もなくa関数内まで通ってしまった
http://ideone.com/aRBXa0
デリファレンス処理そのものがコンパイルの時点で消えるようだ
ちょっと仕様読んでくる
949デフォルトの名無しさん:2013/08/10(土) 17:18:26.17
> a(*p);
この呼び出しではデリファレンス不要だから呼び出し時には例外は発生しない。
けれど、無効なポインタを字面上だけでもデリファレンスしたから無効と言う解釈かね。
950946:2013/08/10(土) 17:38:36.67
>>949
>この呼び出しではデリファレンス不要だから呼び出し時には例外は発生しない。
処理系依存なので、動作そのものはこの時点で未定義動作に突入(=エラー)だと思います。
951デフォルトの名無しさん:2013/08/10(土) 19:33:33.39
C言語でx^3+x-3=0みたいな高校数学で出てきそうな方程式を解くのにはどうすればいいですか
952デフォルトの名無しさん:2013/08/10(土) 19:41:21.61
powとかsqrtとか使う
953デフォルトの名無しさん:2013/08/10(土) 20:07:39.92
数学ができてプログラムが組めないのは素質がないとしか言いようがない
954デフォルトの名無しさん:2013/08/10(土) 20:17:11.04
http://ja.wikipedia.org/wiki/GNU_Scientific_Library

自動微分 - Wikipedia
http://ja.wikipedia.org/wiki/%E8%87%AA%E5%8B%95%E5%BE%AE%E5%88%86

数値計算ライブラリ - 大人になってからの再学習
http://d.hatena.ne.jp/Zellij/20130318/p1

日本国内の並列・HPC 応用ソフトウェアライブラリ
http://phase.hpcc.jp/htmls/phase.ja.html

GNU Octave:
http://www.obihiro.ac.jp/~suzukim/masuda/octave/html/octave_71.html
955デフォルトの名無しさん:2013/08/10(土) 20:19:14.49
>>951
ニュートン法
956デフォルトの名無しさん:2013/08/10(土) 20:23:01.40
ニュートン法の場合、手動で微分をしない(できない)時、数式の認識と微分がいるのでは。
957デフォルトの名無しさん:2013/08/10(土) 21:14:02.12
while ( 1 )
{
char data[3];
fgets( data, sizeof(data), stdin );
fflush( stdin );
}


↑で標準入力のバッファクリアできるとか書かれてたから試してみたけど
バッファクリアできねえじゃねえかwwwwwww
fgetcとかでバッファクリアするしかねえんだな
958957:2013/08/10(土) 21:22:44.03
>>957
少し訂正
VC2010の処理系だとfflushでちゃんと標準入力のバッファクリアできてたわ
Linuxのgcc4.8だとerrno=29 シーク無効が返ってきてバッファクリアできなかった

でも、移植性考えるならfgetcでバッファクリアさせたほうがよさそうだな
959デフォルトの名無しさん:2013/08/10(土) 21:54:32.78
//こんな感じ?
void next_line(FILE* fp){
int i;
do { i = fgetc(fp); }
while( (i != EOF) && (i != '\n') );
}
960デフォルトの名無しさん:2013/08/10(土) 22:00:33.15
stdinがfflushできない糞OSなんて実在すんの?
なんかの組込み用特殊OS?
961デフォルトの名無しさん:2013/08/10(土) 22:10:41.75
未定義なんだからできなくても糞とはいえなくない……?
962957:2013/08/10(土) 22:13:06.20
>>960
普通にCentOS 6.4だからRedHat系Linuxだぜこれがw
今度仕事で久々にコンソール入力のプログラム作ることになったから、
ユーザ入力用の部分どうしようかと思ってfgetsで適当に組んでみたらfflushで標準入力クリアできない事に気づいた。

処理系はgccの4.8だから最新バージョンなんだけどな。

>>959
商用だからもっと厳密にエラー処理考えてやるけどほとんどそんな感じのフラッシュ関数作ることになりそうだね。
963957:2013/08/10(土) 22:14:37.01
>>961
うむ。調べてたら未定義ってかれてたね。
http://www.kijineko.co.jp/tech/superstitions/fflush-with-input-stream.html
964デフォルトの名無しさん:2013/08/10(土) 23:06:10.04
>>960
このスレにも fflush が OS の機能だと思ってる奴がいるんだ...
965デフォルトの名無しさん:2013/08/10(土) 23:23:02.03
fflushはOSの機能でもあるだろ。
ハードウェアや言語の機能でもある。
バッファが用意されてる所全て。
966デフォルトの名無しさん:2013/08/11(日) 06:49:19.42
fflushはOSでも言語でもハードウェアでもなくライブラリの機能だな
細かい実装がどうだなんて関係ないし
967 ◆QZaw55cn4c :2013/08/11(日) 07:30:31.31
>>965
stdin よりの下のレイヤで入力を抱え込んで掃き出さないでいる、っていうことがあるの?それはOSに存在するの?
968デフォルトの名無しさん:2013/08/11(日) 09:38:44.23
>>957
そんな事が出来るとデマ飛ばしてるソースは?
969デフォルトの名無しさん:2013/08/11(日) 09:40:58.83
そこですか?
バッファって知らないの?
syncってコマンド知らないの?
970デフォルトの名無しさん:2013/08/11(日) 09:41:37.89
>>969>>967宛て
971デフォルトの名無しさん:2013/08/11(日) 09:43:08.87
バカバッファ
972デフォルトの名無しさん:2013/08/11(日) 09:46:27.30
stdin って書いてあるのに sync とか、馬鹿すぎる。
973デフォルトの名無しさん:2013/08/11(日) 09:47:11.08
うわー
いるよねstdinが特別だと思ってる人
974デフォルトの名無しさん:2013/08/11(日) 09:54:06.64
うわー、fflushでぐぐると有害ページがトップにでてくる。
wahocのセンセーも間違えてるし、相当に根が深いな。
デマの元はどこだろう。
975デフォルトの名無しさん:2013/08/11(日) 09:54:29.69
>>968
これだろ

http://msdn.microsoft.com/ja-jp/library/vstudio/9yky46tz.aspx
ストリームが入力のために開いている場合はfflush はバッファーの内容を消去します。
976デフォルトの名無しさん:2013/08/11(日) 09:56:05.50
>>973
sync がリード側になんか作用するんか?
977デフォルトの名無しさん:2013/08/11(日) 09:58:08.51
>>975
それは単に処理系固有の動作だからデマでは無い
978デフォルトの名無しさん:2013/08/11(日) 09:59:12.05
>>476
出力ドライバ(ストリーム)が出力しないと決めたら
いくら命令したって来るわけ無い
そういう当たり前の事を理解してないという事

stdinが最初からunbufferedであることなんて全然保証されてない
だからこそsetvbufする場合が出てくるわけ
もちろんそれで必ずすぐ入力が来るなんてことも保証されない
979 ◆QZaw55cn4c :2013/08/11(日) 09:59:59.49
>>968
MS-CやLSI-C ではできたように記憶しているベンダ独自の仕様だね
980デフォルトの名無しさん:2013/08/11(日) 10:00:34.84
syncはstdinは勿論、その他のstdioのストリームにはなんの作用も及ぼさない

痛々しいほどのフルボッコ
981デフォルトの名無しさん:2013/08/11(日) 10:02:55.33
QzってLSI-Cの動作知ってるほどジジイなのに、どうして未だにあれ程のヘボなんだろう。
982デフォルトの名無しさん:2013/08/11(日) 10:16:16.31
>>981
頭悪いからに決まってるだろ
しかも最悪な事にその自覚がないw
983デフォルトの名無しさん:2013/08/11(日) 10:22:50.47
>>980
stdout は、ブロックデバイスにリダイレクトされてるかもしれないから、sync に関連しなくも無い。

しかし、stdin は、仮にブロックデバイスにリダイレクトされていてもリード側だから、sync には関連しようが無い。

中途半端な知識で知ったかして自爆する例 ⇒ >>973
>>976 も多分似た様なモンだが、言ってることが支離滅裂すぎて、なんもいえねー状態 (w
984デフォルトの名無しさん:2013/08/11(日) 10:24:29.43
>>978
>もちろんそれで必ずすぐ入力が来るなんてことも保証されない
これだけだと抽象的なので実例
http://codepad.org/6ILncgay
改行が来るまで出力されない
これはコンソールドライバのせい
985デフォルトの名無しさん:2013/08/11(日) 10:25:56.85
まあいつものQzの自演だろ
986デフォルトの名無しさん:2013/08/11(日) 10:26:17.47
>>977
だから、もともとデマじゃないって。
fflush(stdin) が処理系固有の動作って言うのは、相当有名な話だぞ
987デフォルトの名無しさん:2013/08/11(日) 10:30:50.25
>>983
ブロックデバイス介したら結局OSより下位で止まるじゃん
988デフォルトの名無しさん:2013/08/11(日) 10:35:17.70
989デフォルトの名無しさん:2013/08/11(日) 10:36:46.40
>>984
それが今の話になんか関係するのか?
Raw/Cooked モードとか誰でも知ってるような話には興味ないから、チラシにでも書いとけよ。
990デフォルトの名無しさん:2013/08/11(日) 10:37:25.73
>>987
そうだが、それがどうかしたのか?
991デフォルトの名無しさん:2013/08/11(日) 10:43:40.98
面白い人だな。

俺も一言言わせてもらおう
stdinにsyncするなんて誰も言ってないよ?
OSより下位の入出力で止まるって事が主題で
バッファって知ってる?って意味の補強で言っただけだよ?

叩くことに集中しちゃって中身見えてないよね
992 ◆QZschizo.ptH :2013/08/11(日) 10:47:05.86
>>982
自覚はあると思うよお薬飲んでるし
993 ◆QZschizo.ptH :2013/08/11(日) 10:50:43.75
>>991
主題が違うよ

>>965
>fflushはOSの機能でもあるだろ。ハードウェアや言語の機能でもある。バッファが用意されてる所全て。

本当なの?
stdio ライブラリってその中だけで完結しているんじゃないの?
read() write() 以外の低水準IOを呼び出しているの?
994デフォルトの名無しさん:2013/08/11(日) 10:53:12.31
>>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
それはちゃんと説明したぞ
>バッファって知ってる?って意味の補強で言っただけだよ?
996デフォルトの名無しさん:2013/08/11(日) 11:02:42.53
うめ
997デフォルトの名無しさん:2013/08/11(日) 11:05:28.58
>>995
ストリームのバッファと OS (と言うかドライバレベル) のバッファの区別付いてるか?
998デフォルトの名無しさん:2013/08/11(日) 11:05:59.39
埋め
999デフォルトの名無しさん:2013/08/11(日) 11:07:12.90
>>993
>本当なの?
>stdio ライブラリってその中だけで完結しているんじゃないの?
>read() write() 以外の低水準IOを呼び出しているの?
何言ってるのかわからない
libcを界面としてればfflushがOSを介する機能か直接的な実装かは確定しないが
libc自体は何かしらOSやハードに依存した機能使うに決まってるだろ
どうやって何も介さずに物理デバイスに入出力するんだよ
1000デフォルトの名無しさん:2013/08/11(日) 11:07:58.58
>>997
概念は同じだろ
とにかく叩きたいってのが先行して主題が見えてないだろ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。