C言語なら俺に聞け(入門編)Part 92
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/11/10(木) 22:55:06.15★前スレ
C言語なら俺に聞け(入門編)Part 91
http://hibari.2ch.net/test/read.cgi/tech/1319581056/
★過去スレ
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++の宿題片付けます 153代目
http://hibari.2ch.net/test/read.cgi/tech/1320365280/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
★ぬるぽ。
長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0002デフォルトの名無しさん
2011/11/10(木) 22:56:09.00/;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;ヽ.
/;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;ヽ.
/;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:ヽ.
i;:;:;:;:;:/ノ-'-''"ヽ;:;:;ヽ'''-ヽ、;:;:;:;:;|
{;:;:;:;:ノ■■■ ■■■ヽ;:;:;}
ヽ;:;{ _ _ |;:;:{
};:;|三/ ●),. 、(● ヽ三 |〈
ヽ| " ゙='"/:::ヾ='"゙ | } __________
{ |∫ ∴ (,.、::,. ) ∵ |/ /
ゝ::●. ...:人:人:::..... ...! < そーですワタスが変なおじさんです
{;;ヽ:.:.:.:.:.:.:.<Ξ>:.::.:.:.:.:.:.:/;} \
/ ヽ:.:.:.:.::.:.:.:.:.:.:.:.:.:.:/ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ |ヽ:.:.:.:.:.:.:.:.:.:/| \
ヽ ̄ ̄ ̄ /
ヽ___/
0003デフォルトの名無しさん
2011/11/10(木) 23:10:16.68大変お疲れ様です
死にます
0004デフォルトの名無しさん
2011/11/11(金) 00:57:39.31戻り値が構造体の関数を宣言し、構造体を戻り値として返したときに、
その構造体をポインタ変数へ代入したいのですが、うまくいきません。
p = tesFunc;
(p:ポインタ変数、tesFunc:戻り値が構造体の関数)
イメージとしては、こういう風にしたいのです。
いくつか、やり方を変えて試したのですが、エラーが出てしまいます。
私がやりたいことは、
ある構造体を色々な関数で使い、なおかつ値を変えたりしたいわけです。
なので、違う方法でもできるのなら、そちらの方法で試してみたいと思います。
0005デフォルトの名無しさん
2011/11/11(金) 01:01:51.760006デフォルトの名無しさん
2011/11/11(金) 01:07:35.10まぁ素人さんはポインタなんか使わずに構造体をそのまま受け取るようにした
方がいい。
構造体を戻り値とするんだから、受け取るにもポインタではなく構造体を指定す
ればいい。
ただのintなんかと同じに考えればいい。
0007デフォルトの名無しさん
2011/11/11(金) 01:16:22.78>>6 確かにポインタなんて使いたくはないんですが、
戻り値の構造体と、受け取り側の構造体が別々の変数になってしまう
というのが、ちょっと具合が悪くて。
0008デフォルトの名無しさん
2011/11/11(金) 01:17:34.03グローバルに置いておきexternするみたいなことをちょっと隠蔽してみたりしたいんだよな?
0009デフォルトの名無しさん
2011/11/11(金) 01:58:44.810010デフォルトの名無しさん
2011/11/11(金) 02:28:23.20解決しました。
戻り値が構造体へのポインタの関数を使うことと、staticを使用することの2つがキーだったみたいです。
皆さん、ありがとうございました。
0011デフォルトの名無しさん
2011/11/11(金) 02:41:46.21わけのわからんバグに悩まされると思うぞ?
元の変数に戻したければ素直に代入しとけ。intと同じに考えればいい。
0012デフォルトの名無しさん
2011/11/11(金) 02:58:23.03こういう目的なら、構造体を1個だけ確保しておいて、「色々な関数」へは、
その構造体を指すポインタを引数として渡すのがシンプルだと思うけどな。
構造体がごく小さいものであれば>>11の言うとおり。
0013デフォルトの名無しさん
2011/11/11(金) 03:36:44.59struct A* f(void) {
struct A a = {.i = 9999999};
return &a
}
先に予想しとくわ
0014デフォルトの名無しさん
2011/11/11(金) 05:23:01.800015デフォルトの名無しさん
2011/11/11(金) 05:43:59.66--
戻り値の構造体と、受け取り側の構造体が別々の変数になってしまう
というのが、ちょっと具合が悪くて。
--
これが何を言いたいのか誰か解説してくれ。
0016デフォルトの名無しさん
2011/11/11(金) 06:00:24.970017デフォルトの名無しさん
2011/11/11(金) 10:02:01.510018デフォルトの名無しさん
2011/11/11(金) 10:10:58.12ググれ。
http://ja.wikipedia.org/wiki/Malloc
0019デフォルトの名無しさん
2011/11/11(金) 13:17:49.84for(boo=0 ;boo <=1 ;boo++){
みたいなループ作ったら
warning: incrementing a bool value is deprecated
っていう警告が出ます。
確かにbool型に足し上げることは推奨されないですが何か別の方法ありますか?
0020デフォルトの名無しさん
2011/11/11(金) 13:22:35.87for( i=0; i < 2; ++i ){
boo=i;
わりとマジレス
0021デフォルトの名無しさん
2011/11/11(金) 13:26:01.02func();
でいいだろ
0022デフォルトの名無しさん
2011/11/11(金) 13:31:11.25例えば、
int Function1(int x, int y)
{
int temp;
temp = (x + y) / Function2(x, y);
return temp;
}
こんな関数の代わりに、関数呼び出しのオーバーヘッドを考慮して、
#define Function1(x,y) (((x) + (y)) / Function2(x, y))
このようにマクロを定義するのってマズイですか?
0023デフォルトの名無しさん
2011/11/11(金) 13:32:39.590024デフォルトの名無しさん
2011/11/11(金) 13:37:36.46引数の評価に副作用がある場合はマズイ。
そうでないならおk。
0025デフォルトの名無しさん
2011/11/11(金) 14:09:01.46大抵そう。極端な場合、内部でmalloc()とmemset()を呼んでいる。
0026デフォルトの名無しさん
2011/11/11(金) 14:23:25.46C99/C++処理系ならインライン関数も検討したほうがいいと思う
0027デフォルトの名無しさん
2011/11/11(金) 17:19:34.93ありがとう
やっぱそんな感じにしないとダメですね
0028デフォルトの名無しさん
2011/11/11(金) 20:39:01.570029デフォルトの名無しさん
2011/11/11(金) 20:54:21.420030デフォルトの名無しさん
2011/11/11(金) 20:59:42.33最悪の場合宇宙が崩壊する
結構マジで
0031デフォルトの名無しさん
2011/11/11(金) 21:20:42.610032デフォルトの名無しさん
2011/11/11(金) 21:22:22.740033デフォルトの名無しさん
2011/11/11(金) 21:38:11.03どこが間違っているか教えてください!
http://codepad.org/GDXIYcVE
0034デフォルトの名無しさん
2011/11/11(金) 21:40:25.920035デフォルトの名無しさん
2011/11/11(金) 21:52:55.76ごめんなさい、わからないです。
リストを作るところまでは、合ってますか?
http://ideone.com/YXuBD
>>34
いまだにその落とし穴にはまって首をひねることが。
0037デフォルトの名無しさん
2011/11/11(金) 21:56:23.040038デフォルトの名無しさん
2011/11/11(金) 22:02:53.97>>37 p=p->nextじゃ、移れてないってことですか?
あと実行したときに、後ろから?表示されているのもよくわかりません。
0039デフォルトの名無しさん
2011/11/11(金) 22:14:01.850040デフォルトの名無しさん
2011/11/11(金) 22:19:26.90逆順になるのは、リンクリストの最初のほうにセルを挿入してるからだな。
0041デフォルトの名無しさん
2011/11/11(金) 22:21:10.390042デフォルトの名無しさん
2011/11/11(金) 22:25:43.46start->head = p; で、セルをつなげてる?
>>40 わかった!ところてんみたいに入れてった感じですね!
0043デフォルトの名無しさん
2011/11/11(金) 22:46:38.06ところてんマグナム!!
0044デフォルトの名無しさん
2011/11/11(金) 23:10:16.530045デフォルトの名無しさん
2011/11/11(金) 23:31:51.28多倍桁の計算をするときは実装するほかないですよね?
大学の考察でこんな課題がでました。
教えてください。
どうしてでしょうか?
>どうしてでしょうか?
How を説明すればいいのでしょうか?それとも Why ?
0047デフォルトの名無しさん
2011/11/11(金) 23:41:34.79つうか、それが分からない人間がなんで多倍桁なんて言葉を知ってるの?
0048デフォルトの名無しさん
2011/11/11(金) 23:41:43.28そうしたほうが作る人が楽だから
0049デフォルトの名無しさん
2011/11/11(金) 23:42:40.74両方お願いします。必然性があるのか、そもそもどういう仕組みになっているのか、
両方において曖昧な認識です。
プロフィール: 進研数学偏差値74.8
0050デフォルトの名無しさん
2011/11/11(金) 23:45:13.26アルゴリズムとして知ってるから。
ちなみに、桁*桁の計算が4つあったら、桁*桁を3つと足し算といった感じで
計算量を大幅に減らす事もできるんですよね。
>>48
コンピュータの内部の事情って関係ありますかね?
0051デフォルトの名無しさん
2011/11/11(金) 23:51:16.19質問するほどのことではない
0052デフォルトの名無しさん
2011/11/11(金) 23:52:32.50これでいいですか?
0053デフォルトの名無しさん
2011/11/11(金) 23:54:50.27そこまでしてやる需要がないとか。
8086とか68000くらいのころはけっこう複雑な命令があったけど、その後RISCが流行って
単純な命令を高速実行する流れになって、またその後CISCががんばって効率化して
RISCとかCISCって分類が無意味になって、みたいな流れだよね。
8086のころはBCD演算をサポートする命令があったから、RISCのトレンドがなかったら
そっち方面に技術が発展して、もしかしたら多倍長演算がCPUでサポートされてる
ような世界になってたかもしれない。それはないかな?
0054デフォルトの名無しさん
2011/11/11(金) 23:56:33.912 根幹演算を組み合わせて実装した方が効率の良いアルゴリズムが開発できるから。
3 ハードウェアが複雑になるから。
こういう認識でいいでしょうか?
0055デフォルトの名無しさん
2011/11/12(土) 00:01:26.32ハードに変更があると多大な範囲に影響が及ぶから
変えるに変えられネーってことでだらだらやってんだろ
0056デフォルトの名無しさん
2011/11/12(土) 00:07:11.540057デフォルトの名無しさん
2011/11/12(土) 00:07:36.280058デフォルトの名無しさん
2011/11/12(土) 00:11:06.21レジスタだったら何十個もあるんじゃないかな。
8086の系統は少ないかもしれないけど、内部的にはたくさんもってるみたいな
話を聞いたことがある。
0059デフォルトの名無しさん
2011/11/12(土) 00:25:22.040060デフォルトの名無しさん
2011/11/12(土) 00:38:00.65昔はみんな自作してた。
0061デフォルトの名無しさん
2011/11/12(土) 00:42:42.74情報系なら大学の実験なんかで作るだろ。
0062デフォルトの名無しさん
2011/11/12(土) 00:44:33.590063デフォルトの名無しさん
2011/11/12(土) 00:44:43.140064デフォルトの名無しさん
2011/11/12(土) 00:45:13.72今更こんなもんやってられんわ
FPGAのほうがなんぼかやろうって気になれる
熱い‥‥‥。
>>61
電子系ならそうだったみたい。制御系ならせいぜい TTL ゲートでシリアル4bit 加算、というレベルでした、うちの大学は。
>>49
ふーん、今の若い子はそういう自己を表現することもあるんだ。
いや、別に否定するわけじゃあありません。私だったら‥‥これこれこうこうの本を読みました、って書くなあ(実のところ読めてなくて見たレベルなんでしょうけれども、それに気づくのはずっとあとの話)。
0066デフォルトの名無しさん
2011/11/12(土) 02:37:41.99早く説明してやれよ。>>46
0068デフォルトの名無しさん
2011/11/12(土) 03:09:03.790070デフォルトの名無しさん
2011/11/12(土) 03:38:42.21桁数が増えると必然的に結果が出るのが遅くなるんだよね
キャリールックアヘッド、というのがあってキャリーの伝播を極力早くする方法があります。回路はその分多くなりますが。
証明は論理式の and と or の内外をいれかえるだけだったかと記憶しています。
繰り上がり待ち方式はリップルキャリーといいます。
ちょっと不正確。多入力ゲートが2入力ゲートのくみあわせよりも早いと期待できることがポイントだったかと。だから多入力ゲートの入力数の限界までは適用できますが、それ以上は実際どうなんでしょうね、よくわかんない。
0073デフォルトの名無しさん
2011/11/12(土) 03:56:20.520074デフォルトの名無しさん
2011/11/12(土) 04:13:33.96知ったかしたいがために、
訊かれもしていないことをぺらぺらしゃべるやつが約1名いるようなんでね
0077デフォルトの名無しさん
2011/11/12(土) 04:29:07.43俺はお前のことだとはこれっぽっちも言ってないぜ(笑)
ん?私も私のことだとは言ってませんね。
0079デフォルトの名無しさん
2011/11/12(土) 04:33:18.330080 ◆jMy.vROSfw
2011/11/12(土) 04:33:29.82え? もう鳥パクッタ?
0084デフォルトの名無しさん
2011/11/12(土) 06:02:44.630085デフォルトの名無しさん
2011/11/12(土) 06:18:05.000086デフォルトの名無しさん
2011/11/12(土) 11:49:35.81bool b();
if (a() || b()) ... としたときに b() が呼ばれない可能性がある。。というのはいいんだけど、
bool x = false;
x |= a()
x |= b()
こういう場合でも b() が呼ばれない可能性ってあるの?
0087デフォルトの名無しさん
2011/11/12(土) 11:51:24.470088デフォルトの名無しさん
2011/11/12(土) 12:00:04.550089デフォルトの名無しさん
2011/11/12(土) 12:43:50.98すぐバレる嘘つくな糞vipperがwww
お前の鳥でググってら一杯出てくる出てくるwwwwwwwwwwwww
0090デフォルトの名無しさん
2011/11/12(土) 13:00:52.950091デフォルトの名無しさん
2011/11/12(土) 13:04:06.480092デフォルトの名無しさん
2011/11/12(土) 13:09:12.93しかし、1時間ちょいで同じコテ見つけて書き込めるかねぇ?
0093デフォルトの名無しさん
2011/11/12(土) 13:15:15.57それが分かるのは糞コテ本人か解析者
レス内容からして>>92は糞コテ本人と推定
0094デフォルトの名無しさん
2011/11/12(土) 13:31:52.08最近のコテだと◆QZaw55cn4cと>>80は別人だが。
コテ付けてほしいのか?
今時コテ叩きして楽しいかい?
0095デフォルトの名無しさん
2011/11/12(土) 13:41:12.63>最近のコテだと◆QZaw55cn4cと>>80は別人だが。
いや、君と◆QZaw55cn4cが同一人物の可能性なんてちっとも考えなかったよw
0096デフォルトの名無しさん
2011/11/12(土) 13:42:49.230097デフォルトの名無しさん
2011/11/12(土) 13:48:30.65下のは両方呼ばれるよ。
しかし、bool型にビット演算って違和感が。
警告とか出ないのだろうか。
0098デフォルトの名無しさん
2011/11/12(土) 17:02:00.63A,B,C,...,G,Hという7個以上の要素から6つ取り出して並べたときの、全ての組み合わせを出したいのですが、うまくいきません。
例としては、
AAAAAA
AAAAAB・・・
と出していくのですが、同じ要素を使っていても並び方が違えば別のパターンとして表示します。
長文申し訳ありませんが、手におえず、ご教授頂きたい次第です。
よろしくお願いします。
0099デフォルトの名無しさん
2011/11/12(土) 17:22:21.297進数6桁の数値として考えればOK
0100デフォルトの名無しさん
2011/11/12(土) 17:27:25.980101デフォルトの名無しさん
2011/11/12(土) 17:36:30.17いる
■ このスレッドは過去ログ倉庫に格納されています