1read 100read
2011年11月2期プログラム3: C言語なら俺に聞け(入門編)Part 92 (691) TOP カテ一覧 スレ一覧 2ch元 削除依頼

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


1 :11/11/10 〜 最終レス :11/11/25
C言語の*入門者*向け解説スレッドです。
★前スレ
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/

2 :
     ,.;'‐、____,:-;';:、.
   /;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;ヽ.
  /;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;ヽ.
  /;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:ヽ.
  i;:;:;:;:;:/ノ-'-''"ヽ;:;:;ヽ'''-ヽ、;:;:;:;:;|
  {;:;:;:;:ノ■■■   ■■■ヽ;:;:;}
  ヽ;:;{    _   _    |;:;:{
   };:;|三/ ●),. 、(● ヽ三 |〈
   ヽ| " ゙='"/:::ヾ='"゙  | }     __________
   { |∫ ∴ (,.、::,. )  ∵ |/    /
    ゝ::●. ...:人:人:::.....  ...!   < そーですワタスが変なおじさんです
    {;;ヽ:.:.:.:.:.:.:.<Ξ>:.::.:.:.:.:.:.:/;}    \
   / ヽ:.:.:.:.::.:.:.:.:.:.:.:.:.:.:/ \       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 /    |ヽ:.:.:.:.:.:.:.:.:.:/|    \
       ヽ ̄ ̄ ̄  /
        ヽ___/

3 :
>>1
大変お疲れ様です
死にます

4 :
長文失礼します。
戻り値が構造体の関数を宣言し、構造体を戻り値として返したときに、
その構造体をポインタ変数へ代入したいのですが、うまくいきません。
p = tesFunc;
(p:ポインタ変数、tesFunc:戻り値が構造体の関数)
イメージとしては、こういう風にしたいのです。
いくつか、やり方を変えて試したのですが、エラーが出てしまいます。
私がやりたいことは、
ある構造体を色々な関数で使い、なおかつ値を変えたりしたいわけです。
なので、違う方法でもできるのなら、そちらの方法で試してみたいと思います。

5 :
構造体へのポインタを引数として関数に渡す

6 :
>>4
まぁ素人さんはポインタなんか使わずに構造体をそのまま受け取るようにした
方がいい。
構造体を戻り値とするんだから、受け取るにもポインタではなく構造体を指定す
ればいい。
ただのintなんかと同じに考えればいい。

7 :
>>5 その方法でやってみます!!
>>6 確かにポインタなんて使いたくはないんですが、
  戻り値の構造体と、受け取り側の構造体が別々の変数になってしまう
  というのが、ちょっと具合が悪くて。

8 :
tesFuncの中の構造体をstaticにしてその構造体のポインタ返すようにしてみれ
グローバルに置いておきexternするみたいなことをちょっと隠蔽してみたりしたいんだよな?

9 :
765プロの事務所のトイレになりたい

10 :
>>4です。
解決しました。
戻り値が構造体へのポインタの関数を使うことと、staticを使用することの2つがキーだったみたいです。
皆さん、ありがとうございました。

11 :
>>10
わけのわからんバグに悩まされると思うぞ?
元の変数に戻したければ素直に代入しとけ。intと同じに考えればいい。

12 :
>ある構造体を色々な関数で使い、なおかつ値を変えたりしたいわけです。
こういう目的なら、構造体を1個だけ確保しておいて、「色々な関数」へは、
その構造体を指すポインタを引数として渡すのがシンプルだと思うけどな。
構造体がごく小さいものであれば>>11の言うとおり。

13 :
struct A {int i;};
struct A* f(void) {
    struct A a = {.i = 9999999};
    return &a
}
先に予想しとくわ

14 :
ふーん

15 :
どうでもいいが、
--
戻り値の構造体と、受け取り側の構造体が別々の変数になってしまう
  というのが、ちょっと具合が悪くて。
--
これが何を言いたいのか誰か解説してくれ。

16 :
どうでもいいならどうでもいいじゃん。

17 :
mallocってなんなんですか??

18 :
>>17
ググれ。
http://ja.wikipedia.org/wiki/Malloc

19 :
bool型使って0と1だけのループ回したいんですけど
for(boo=0 ;boo <=1 ;boo++){
みたいなループ作ったら
warning: incrementing a bool value is deprecated
っていう警告が出ます。
確かにbool型に足し上げることは推奨されないですが何か別の方法ありますか?

20 :
>>19
for( i=0; i < 2; ++i ){
boo=i;
わりとマジレス

21 :
func();
func();
でいいだろ

22 :
関数形式マクロの定義で、ある関数を呼び出すのはあまり良いコーディングとは言えないでしょうか
例えば、
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))
このようにマクロを定義するのってマズイですか?

23 :
callocってサイズ指定方法とゼロクリアの違い以外はmallocと同等の機能?

24 :
>>22
引数の評価に副作用がある場合はマズイ。
そうでないならおk。

25 :
>>23
大抵そう。極端な場合、内部でmalloc()とmemset()を呼んでいる。

26 :
>>22
C99/C++処理系ならインライン関数も検討したほうがいいと思う

27 :
>>20
ありがとう
やっぱそんな感じにしないとダメですね

28 :
マクロの中でリターンしてると後から読んだときに途中でリターンしてることに気付かないんだよな

29 :
確保されていないポインタをfreeに投げたらどうなるの?

30 :
>>29
最悪の場合宇宙が崩壊する
結構マジで

31 :
ポインタにNULLを入れて何回でもfreeしてやる

32 :
ポインタに宇宙を入れて見たい

33 :
単方向リストを表示したいんですけど、うまくできません><
どこが間違っているか教えてください!
http://codepad.org/GDXIYcVE

34 :
見てないけどヌルポで初期化してないと予言

35 :
>>34
ごめんなさい、わからないです。
リストを作るところまでは、合ってますか?

36 :
>>33
http://ideone.com/YXuBD
>>34
いまだにその落とし穴にはまって首をひねることが。

37 :
p=p->next; ←ココ

38 :
>>36 ありがとうございます!
>>37 p=p->nextじゃ、移れてないってことですか?
あと実行したときに、後ろから?表示されているのもよくわかりません。

39 :
うん、p->next初期化されてないも。

40 :
>>38
逆順になるのは、リンクリストの最初のほうにセルを挿入してるからだな。

41 :
地球どころか太陽系すべてが吹き飛ぶほどの気力がたまっているぞ

42 :
>>39 p->next = start->head;
start->head = p; で、セルをつなげてる?
>>40 わかった!ところてんみたいに入れてった感じですね!

43 :
いけーーーーーーー!!
ところてんマグナム!!

44 :
そんなふにゃチンじゃいけんだろ。

45 :
何でコンピュータの基幹演算部分って十数桁までの計算しかできないのですか?
多倍桁の計算をするときは実装するほかないですよね?
大学の考察でこんな課題がでました。
教えてください。
どうしてでしょうか?

46 :
>>45
>どうしてでしょうか?
How を説明すればいいのでしょうか?それとも Why ?

47 :
>>45
つうか、それが分からない人間がなんで多倍桁なんて言葉を知ってるの?

48 :
>>45
そうしたほうが作る人が楽だから

49 :
>>46
両方お願いします。必然性があるのか、そもそもどういう仕組みになっているのか、
両方において曖昧な認識です。
プロフィール: 進研数学偏差値74.8

50 :
>>47
アルゴリズムとして知ってるから。
ちなみに、桁*桁の計算が4つあったら、桁*桁を3つと足し算といった感じで
計算量を大幅に減らす事もできるんですよね。
>>48
コンピュータの内部の事情って関係ありますかね?

51 :
普通に考えればわかることだよ
質問するほどのことではない

52 :
メモリの無駄が増えるからですよね?
これでいいですか?

53 :
多倍長演算とかcpuでサポートしたらハードウエアが複雑になるからじゃないの?
そこまでしてやる需要がないとか。
8086とか68000くらいのころはけっこう複雑な命令があったけど、その後RISCが流行って
単純な命令を高速実行する流れになって、またその後CISCががんばって効率化して
RISCとかCISCって分類が無意味になって、みたいな流れだよね。
8086のころはBCD演算をサポートする命令があったから、RISCのトレンドがなかったら
そっち方面に技術が発展して、もしかしたら多倍長演算がCPUでサポートされてる
ような世界になってたかもしれない。それはないかな?

54 :
1 メモリが無駄になるから。
2 根幹演算を組み合わせて実装した方が効率の良いアルゴリズムが開発できるから。
3 ハードウェアが複雑になるから。
こういう認識でいいでしょうか?

55 :
結局は互換性がうんぬんじゃろ
ハードに変更があると多大な範囲に影響が及ぶから
変えるに変えられネーってことでだらだらやってんだろ

56 :
CPUにメモリって何個入ってるんですか?

57 :
昔はメモリも少なかったし、必要だったら自分で作ればいいじゃん的な事

58 :
>>56
レジスタだったら何十個もあるんじゃないかな。
8086の系統は少ないかもしれないけど、内部的にはたくさんもってるみたいな
話を聞いたことがある。

59 :
CPUを自作ってできるのかな?

60 :
なんでできないと思う?
昔はみんな自作してた。

61 :
>>59
情報系なら大学の実験なんかで作るだろ。

62 :
FPGAでなんちゃって自作じゃないの?

63 :
最近はFPGAで自作してる人とかいるね。

64 :
ttp://www.alles.or.jp/~thisida/mycpu_gougai.html
今更こんなもんやってられんわ
FPGAのほうがなんぼかやろうって気になれる

65 :
>>64
熱い‥‥‥。
>>61
電子系ならそうだったみたい。制御系ならせいぜい TTL ゲートでシリアル4bit 加算、というレベルでした、うちの大学は。
>>49
ふーん、今の若い子はそういう自己を表現することもあるんだ。
いや、別に否定するわけじゃあありません。私だったら‥‥これこれこうこうの本を読みました、って書くなあ(実のところ読めてなくて見たレベルなんでしょうけれども、それに気づくのはずっとあとの話)。

66 :
>>65
早く説明してやれよ。>>46

67 :
え?もうたくさんコメントがついているので、いまさら、じゃないですかね。

68 :
素直に「分からなかったので即答できませんでした」って言えよ

69 :
はい

70 :
基本的にそれぞれの桁は前の桁からの繰り上がりを待たないといけないから
桁数が増えると必然的に結果が出るのが遅くなるんだよね

71 :
>>70
キャリールックアヘッド、というのがあってキャリーの伝播を極力早くする方法があります。回路はその分多くなりますが。
証明は論理式の and と or の内外をいれかえるだけだったかと記憶しています。
繰り上がり待ち方式はリップルキャリーといいます。

72 :
>回路はその分多くなりますが。
ちょっと不正確。多入力ゲートが2入力ゲートのくみあわせよりも早いと期待できることがポイントだったかと。だから多入力ゲートの入力数の限界までは適用できますが、それ以上は実際どうなんでしょうね、よくわかんない。

73 :
そういえばどうして計算機工学の話になってるんだっけ?

74 :
>>73
知ったかしたいがために、
訊かれもしていないことをぺらぺらしゃべるやつが約1名いるようなんでね

75 :
じゃぁお前も喋ればいいじゃん。
気持ち悪いなお前

76 :
>>73
>>49 からの流れ。
>>74
ま、所詮暇つぶしですからね。

77 :
ああ、自覚はあるんだな
俺はお前のことだとはこれっぽっちも言ってないぜ(笑)

78 :
>>77
ん?私も私のことだとは言ってませんね。

79 :
暇つぶしだと分かってるのにか?

80 :
ヒョードルやジョシュにとってハントは休憩みたいなもんだろ。

81 :
>>80
え? もう鳥パクッタ?

82 :
69で使ったばっかりのトリップなのに何でもうパクられてんだ!

83 :
こえぇぇ。(´・ω・`) 鳥変えた。

84 :
コテつけて暇をつぶすスレはここですか?

85 :
もう一回>>83の鳥解析してよ

86 :
bool a();
bool b();
if (a() || b()) ... としたときに b() が呼ばれない可能性がある。。というのはいいんだけど、
bool x = false;
x |= a()
x |= b()
こういう場合でも b() が呼ばれない可能性ってあるの?

87 :
a()でexitしてたら、駄目かな?

88 :
つーかそもそもコンパイル通らないから呼ばれない確率100%だよ

89 :
>>82
すぐバレる嘘つくな糞vipperがwww
お前の鳥でググってら一杯出てくる出てくるwwwwwwwwwwwww

90 :
なに、この基地外?

91 :
たぶん糞コテがVIPから呼び込んだ奴

92 :
全角二文字の一般的な単語じゃ被ってもおかしくないか。
しかし、1時間ちょいで同じコテ見つけて書き込めるかねぇ?

93 :
>全角二文字の一般的な単語
それが分かるのは糞コテ本人か解析者
レス内容からして>>92は糞コテ本人と推定

94 :
推定も糞も>>69,83は俺だって。
最近のコテだと◆QZaw55cn4cと>>80は別人だが。
コテ付けてほしいのか?
今時コテ叩きして楽しいかい?

95 :
君の余計な一言
>最近のコテだと◆QZaw55cn4cと>>80は別人だが。
いや、君と◆QZaw55cn4cが同一人物の可能性なんてちっとも考えなかったよw

96 :
ちょっとはカンガエロヨ

97 :
>>86
下のは両方呼ばれるよ。
しかし、bool型にビット演算って違和感が。
警告とか出ないのだろうか。

98 :
重複順列に関してです。
A,B,C,...,G,Hという7個以上の要素から6つ取り出して並べたときの、全ての組み合わせを出したいのですが、うまくいきません。
例としては、
AAAAAA
AAAAAB・・・
と出していくのですが、同じ要素を使っていても並び方が違えば別のパターンとして表示します。
長文申し訳ありませんが、手におえず、ご教授頂きたい次第です。
よろしくお願いします。

99 :
>>98
7進数6桁の数値として考えればOK

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼