[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 08/05 19:05 / Filesize : 169 KB / Number-of Response : 711
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2011/12/23(金) 22:51:14.19 ]
C言語の*入門者*向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 93
toro.2ch.net/test/read.cgi/tech/1322866566/
★過去スレ
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++の宿題片付けます 154代目
hibari.2ch.net/test/read.cgi/tech/1322562648/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
codepad.org/

49 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:21:48.58 ]
>28

>>26
>char *character;
>
>character='c';
型が合わない(ポインタ変数に数値(文字コード)入れちゃダメ)。

>char* characterkansu(char *x)
>{
>x='d';
>}
*x='d';
ならこの行でエラーは出ない。
だがchar *の値を返す関数として定義されてるのにreturnが無いのがいけない。
値を返す必要が無いならvoidにする。

50 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:35:30.70 ]
#include<stdio.h>
void change(char* x);
int main(void)
{
char *character;
*character='c';
}
void change(char *x)
{}

コンパイル成功、実行stackエラー

51 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:39:01.56 ]
「プロセッサ」って言い方が気持ち悪い。
セッサってw
プロセッスとか言わないのに。
「投げキッス」みたいな?w


52 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:40:17.78 ]
#include<stdio.h>
void change(char* x);
int main(void)
{
char *character;
char word;
word='c';
character=word;
}
void change(char *x)
{
}

これはコンパイルエラー。。。。

53 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:46:49.22 ]
>>50,52
おまえアホだろ
ポインタは「メモリ領域のアドレスを指す変数」なのだから、まずポインタがどのメモリ領域を指すのか初期化しないとダメ。

> *character='c';
初期化されていないポインタ character の指すメモリ領域に 'c' を代入してる。
どこかわからんアドレスにアクセスするのだから実行時に落ちても文句言えない。

>character=word;
式の左辺と右辺で型が異なる。

54 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:47:33.14 ]
>>50>>52
何をやってんの?
いや、何をやりたいのか?と聞いた方がいいか

55 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:48:18.25 ]
>>53
int a;
int *b;
b=&a;

int aa[10];
int *bb;
b=aa;

何故?

56 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:55:54.37 ]
#include<stdio.h>
void change(char* x);
int main(void)
{
char *x;
x=NULL;

*x='c';

}
void change(char *x)
{
}

初期化したけど、コンパイル→成功、実行→スタックエラー

57 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:59:19.86 ]
>>56
やっぱおまえアホだろ。ヌルポインターについてちゃんと読んでこい。
www.kouno.jp/home/c_faq/c5.html



58 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:01:09.33 ]
#include<stdio.h>
void change(char* x);
int main(void)
{
char *x=0;

*x='c';
}
void change(char *x)
{
}

スタックエラー

59 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:02:36.70 ]
>>58
「どこも指していない」ことが保証されたポインタの指すメモリ領域に対して代入を行おうとしたんだから、
そうなるのが当然。

それがあなたのやりたかったことなのか?

60 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:04:35.88 ]
>>49

*x='d';
ならこの行でエラーは出ない。

に従いましたが...

どこが間違えてるでしょうか?

61 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:05:36.12 ]
>>60
あなたが何をしたかったのか分からないけど、プログラムはあなたの書いたとおりに動いているよ。

62 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:06:39.93 ]
>>59
char*型で作った変数aの中身を関数によって変えたいです。

char *a;


関数の戻り値はvoid




63 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:08:39.93 ]
>>62
もしmain関数がその関数を呼び出したいのなら、
変更されるメモリ領域をその関数に対して提示するべきだよな?

main(){
char c;
change( &c );
//FIXME: 変数cの内容を表示して、変更されたことを確認できるようにする
}

64 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:13:28.57 ]
形式的に

char *x;



*x='c';

でエラーでない時って
空の部分どうしたらいいですか?

65 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:24:38.99 ]
>>64
xの内容がヌルポインタだったかどうかチェックを入れて、もしそうなら呼び出し側にエラーを返す。
どのような形式でエラーを返すかはあなたが決めること。

また、ヌルポインタであることが「ありえない」と断言出来る場合にはアサートを入れて
開発版ビルドでのみチェックが行われるようにする開発手法もある。
www.geocities.jp/ky_webid/c/059.html

66 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:25:58.54 ]
char *x;

char d;

d='a';

x=&d;

*x='c';


答えは&ですね。
&以外だと絶対実行エラーでますね..

ありがとうございました。

67 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 08:03:15.23 ]
>>66
&以外でも出ません。



68 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 09:08:01.15 ]
char * x;
char d[1];
d[0] = 'a';
x = d;
* x = 'c';

69 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 09:37:04.49 ]
>>31
さんくす。
とりあえず片っ端から勉強してみる。

70 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 11:28:14.75 ]
総相 川端達夫 帰化人。 在日韓国人法的地位向上議員連盟
法相 平岡秀夫 帰化人。 在日韓国人法的地位向上議員連盟
文科相 中川正春 在日韓国人法的地位向上議員連盟
厚労相 小宮山洋子 帰化人。 在日韓国人法的地位向上議員連盟 自身の選挙区の太平建設と談合
国家戦略相 古川元久 パチンコ協会政治アドバイザー 

韓国人から賄賂を貰っている野田
韓国人の集いに参加している野田
野田は日本人じゃないだろ


71 名前:デフォルトの名無しさん [2011/12/25(日) 11:46:03.01 ]
>>68
配列の場合&いらんのか?ややこしいな...
関数で渡すならなおさらややこしい。

72 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 11:56:40.70 ]
下記URLに秀丸のDLLの作り方が書かれているのですが
これをVCで作る場合のdllのコンパイルの仕方をご教示おねがいします
ttp://homepage3.nifty.com/kons/hidemaru/helpsite/hidemac/html/200_Dll.html

73 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 11:57:19.27 ]
>>71
配列は、[ ] の数が合っていれば値を、
足りなければ配列のある場所を返すからな

74 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:17:06.85 ]
>>72
プロジェクトの構成の種類を ダイナミックライブラリ (.dll) にするだけだと思うが…

75 名前:72 mailto:sage [2011/12/25(日) 12:27:25.61 ]
>>74先生ありがとうございます
まじすか
やってみたのですがうまくいかず難しいです
もしよろしければgithubにhelloworldを返すdllのソースコードを公開していただけないでしょうか?

76 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:29:35.58 ]
>>75
クレ厨死ね

77 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:38:22.25 ]
>>75
>やってみたのですがうまくいかず難しいです

何をやって、どううまくいかないか書けよ。

て言うか、

char* SampleFuncStr() {
static char sz[100];
strcpy( sz, "test" );
return sz;
}

ぐらいは試したのか?



78 名前:デフォルトの名無しさん [2011/12/25(日) 12:38:34.81 ]
>>47
ありがとうございました。
「クラス」がすごく重要なんですね。
そこをしっかりと勉強します。

79 名前:72 mailto:sage [2011/12/25(日) 12:49:00.23 ]
>>77
コンパイルしてみたらVCの下の画面にエラーが出てしまいます

80 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:53:26.48 ]
>>72
エラーメッセージも読めないレベルの人なら、先に普通のアプリが作れるようになってからDLLとか書いた方がいいよ

81 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 13:15:23.36 ]
>>79
>コンパイルしてみたらVCの下の画面にエラーが出てしまいます

>> どううまくいかないか (=エラーの内容ぐらい) 書けよ。

82 名前:デフォルトの名無しさん [2011/12/25(日) 14:02:41.47 ]
ttp://ist.ksc.kwansei.ac.jp/~ibaraki/shokodo/select.c
このプログラム何ですが、実行エラーが出るのですが何故ですか?
皆さんはでますか?僕が間違ってるのでしょうか?
60

3

1
2
.
.
59
60
というテキストファイルを読み込みのために作りました。
コンパイルはエラーがないものの、実行時Segmentation faulが表示されます。


83 名前:72 mailto:sage [2011/12/25(日) 14:16:31.59 ]
すいませんエラーはこれです
>プログラム 'D:\source\vc++\Projects\HelloWorld\Debug\HelloWorld.dll' を開始できません。

84 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 14:24:30.42 ]
HelloWorld.dllを実行しようとしてる?

85 名前:72 mailto:sage [2011/12/25(日) 14:34:08.22 ]
F5を押してdllを作ってます

ソースコードを載せるので添削お願いします
■hello.def
LIBRARY hello

EXPORTS
SampleFuncStr

■hello.h
extern int SampleFunc();

■hello.cpp
#include <string.h>

char* SampleFuncStr() {
static char sz[100];
strcpy( sz, "test" );
return sz;
}

86 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 14:48:46.32 ]
>>82
>n = 60
>A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
>3-th smallest element = 3

こういう出力が出てきて、正常に実行出来た。
関数selectの名前だけ変えたが。

87 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 14:52:36.32 ]
>>83
>>プログラム 'D:\source\vc++\Projects\HelloWorld\Debug\HelloWorld.dll' を開始できません。

ちゃんと >>74 やった?



88 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 15:04:35.36 ]
>>87
プロジェクト作るときにやりました
defファイルもプロパティのモジュール定義ファイルにファイル名を書きました

またプロジェクトを作り直してF5ボタンでデバッグをやったらさっきのエラーと別に新たに↓のエラーがでました
>HelloWorld.exp : warning LNK4070: .EXP 内の /OUT:hello.dll ディレクティブの指定が出力ファイル名 'D:\source\vc++\Projects\HelloWorld\Debug\HelloWorld.dll' と異なっています。ディレクティブは無視されます。


ソリュージョンのビルドをやると以下の1行しか表示されなくなりましたがdllが作られませんでした
========== ビルド: 0 正常終了、0 失敗、1 更新不要、0 スキップ ==========

89 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 15:16:36.69 ]
>>86
それでもスタックエラー出ましたが。
どうしてなんでしょうか....

文書作成ソフトはNotepadです。

3
2
1
2
3

この5行が中身なんですが、
要素数が3 pが2 要素が1 2 3です。


90 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 15:25:50.36 ]
>>89
実行環境は?
OSとコンパイラ名、それぞれのバージョンも

91 名前:デフォルトの名無しさん [2011/12/25(日) 16:21:23.16 ]
>>90

txt保存のとき"ファイル名"でOKでした。

他に自分が、k=l;のところをk=1;でした。

ちなみに、s.cというファイルを作ったとしたら
勝手にs1.cみたいに数字付きファイルが作られている事があるのですが
何故ですか?

92 名前:デフォルトの名無しさん [2011/12/25(日) 16:21:48.04 ]

これは必見
フジテレビ 生放送中に有志による怒りの抗議 (昨夜) (コメント欄に反日工作員が紛れているので注意)
www.nicovideo.jp/watch/sm16518699?user_nicorepo


93 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 16:26:56.17 ]
>>91
お前解決する気ないだろ

94 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 16:27:52.71 ]
>>93
解決しました、ありがとうございます。


95 名前:88 mailto:sage [2011/12/25(日) 16:44:52.34 ]
どうかたすけてください

96 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 16:59:39.30 ]
>>95
できてんじゃないの。
ない?

97 名前:デフォルトの名無しさん [2011/12/25(日) 17:02:41.25 ]
7ujm.net/C++/time.html(真ん中)
このページを参考に現在時間を取得しました。
10分後の時間を取得したいのですが、どのようにしたらよいでしょうか。
以下のように行ったところうまくいきませんでした。
sprintf(buff,"%d:%d:%d",pnow->tm_hour,pnow->tm_min+10,pnow->tm_sec);
結果、16:64:55
これを、17:4:55とでるようにしたいです。



98 名前:88 mailto:sage [2011/12/25(日) 17:06:25.11 ]
>>96
debugのところにはdllがあるんですけどソリュージョンでビルドをやったときにdllが作れませんn

99 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:08:17.41 ]
>>97
nowに10分足してからlocaltimeすればいんじゃね?

100 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:10:59.64 ]
>>97
now += 10*60;

101 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:12:54.79 ]
10年前にこの地球が存在していたことを証明するには
どこで計算ができますか?


102 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:15:54.70 ]
仮にこの地球が本物ではないのだとしたら
あなたはいったい誰なんですか?


103 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:16:27.61 ]
登大遊さんが1日に1万行ソース書いたとかいうエピソード見ましたが
凄くないですか?


104 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:17:58.17 ]
書くだけなら猿でもできるし

105 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:18:56.42 ]
1万行はすごいけど、5000行程度なら普通にいるよな。
つまり、すごい人は普通の人の2倍の能力を持つ。

106 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:19:29.23 ]
ttp://d.hatena.ne.jp/softether/20070324
 ↑
一ヶ月数百行???

helloworld出力のソースだけで、 5,6行あるんだが...
やっぱ職業プログラミングってhelloworldと違って複雑で難しいのかな。

107 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:22:10.03 ]
>>105
頭の良さってペーハー的に位置づけるらしいですね。

イメージだと、オイラーが10としたら,アインシュタインが8,シャノンが4くらいかな?

登大遊さんはどれくらいだろう。
少なくとも、彼程の天才今の大学生にいないでしょう。
周り見回しても。



108 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:24:11.85 ]
5000行の内何割くらいがアルゴリズムなんだろう....


109 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:31:58.95 ]
いまどき行数やステップ数で考える人がいるなんて。

110 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:33:46.75 ]
>>109
発注主がそうだと、しかたがないよね

111 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:34:04.84 ]
全くの0から自分の知ってる分野のプログラムを書くなら早いだろうけど
例えば今からEclipseのプラグイン作ってって言われて全く経験ない状態から24時間以内に5000行書いてみろよと

112 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:35:16.45 ]
行数抜きに考えることもまた難しい。

113 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:35:40.83 ]
>>109
ほかに物差しが無いんだから仕方ないだろ。
行数だしとけばお金が引き出せるんだから
むしろ積極的に利用した方がお手軽だぜ。

114 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:40:00.31 ]
#\
i\
n\
c\
l\
u\
d\
e\

とかやったらhello worldで60行くらいいけるな

115 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:44:09.44 ]
Ruby みたいのだと格安になっちゃうな。


116 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:52:38.05 ]
プログラミング環境としてはノートとデスクトップのどっちが
良いですか?やっぱりノートですか?速いし。

117 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:57:11.33 ]
個人で使いやすいもの使っとけよ



118 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:00:13.22 ]
Desktopだと疲れない?

119 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:04:12.63 ]
デスクトップよりタワーの方がいいよ。

120 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:04:16.58 ]
コーダーの上がプログラマの上がシステムエンジニアの上は?

121 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:08:52.16 ]
>>109
>いまどき行数やステップ数で考える人がいるなんて。

じゃあなんで考えるんだよ。

122 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:09:32.43 ]
マジな話すると、ラップトップの小さい画面より、
デスクトップで大きなディスプレイ使って大きめの文字で設定するのが良いよ。

ディスプレイは、やや見下ろす位置に配置、
ブライトネスは暗めに設定、部屋の証明は消さない。
キーボードは体に近付けすぎない、肘が鈍角になる位置まで離す。



123 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:12:07.95 ]
肘の位置重要だわ、死んだ人みたいに肘曲げて寝てる人いるけど、
あれありえないだろw疲れるw


124 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:45:07.82 ]

         
平松サイド       橋下サイド

民主党         大阪市民(ナマポ、70代以上の大半を除く)
自民党          
共産党
財界・関西電力
連合・自治労
日教組・公務員
毎日新聞・MBS
解放同盟・反日極左
朝鮮総連・韓国民団(野田の支持母体)
革マル派・中核派


125 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 21:04:36.56 ]
ノートで仕事すると5時間で死ぬな

126 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 21:31:39.07 ]
ITドカタやってて、今の現場はPC用意してくれなくて自分で持ち込みなんだけど、
でかいモニターを二つ持ち込んでるのって俺だけで、他はちっこいノートで作業してるから
浮いてて恥ずかしいわ。
eclipseとかあんなちっこい画面でよく使えるわ。

127 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 21:46:10.86 ]
void MergeSort(int x[ ], int left, int right)
{
int mid, i, j, k;
if (left >= right) /* 配列の要素がひとつなら */
return; /* 何もしないで戻る */
/* ここでは分割しているだけ */
mid = (left + right) / 2; /* 中央の値より */
MergeSort(x, left, mid); /* 左を再帰呼び出し */
MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */
/* x[left] から x[mid] を作業領域にコピー */
for (i = left; i <= mid; i++)
temp[i] = x[i];
/* x[mid + 1] から x[right] は逆順にコピー */
for (i = mid + 1, j = right; i <= right; i++, j--)
temp[i] = x[j];
i = left; /* i とj は作業領域のデーターを */
j = right; /* k は配列の要素を指している */
for (k = left; k <= right; k++) /* 小さい方から配列に戻す */
if (temp[i] <= temp[j]) /* ここでソートされる */
x[k] = temp[i++];
else
x[k] = temp[j--];
}

/* ソートされるデータ */
int x[ ] = {9, 4, 6, 2, 1, 8, 0, 3, 7, 5};

MergeSort(x, 0, MAX_DATA - 1);


これトレースして教えてくれ
再帰の部分がいまいちわからん



128 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 21:47:14.86 ]
URLこれな www1.cts.ne.jp/~clab/hsample/Sort/Sort6.html

再帰の部分はどうやって処理するのかが不明

129 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 21:59:52.95 ]
>>128
説明かいてあるじゃん

130 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:05:38.75 ]
トレースお願い

131 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:34:12.19 ]
エレガントにな。

132 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:38:19.51 ]
ソーと関数の変数定義の後にこれ突っ込んどけ

static int n;n++;printf("呼び出し回数:%d left:%d right:%d\n",n,left,right);

133 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:53:24.54 ]
>>126
持ち込みPCって、情報漏洩(会社、個人とも)でヤバイんじゃないの?

134 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:00:52.06 ]
>>106
試行錯誤の結果行数かもしれない。
あと変幻自在の謎仕様、レガシーコード渡されて「ちょこっと変更すれば出来るだろ?」→解読に数日、とかも。

135 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:11:51.69 ]
mid = (left + right) / 2; /* 中央の値より */
MergeSort(x, left, mid);
MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */

上のMergeSortを呼び出し終わったらどうするの?
最初0,9を渡して、割っていくんですが0,4 0,2 0,1 0,0
そして次のMergeSort(x, mid + 1, right); /* 右を再帰呼び出し */
わかりません


136 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:26:04.04 ]
例えば猫が愛らしい猫なで声で鳴けるのは
猫自身が努力をして試行錯誤を繰り返した結果獲得したのではなく
単にもともと愛らしい猫なで声を身に付けて生まれてきた猫だけが人間に餌を貰えて子孫を残すことが出来たというだけで
愛らしい猫なで声を持たずに生まれてきた猫は人間に餌を分けてもらえず餓死して絶滅したというだけ
生物の進化というのはこういうことを言う
要するに駄目な奴は努力しても無駄だから死ねということ

137 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:29:54.28 ]
確かに努力しても無駄だと思わせる文章だ。



138 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:34:11.41 ]
努力しても無駄な人が書いた文章の見本になるな

139 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:41:52.70 ]
自己解決しました

140 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 01:22:56.93 ]
そういえばソースの良し悪しを決めるソフトとかってないの?

141 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 01:48:52.82 ]
こういうのか?
ttp://www.aicp.co.jp/products/codesonar.shtml

142 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 07:33:02.75 ]
うん

143 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 10:14:55.02 ]
hello worldを表示するだけのプログラムのexeが50KBもあるのはなぜでしょうか?
C#だと10Kb以下ですが

144 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 10:35:31.44 ]
ワイルドカード展開するためのプログラムとか入ってるからな。

145 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 10:46:45.28 ]
www1.cts.ne.jp/~clab/hsample/Sort/Sort6.html
このマージソートがどうしてもわかりません
トレースはどのようになってるのでしょうか?
0 4
0 2
0 1
0 0で MergeSort(x, left, mid); /* 左を再帰呼び出し */0 0を呼び出した後


void MergeSort(int x[ ], int left, int right)
{
int mid, i, j, k;

if (left >= right) /* 配列の要素がひとつなら */
return; /* 何もしないで戻る */

/* ここでは分割しているだけ */
mid = (left + right) / 2; /* 中央の値より */
MergeSort(x, left, mid); /* 左を再帰呼び出し */
MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */
returnで何もしないで戻ったら次の MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */を呼び出すのでしょうか?

146 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 10:48:30.25 ]
MergeSort(x, left, mid); /* 左を再帰呼び出し */
MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */

ここの下からの処理はいつ実行されるのでしょうか?
ずっと再帰でループしてるように思えますが

147 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 10:49:52.63 ]
>>143
clつかってるのなら、/MDつければ小さくなるよ



148 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 10:54:11.06 ]
>>145
なんかどっかのすれでも見た気がするけど、returnしてるところで終わる

149 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:01:17.75 ]
>>148
4回目でMergeSort(x, left, mid); これに0,0入れてますよね?
最初に0,9を入れてMergeSortを呼び出して mid=(left+right)/2
0 9
0 4
0 2
0 1
0 0

if (left >= right) return;
つまり 0>=0でreturnなんですが
このreturnを実行したらどうなるのでしょうか?
0 1が返されるのでしょうか?
このreturnがどこに返されるのかがわかりません
0 1を返してまた実行すると mid=(left+right)/2で mid=0
MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */
ここに入れる?わかりませんが 1 1と呼び出す いまいちわかりません
具体的に流れを教えてくれる方はいませんか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<169KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef