C言語なら俺に聞け(入門編)Part 116
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2013/06/14(金) 20:22:05.73★前スレ
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/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0838デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANブログのアクセス数どのくらい?
何か面白いプログラム作ってよ
0839デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANありがとう。
visual studioでそのファイル見つけました。
便利ですね。
0840toya
2013/07/09(火) NY:AN:NY.AN加筆修正、標準ライブラリの執筆してくれる方求む。
http://ja.wikibooks.org/wiki/C%E8%A8%80%E8%AA%9E
0841デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANおつかれ。
0842デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN応用Cとかいう題名でCの応用的な事を系統立てて学びたいどんな
プログラムにすればいいだろうか?
1章
2章
0843デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANここは執筆活動報告スレではない
他人に迷惑をかけないよう直ちに回線を切れ
0844デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN意義がある活動されてますね。
こういうのがあるの、初めて知りました。
メモリ制限とは関係ないのでは?static な領域は計算可能だから必要な分だけ .data に確保されて問題ない。
static をつけずにスタックに配列(というおおげさなもの)を置くという方が、むしろ制限を意識する。
というか、配列を初期化するときには static をつけたくなるんだね、C89 が気になって、もうやめたいけどね。
0846デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANstatic はヒープじゃない、とは一言もいっていないが?
ただ、スタックはデフォルトのままでは「実行させるまで足りなくなることがわからない」けれども、static なら確保できなければコンパイルの時点ではねられるだろう?
配列をスタックに置くのはどーかと思うよ。
>>824
をみるかぎり static な領域のほうが制限がきつい、と思っているようだけれども、その判断は疑問だね。
>>831 は static な領域のほうが制限がきつい、と思っているようだけれども、その判断は疑問だね。
0849デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0850デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANつーかQは頭大丈夫か?
0851デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0852デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN↑ これ、間違っているか?
初期化しない分はたしかにそうだね
でも、初期化する分は、普通は、リンク前にすでに組み込まれているんじゃないの?
>>849
コード領域、スタック領域以外をヒープと呼ぶ人もいるようだ(昔なら DS セグメントレジスタでアクセスする分を全部ヒープといっていたようだね)。それに異論を唱えるつもりはない。
static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?malloc() 失敗時にちまちま書くのが面倒なときは、えいや、と static にするね、配列なんか特にね。
メモリ配置は環境によるね、その図の場合もあるし、ヒープとスタックが逆の場合もあるよ。静的領域(.data と .bss)は普通はコードの後ろに置くようだけれどもね。
0855デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN初期化する分もコード内に持っていて、プログラム起動時にヒープ領域にコピーされる
0856デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN>>static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?
それは違う。メモリを割り当てるのはあくまでプログラム実行時(ロード時)。
0857デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANふむ。.text, .rdata, .data 各セクションの実行時における配置にすきまがある環境もあるんだね、意識したことはないけど
でも「確保できないのならコンパイル&リンク時点ではねられる」という点はどうであれ同じだと思うだけれども?
コンパイルできたコードが実行時(プログラムロード時)にはねられることもあるの?
0859デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANクロス開発環境って知ってる?
0860デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN実行時のメモリ不足なんてコンパイル時に分かるわけないだろう
0861デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANアホはアホらしく大人しくしていればいいものを
0862デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0863デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANもしかして自分の馬鹿さ加減を人に指摘されて喜ぶ究極のマゾなんじゃねw
0864デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN巨大なstaticな領域を取ったときに、exeファイルとしてNGとか、elfファイルとしてNGとかの
実行ファイル形式にならない場合はコンパイル時にエラーになる。
でもそうならなかったら、実行時にエラーしないとは言えない。
なぜならメモリにロードするのはあくまで実行時だから、実行時に十分なリソースが
なければロードできない。
あとOSによっては仮想アドレス空間は確保しても物理的に確保しない場合もあるから
実行開始したあとにエラーが出る可能性もある。
厳密な意味ではやったことはない。同じアーキテクチャでコンパイルと実行を別の環境としたことはあるが
>>859 >>860
なんだかだんだん特殊な状況にはいってきたね、MS-DOS で FEP だのどーでもいい辞書だの TSR だのをバンバン載せた情況で MS-C がきどーしないとか‥‥‥
はじめの話はなんだったの?スタックに配列を載せるのと static に配列を載せるのとどっちが適切か、あるいは使い分けはどこにあるか?じゃなかったの?
>物理的に確保しない場合もあるから実行開始したあとにエラーが出る可能性もある。
malloc() で OK が出てもそれを信用してはいけない、という話はよく耳にするね、でも、それって static な領域にも当てはまるものなのか‥‥‥
巨大な配列は、static に置こうが stack に置こうがあんまりかわらない、というのもなんだかねえ‥‥
炎上学習法‥‥
0868デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANだよね〜
ROM で動作する環境もあるから、実行時でないと〜 とか言ってる奴はちょっと知識が足りない。
0869デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0870デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN巨大なauto変数が生成されるとサイズがあふれて実行時に止まることはあるだろ?
0871デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN>>static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?
>>static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?
>>static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?
>>static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?
>>static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?
自覚してないバカは始末が悪いな。
バカのくせに見栄だけは一人前で特殊な状況と言い逃れようとしてるのが笑える。
0872デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN置くことは普通しない。しかしサイズを気にするならば、
>>824
> static char a[N][10] = {{0}};
こんな間抜けな事もしない。 WWWW
不要になった後その領域を再利用できない、データ領域では足りない場合がある。
からだ。 WWWW
0873デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0874デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0875デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN一般にはそういうのは無視してリンクしてしまう
0876デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0877デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANどうしたらいいですか?お絵描きして遊んだ後に、Cやろうとしてファイル
探そうとしたらお絵描きフォルダがまず最初に開くので、Cのファイルまで
辿らないといけないので凄い面倒臭いです。
0878デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANよく開くフォルダはデスクトップにショートカットでも置いとけばいいじゃん。
0879デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANそんな事できるんですか...
初めて知りました。
後かなり困ってるんですがアプリケーションの関連付けを変えるにはどうしたらいいですか?
VC++ダウンロードしてからアイコンが全部VC++に変わりました。
メモ帳で開きたいのですが....
0880デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0881デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANwindows板いけ
おひさしぶり。
>>872, 874
配列の0初期化を明示したかったから static をつけただけです、もっとも static つければ 必然として 零初期化されるし、この場合は意味がないようですね
自動変数の配列でも初期化できるようになったのはいつからだったっけ
0883デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN>データ領域では足りない場合がある。
いまどきのフラットなメモリ空間ではそんなこともないだろうに?もしかして 64KB の壁のことをいってるの?
0884デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN直後にforで初期化してるのに 意味ねー WWWW
配列は初期化するというのならbが初期化されてねー 一貫性ねー WWWW
そして、アルツハイマーの兆候 WWWW
>> 845 static をつけずにスタックに配列(というおおげさなもの)を置くという方が、むしろ制限を意識する。
>> 847 配列をスタックに置くのはどーかと思うよ。
>>883
バカにはわからない。 WWWW
0885デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANあまりに巨大な領域に初期値も指定すれば
コンパイル&リンク時に死ぬ事もあるとは思う
が、基本は実行時だよな
0886デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.AN0887デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN'stdio.h': No such file or directory
というエラーがでます。部活の先輩にもらったサンプルプログラムなので構文エラーではないです。
このエラーはどういった方法で直すことができるでしょうか?
0888デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0889デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0890デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANそのはずなんですが何故かできないんですよね?
なにか初期設定のようなものが必要なんでしょうか?
0891デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANヴァカに構うな
お前だけならまだしも他も迷惑する
0892デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0893デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0894デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN関数のネストしだい?
0895デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN再帰使ってるとわからない。
再帰使ってないなら、最大値を計算することは可能で、そう言うツールもある。
あと .bss とか .data とかの大きさを指定できて、越えるとリンク時にエラーにするものは、組み込みだと珍しくない。
0896デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN深い再起で落ちるのはメモリ不足になるためだろ。
0897デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN最近の OS はスレッド当たり 2〜8MB のスタック領域を持っているため、よほどのことがない限りスタックが溢れてしまうことはない。
だが、再帰や alloca を積極的に使うようなプログラムではスタックオーバーフローを気にすべきだ。
http://www.nminoru.jp/~nminoru/programming/stackoverflow_handling.html
/F (スタック サイズの設定) (C++)
このオプションを指定しない場合、スタック サイズは既定で 1 MB に設定されます。
http://msdn.microsoft.com/ja-jp/library/tdkhxaks(v=vs.80).aspx
0898デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN反証 alloca
0899デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANalloca()使わなくても、再帰がある時点でコンパイル時には不明なんじゃないの?
0900デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0901デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0902デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN以下のような構造体型の配列をmemmove関数でコピーするとき、
コピーを始める位置の指定((name + 1)の部分)は、下のようにしても問題ないのでしょうか?
#include <stdio.h>
#include <string.h>
typedef struct {
char first[4], last[4];
} NAMESET;
int main(void) {
NAMESET name[4] = {{"aaa","bbb"},{"ccc","ddd"},{"eee","fff"},{"ggg","hhh"},};
NAMESET temp[4] = {};
memmove(temp, name + 1, sizeof(NAMESET) * 2);
printf("%s %s\n", temp[0].first, temp[0].last);
printf("%s %s", temp[1].first, temp[1].last);
return 0;
}
結果:
ccc ddd
eee fff
0903デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN問題ないよ。
0904902
2013/07/11(木) NY:AN:NY.ANこれと
memmove(temp, name + 1, sizeof(NAMESET) * 2);
これは
memmove(temp, &name[1], sizeof(NAMESET) * 2);
等価であると考えて大丈夫ですか?
後出しで申し訳ありません。
0905デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN同じ。
*(name + 1) と name[1] は同じ。
0906デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANすっきりしました。ありがとうございました。
0907デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANどうしたらいいでしょうか?
ポストイットに書いてディスプレイに貼るのはダサいので他の方法でお願いします
0908デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANスタック おおよそ後入れ先出しする器
スタックの実装段階でヒープを利用する ということも有り得る話
0909デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0910デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANそれともstrlen-1での作業?
これが未だに分らない。
ヒント:i8086 とかではスタックポインタ(のオフセット)を 0 で初期化するのが普通です
0912デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN伸びる方向が上方(順方向)でも下方(逆方向)でも好きな方で実装すればいい。
CPUスタックは下方伸長のものが多い。
0913デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0914デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN何故か全ての質点が互いに相互作用じゃなくて一個の質点とそれ以外の質点が相互作用するプログラムになっちゃった。
プログラムは全然分からんから教えて欲しいんだけどここで聞いていい?
0915デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANまずソースコードを貼れ、つ http://codepad.org/
ルンゲクッタは何次のを使ってる?
0916デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN>趣味でプログラミングを
>趣味でやり始めた
何でそんなに趣味であることをそんなに強調してんのコイツ
0917デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0918デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN//codepad.org/vawU35Ji
ルンゲクッタは4次です プログラミングについてはまったく無知なんでおかしいと思うけど。。
0919デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANミスった
>一個の質点とそれ以外の質点が相互作用するプログラムになっちゃった。
しか読んでない。
if (i==j)
Fx[i]+=0;
else
Fx[i]+=(a/dis[i][j])*res_x[i][j];
Fy も同じ処理で
こうするとどうなる?
0921デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANZEROから制作は馬鹿げてる。
0922デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANR言語 Octave Scilab Maxima Python(x,y)
0923デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANありがとう というか自分のアホさかげんに呆れている 当たり前の事に気付かなかった
>>921
粒子法を開発した先生の本でc使ってたから俺もやり始めたんだけど他にいい方法があるのか
0924デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0925デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANとりあえず容易に計算でき、結果が出せたらいいだろう。
0926デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN水星が木星の重力の影響を受けて楕円軌道が大きくなっていて、将来水星が太陽にぶつかって飲み込まれるかもしれないときいたので、
水星がなくなった場合の太陽系の他の惑星の軌道への影響を調べたり、
また水星以外にもそうした変化が起こっていないかなど調べたいのです
0927デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0928デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN古典物理学と言えばニュートンの運動方程式で、何かの軌道をプロットするのが定番です。
二個や三個であればPC上のRで計算できるので、試しにやってみましょう。
http://d.hatena.ne.jp/uncorrelated/20130618/1371565502
偏微分方程式の差分解法と Scilab を用いた数値計算
これは,2013年1月 (23,26,29,30,31日) に中央大学で行われた
集中講義・応用解析学 2(理工学部数学科),応用解析特別講義第二 (理工学研究科数学専攻) の講義テキストです.
http://www.infsup.jp/saito/modules/mydownloads/visit.php?cid=1&lid=18
微分方程式の数値計算: ポチの電子回路論
http://ee-by-pochi.sblo.jp/article/57772181.html
Sympy : Python での記号計算
http://www.ike-dyn.ritsumei.ac.jp/~uchida/scipy-lecture-notes/advanced/sympy.html
Pythonの数式処理ライブラリ SymPy で遊んでみる
http://note.chiebukuro.yahoo.co.jp/detail/n145429
Octaveで遊ぶ数値解析入門
http://members2.jcom.home.ne.jp/keiko0/octavenumerical.pdf
Scipyで常微分方程式を解く
http://oceansciencehack.blogspot.jp/2010_08_01_archive.html
Maxima 常微分方程式
http://phys.hirosaki-u.ac.jp/wiki.cgi/maxima?page=%CA%FD%C4%F8%BC%B0
Maxima で数学を 多機能ぶり
http://ayapin-film.sakura.ne.jp/LJ/Docs/34th.pdf
0929デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN論文にしろよ
0930デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN確保する容量のことなら Windows は CreateThread( ) でスレッド作成時に指定できる
使う量のことなら、alloca( ) とか再帰で確定しない
要するに、実行するまでわからん場合があるということだ
0931デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANN=3でも数値計算しか知られてなかったのが、最近、一般相対論でのN=3の一般解が解けたようだな。
一般相対論で4以上が不可能か証明されてるのか?
弘前大、一般相対論における三体問題の直線解の解析解を導出 2011年2月3日
弘前大学大学院理工学研究科の山田慧生氏と浅田秀樹准教授が、一般相対論における三体問題の直線解を導き、Physical Review 誌に掲載された。
多体問題においては、積分法による一般解の解析解は存在しないとアンリ・ポアンカレによって証明されており、問題解法には摂動や数値解析を用いた計算が従来行われていた。
2007 年に行われた研究会での浅田先生の発表資料 (PDF) によれば、日本天文学会では「三体問題にだけは手を出すな」「相対論にだけは手を出すな」という格言があるほどだったらしい。
http://www.excite.co.jp/News/it_g/20110203/Slashdot_11_02_03_044235.html
0932デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN0933デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANスタックを消費しすぎて、heap領域とかをぶっ壊すこともあるかな
heap領域を使いすぎて、スタック領域を使えない状態になることも
パソコンとかの富豪プログラム環境ではあんまり関係ないかも
0934デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANhttp://sci.tea-nifty.com/photos/uncategorized/2013/02/24/pythagoras.gif
http://sci.tea-nifty.com/photos/uncategorized/2013/02/24/pythagoras_2.jpg
http://sci.tea-nifty.com/blog/2013/03/geogebra42gif-2.html
こっちは一般相対論らしい。
http://sci.tea-nifty.com/photos/uncategorized/2013/03/16/new3body01.gif
http://sci.tea-nifty.com/photos/uncategorized/2013/03/16/new3bodyproblem_2.jpg
http://sci.tea-nifty.com/blog/2013/03/13gif-5c3e.html
ピタゴラス3体問題をルンゲクッタ法で解いて見た。
http://www.marble-cafe.com/planet/Pythagoras/Pythagoras.html
にJAVAのソースがあったので、R言語に焼きなおして解いて見た。
http://blogs.yahoo.co.jp/runomee/62375764.html
一般相対論の方程式で弘大が快挙
http://blogimg.goo.ne.jp/user_image/0b/d2/a2f0ed85a1a2180e403f78a2405d99c4.jpg
http://blog.goo.ne.jp/ktonegaw/e/89d89ebc0097bb78a3af6d4e93a35c7a
0935914
2013/07/11(木) NY:AN:NY.AN一般解は存在しないけど特殊解は存在していてニュートン方程式では知られていたけど
一般相対論では初めて見つかったって事だと思うよ
学部生で一般の解析解見つけるなんてすごいなぁ
0937デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN多体問題 - Wikipedia
多体問題は、互いに相互作用する3体以上からなる系を扱う問題である。
太陽と地球のような二体問題は厳密に解けるが、例えば月の運動も考える一般の三体問題以上になると解析的に解くことはできないとされる。
18世紀にはジョゼフ=ルイ・ラグランジュが研究を深め、19世紀末にアンリ・ポアンカレによって証明された。
ただしポアンカレの証明は積分法の範囲であり、この範囲以外の解法の存在については現在も不明である。
当たり前ですが,三体問題の一般解,と言うわけではなく,一般相対論の範囲で三体問題の直線解(三つの物体が一直線上に乗っている場合限定の解)を解いた,という物です.
http://slashdot.jp/comments.pl?sid=521452&cid=1897426
レス数が900を超えています。1000を超えると表示できなくなるよ。