C言語なら俺に聞け(入門編)Part 117
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN★前スレ
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/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0002デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0003デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0004デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANPart11乙
0005デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANC言語なら俺に聞け(入門編)Part 116
http://toro.2ch.net/test/read.cgi/tech/1371208925/
0006デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0007デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0008デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN30代で常駐先がなくなって未経験の異業種で人生やり直すのがオチw
常駐先企業の人件費抑制に利用されただけの人生だったな残念w
システムエンジニアになろう〜新入社員研修編〜
ttp://www.nicovideo.jp/watch/sm4010880
0009デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANつか楕円軌道の公式あっても今回の話は他の惑星の重力の影響があるから使えないか。
0010デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0011デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANN 体シミュレーション初春の学校教科書
http://home.f08.itscom.net/okuya8/nnodysimulation.pdf
Rで多体問題を数値解析 - 餡子付゛録
http://d.hatena.ne.jp/uncorrelated/20130618/1371565502
0012デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANある程度以上真円軌道でないと惑星と認められないので気にしない方向で
0013デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN海王星の発見に大きな貢献をしたルヴェリエは、水星の近日点移動の問題にも気づき、この問題を解決するための仮説を模索し計算をおこなったが、水星の内側に新たな惑星は発見できなかった。
ルヴェリエの計算によれば、このうち38.3秒の分だけがニュートン力学に基づく計算値によっては説明できないで残るとされた。
この問題の解決は、数十年後に意外な形でえられた。
重力の扱いについて一般相対性理論を目指して格闘していたアインシュタインは、1915年11月18日に、彼の重力場の方程式から水星の近日点移動が定量的に予測できることを発見した。
水星のその予測された移動の量は、ルヴェリエ以後の研究でも説明不可能と見なされた43秒の分まで観測値とほぼぴったりと一致していたのである。
http://www1.kcn.ne.jp/~h-uchii/intro.PS/perihelion.html
0014デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANと、グローバル空間で宣言して
static const int Inv_x_= 1.0/x;
と、関数内で定義するとエラーが出てコンパイル出来ない・・・
C++だと通るけどCだとエラー出ます。
原因と対策を教えて下さいorz
0015デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0016デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANC言語では const int が変数だから
0017デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANコンパイルオプション使って解決出来可能でしょうか?
0018デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN#define でおk
0019デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0020デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANやっぱり変数で初期化がNGなんですね・・・
static const double root_3 = sqrt(3);
ってコードも同様で弾かれます
元々やりたいことは計算量減らしたいだけなんだけど、
おとなしくマクロ使うべきでしょうか?
0021デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0022デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANstatic int initialized = 0;
if (!initialized){ root_3 = sqrt(3); initialized = 1;}
0023デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0024デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN今やってるやり方は
double root_3=sqrt(3)
printf("%a",root_3)
で16進法で表して、コピペして、マクロ定義にしてます。
ここらへんもどかしいC言語・・・
>>23
C++でコンパイルすると分けわからないエラー出まくるので
勉強中です
0025デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN素直にVC++でやったらええやん
Linuxとか無駄に時間を消耗するだけ
0026デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANvcのほうが標準的でない仕様。
0027片山博文MZパンク ◆0lBZNi.Q7evd
2013/07/13(土) NY:AN:NY.AN0028デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANやっぱりコレだけじゃ無理でした。
VC++使いたいけど、組み込みLinux環境なんです。
0029デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANstatic const int Inv_x_= 1.0/HOGE_X;
0031デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0032デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN?
0033デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN自分の中で辻褄が合わないんだろ
0034デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN今のところそのようなコードを使ってますが、
ルート3などを定数化するときにちょっと困りました
>>24みたいに書いて一応納得することにしましたが
もう少しキレイに書きたいです。
宣言して、フラグを設けて初期化部分を作る>>22さんの方法も
一つの答えだと思いますが、C++みたいに短く書けるに越したことはないし、
一つの関数でしか使わない定数なので、わざわざマクロ定義するのも
なんか汚いコードな気がして、もどかしいです
(C++でコンパイル出来たらそれに越したことはないですけど)
static const double root_3=sqrt(3);が通ってくれたら
こんなに葛藤することも無かった・・・
0035デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0036デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANstatic const double root_3=1.732050808;//sqrt(3);
手計算できるところはなるべく、即値入れたほうがいいかもね
0037デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN中途半端な知識で知ったかぶると恥をかくぞ。
定数定義限定なら#defineは
× 時代遅れ
○ enumを使うべき
だろう。でもショートコードのマクロ化は#defineじゃないと無理だ。
こういうのは適材適所なんだよ。
マクロも善し悪しで多用すると弊害が大きいけど適切な使用は
十分に利用価値がある。
0038デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0040デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN>定数定義限定なら#defineは
>× 時代遅れ
>○ enumを使うべき
今は浮動小数点の定数定義の話なんだと思っていましたが?enum で浮動小数点を定義できるとでも?
0042デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN用途がないと勘違いしているアホだから。
#defineはマクロであって定数を定義する手段ではない。
マクロを使う機会は確かに減ったが、なくなっていいもの
でもない。
普通にコード書いてもいいけどマクロが使えたほうが便利
というシチュエーションはある。
ではもう
double r5 = 2.2360679 // 5^0.5
とでもするしか‥‥ >>36 で既出でしたね。
コンパイル時にコード生成で math のライブラリ関数を呼び出すというのは、なかなかに凝ったコンパイラだと思います
java とか c# ではマクロがなくなっていますが、それは理由があるとおもいますよ
0045デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANそれはそのとおりですがそう判断した理由は?
0047デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANjavaやC#はそもそもクラス型設計から(C++を反面教師として)
スタートしてるから、そもそもマクロは使わない言語設計だから。
Cの世界では制御構造がクラス型に比べて制限されるんで、
マクロがあると便利なことがある。なくてもコードは書けるが。
ただCのマクロを時代遅れの一言でバッサリやるのはただの馬鹿。
OOとマクロとは関係ないと思いますよ
マクロはIDEとの親和性を破壊するから、だと思っていますけれどもマクロやテンプレート様は文脈を著しく発散させますからね
まあ IDE の支援を「進歩的」、IDE を疎外する存在は obsolete と決め付けるのもどーかとも、まあ思いますが
0049デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0050デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANやっぱこいつ知ったかぶりだけなんだな。
0051デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANwww54.atwiki.jp/qzaw55cn4c/pages/16.html
www54.atwiki.jp/qzaw55cn4c/pages/17.html
0052デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN「テンプレートは言語仕様であってマクロじゃない」っていいたかったの?
0054デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN制御構造にマクロを使う(#define の中で goto)のは
マクロと goto の最悪コンボ
窓から突き落とされるぞ
0055デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANウンコに触って喜ぶのは小学生まで
0056デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0057デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANパイプを使って標準入力を受け取り、そのあと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です
ユーザーが入力することなくプログラムが終了してしまうのです。
ユーザーに入力させたいのです。
どうしたらいいのでしょうか?教えてくださいお願いします。
0058デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANfreopen
005957
2013/07/14(日) NY:AN:NY.ANありがとうございます。
このように書いて実行してみたのですが、状況は変わらず入力することができませんでした。
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;
}
006057
2013/07/14(日) NY:AN:NY.ANfreopen("/dev/tty", "r", stdin);
にしたところ期待通り動作するようになりました。
解決しました、ありがとうございました。
0061デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0062デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANGnuPG とか
0063デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN■□■
■■■
■□■
みたいな処理をさせたいのですがどういう風に処理させたらいいですか?
白いところを黒いところに混ぜていくやり方がわからないです
0064デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0065デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0066デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANx=0とX=maxはy方向に全部埋めればいいんでしょ
3つに処理を分ければif文不要
0067デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0068デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0069デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANfor (i = 0; i < 9; i++)
(i / 3) % 2 + (i + 1) % 2;
0070デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANこの質問で分かるのか。
エスパーさすがだな。
0071デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANそれ任意のn×nでも使えるかな
0072デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANint x[10][10][10][10][10];
5次元までエラー出ませんでした。皆さんは何次元まで
可能でしたか?
0073デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0074デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0075デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANchar 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にて
0076デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANそこまで増やすと
スタックエラー出ませんか?w
恐ろしくてできないw
0077デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0078デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0079デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0080デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN自由じゃないのかよ
0081デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN自由といいつつ制限だらけ
変数名に制限あり(printfとか予約後はダメ)
0082デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN需要高いし一生衰退しないだろうな
0083デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN色んな環境があるから限界値の設定は必要。
>>81
printf は、予約語じゃないだろ…
0084デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANいや彼は予約【後】とちゃんと言っているんだが
0085デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0086デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0087デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0088デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN規格上は最長の規定はない。処理系毎の最長値はある。
0089デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0090デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN安全性などを考慮して組み込み系では1万文字超える変数名もザラだって聞いたな
0091デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0092デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN分らん
分ったところでプログラミングと関係ないけど
0093デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANオブジェクトファイルを結合して実行ファイルを作る奴
0094デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN何だよオブジェってw
0095デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN簡単に言うと↓の通り。
コンパイラは、言語を機械語に翻訳するだけ。
リンカは、翻訳された各機械語をくっつけるだけ。
0096デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN知る必要のないことじゃ
0097デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN超巨大なプログラムソース1000万行があったとして,一箇所修正したら,全部をコンパイルしなおすなんて無駄でしょう?
だから或る程度の規模のソフトウェアになると,複数の *.c ファイルをそれぞれコンパイルして,あとで一つにまとめる,という手法を使います.
今はちゃんとした OS ですらソースを公開しているし,一度眺めてみるとかカーネルビルドしてみるとか,おすすめです.
0098デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN面白い
0099デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANああそう言えば分割コンパイルをしない奴がいたっけなあ
平日の深夜とか昼間にレスする奴
0100デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANうーん意味分からないですね。
腐ったみかんじゃないけれど
一つ修正したら他は修正しなくていいって
器用すぎませんか...まぁそういうもんだということで。
0101デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN一般人にそういったことはできないでしょう
どっか修正したら、他に影響して、終わりなき道を進む...
■ このスレッドは過去ログ倉庫に格納されています