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


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

C/C++の宿題片付けます 136代目



1 名前:デフォルトの名無しさん [2010/05/26(水) 07:45:28 BE:94671825-S★(522522)]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

前スレ
C/C++の宿題片付けます 135代目
pc12.2ch.net/test/read.cgi/tech/1269438098/

281 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:47:41 ]
最近のコンパイラって最適化でstrlen()が消えるの?

282 名前:280 mailto:sage [2010/06/04(金) 23:48:07 ]
ごめん、誤解を招くレスをした。

修正するかどうかはその後判断すればいいので、今そこを直すべきじゃないということ。

283 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:49:23 ]
>>281
横レスすまん。
strlenは消えないが、ループの外に出すことは十分期待していいんじゃないかな

284 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:50:29 ]
[1] 授業単元:プログラム演習A
[2] 問題文:全30件の成績(0〜100点)をキーボードから
読み込み、0〜9点, 10〜19点,・・・, 90〜99点, 100点 の
11通りの区間にそれぞれ何人が入るかを調べなさい。
ただし、各区間に入る人数を溜めておく入れ物として
配列を利用すること。更に調べた人数に従って、各区間を
ヒストグラムで表しなさい。

0点:***
10点:*****
20点:****


100点:*

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:2010年6月7日まで

285 名前:デフォルトの名無しさん [2010/06/04(金) 23:57:48 ]
訂正

[3.2] コンパイラ名とバージョン: Visual C++




286 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:02:48 ]
>>284

#include <iostream>

void main() {
int histogram[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int score;
for (int i = 0; i < 30; ++i) {
score = 0;
do {
std::cout << "成績を入力しろ(0〜100)" << std::endl;
std::cin >> score;
} while (score < 0 || 100 < score);
++histogram[score / 10];
}

for (int i = 0; i < 11; ++i) {
std::cout << i * 10 << "点:";
for (int j = 0; j < histogram[i]; ++j) {
std::cout << "*";
}
std::cout << std::endl;
}
}

287 名前:デフォルトの名無しさん [2010/06/05(土) 00:11:56 ]
>>286
void main() (笑)

288 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:15:29 ]
int main() でも return 0; は省略できるのにねえ

289 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:16:32 ]
それなりにC++っぽいコード書いといてそこ落としたら突っ込まれるのしょうがない。



290 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:18:52 ]
>>280, 283
もっといいコンパイラなら strlen() を外にだしてくれるかもしれませんが、私の gcc 3.3.4 や bcc 5.5.1 では -O2 にしても
アセンブラリストを見る限りは、strlen() はループの中のままのようです。
そこから先の知識をもっていないのは私も一緒でしょう。
とにかく、しばらくこちらで今までのように鍛えていただくことにしました。
フォローありがとうございました。

291 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:22:23 ]
そう思うんなら>>278の残りのstrlenもなんとかしろよw

292 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:24:27 ]
>>291
strlen くらい残しても問題ないだろうに
余計なことするのが好きなんだな

293 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:27:08 ]
すでにstrlen()で長さを求めて専用の変数に格納してるのに、
その長さをまたstrlen()で求めるのは無意味で無駄。

そんな無駄を許せる人間がプログラムをしてることが驚きだよw

294 名前: ◆QZaw55cn4c mailto:sage [2010/06/05(土) 00:35:35 ]
>>258
codepad.org/IiGMyIU6
指摘を受けた部分を改良いたしました。

295 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 01:14:00 ]
>>284
  0点:***
 10点:*****
 20点:****


100点:*



296 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 03:05:02 ]
>>293
なんでメモリリークの可能性は許しちゃうの?
速度よりもそっちの方が大事だろ普通。

メモリリークを許せる人間がプログラムをしてるなんて心配になるよw

297 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 03:21:38 ]
どこでメモリリークするのか◆QZaw55cn4cのために懇切丁寧に説明してあげてくれw

298 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 04:43:15 ]
>>297みたいに自分の意見を言わない人は嫌いだが、メモリリークする箇所あるか?

299 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 11:32:53 ]
模範例文として推敲がどの程度行われるべきかは
状況依存としか言いようが無いです
推敲され過ぎてバグも無駄や文書としての矛盾も無い
状態が教育上好ましいかどうかは一概に言い切れま
せん
ただしその逆が問題になるのは、ネット環境でそれが
容易に複製され大量流布になり得るという観点からの
みです。



300 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 11:46:10 ]
バカの長文ほど邪魔なものはないな

301 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 11:55:55 ]
短文を書けるのが賢いんだと思い込む人よりかアホやバカかも知れないが
ナルシスティは小さいかもな

302 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 12:29:36 ]
宿題丸投げするようなバカへの回答なんて何だって良いだろうが
どうせこのスレでいい例を見せたって理解できるはずないだろ

303 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 12:46:11 ]
segmentation fault
core dumped.

304 名前: ◆QZaw55cn4c mailto:sage [2010/06/05(土) 17:03:20 ]
>>298
malloc()/realloc()/free() のラッパを書いて確認してみました。
codepad.org/5lqkATcO
ただ、ラッパ自身も malloc() / free() を使っているので、これが正しいかどうかを検証する方法がわからない。
ラッパのラッパを書くしかないのか‥‥‥。


305 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:10:54 ]
>>302
宿題を丸投げする人は、このスレのお客様。
むしろコード書く人、そのコードを読む人が主人公かなあ。
さらしたコードを叩くな、という人がいますが、むしろコードを読んで叩いてくれる人がいるからこそ、書きがいがあるというものです。

306 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:19:29 ]
ただで駄目なところ指摘してくれたり、より効率的な方法教えてくれるんだから
ありがたいもんだよな。
変にプライドの高い人は逆ギレしちゃうけど。

307 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:29:51 ]
>>306
コードさらす人は、意識していないかもしれませんが、そのプライドを自分で潰しに来ている、といっていいわけですから、コードをかかない人よりよっぽどましかと。

308 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:42:20 ]
そうそう。ここでコード晒す側も
所詮、暇つぶしなんで、波風立たない方が嬉しいにこしたことはない。

ここ100レス余りの流れで宿題がこないから、
mixiの宿題コミュまで覗っちゃったじゃないか!


309 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:45:23 ]
>>258



310 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:55:13 ]
>>308
mixiのあのコミュはなにかしら投稿するとsock(ryとかいう人に叩かれるw

311 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:55:52 ]
>>307
いいからお前はトリップを全部の発言につけろw

312 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:23:23 ]
>>304
ラッパがバグってるっぽい

313 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:25:49 ]
最近は嫌がらせ半分のふざけたコードに突っ込む人いなくなったなぁ。
そのまま提出した学生がその後どうなったのか気になるところだが。

314 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:28:52 ]
>>313
他人をむやみに信用することの愚かさを痛感し、
自分で判断できる力を身につけようと努力し、偉人になったとか。

315 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:39:53 ]
>>284ですが、型が違うみたいでエラーがでます。
そこで少し変えたんですが、なんか違うようです。

316 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:40:36 ]
#include<stdio.h>

main(void)
{
int test[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int i,j;
int score;

for (i=0;i<30;i++) {

score = 0;

do {

printf("成績を入力しろ");
scanf("%d",&score);

} while (score < 0 || 100 < score);

test[score / 10]++;

}

317 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:42:10 ]
for (i=0; i < 11;i++) {
printf("点:");
for (j=0; j<test[i];j++) {
printf("*");
}
}

return 0;
}

318 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:57:10 ]
>>315
#pragma warning(disable:4996) // これを追加する 
#include<stdio.h>
main(void)
{


319 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:05:19 ]
早くお客様こないかなー



320 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:07:14 ]
>>318
ありがとうございます。


321 名前:デフォルトの名無しさん [2010/06/05(土) 20:17:04 ]
すいません>>320です。
問題文に「0〜9点, ・・・, 90〜99点, 100点」と書いてありました。
大変申し訳ないです。
0〜9点:***



100点:** とするには、どう手を加えればいいのですか?

322 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:19:11 ]
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10649.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 無期限


323 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:21:51 ]
>>321
for(i=0; i<11; i++) {
if(i==10) printf("100点:");
else printf("%d〜%d点:", i * 10 + i * 10 + 9);

324 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:25:11 ]
>>321
「printf("点:");」→「if (i == 10) { printf("100点:"); } else {printf("%d〜%d", i*10, i*10+9);}」

325 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:28:09 ]
>>322
2-A:char**
2-B:char[][MAXLENGTH]
2-C:char**day
2-D:char day[][MAXLENGTH]

326 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:31:07 ]
>>323-324
ありがとうございます。
何度もすいませんでした。


327 名前: ◆QZaw55cn4c mailto:sage [2010/06/05(土) 21:50:30 ]
>>312
ご指摘感謝。free() のラッパがバグっていました。最後のひとつを開放するときにリンクをはずせていなかった。
codepad.org/91IVlXJH

328 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 22:26:34 ]
>>325
ありがとうございます。

329 名前:デフォルトの名無しさん [2010/06/05(土) 22:33:28 ]
文字と演算子を入力して四則計算するプログラムってどうやります?
例えば
3←入力
+←入力
4←入力
−←入力
・←入力



(計算結果)



330 名前:329 [2010/06/05(土) 22:36:29 ]
#include<stdio.h>
int main(void){
int a,b;
char c;
while(a != '='){
scanf("%d",&a);
scanf("%c",&c);
if (c = '+')b += a;
else b -= a;
}
}

うまくいきません。

331 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 22:56:11 ]
>>329
ideone.com/PMcBO
逆ポーランド 電卓とかでググってみてくれ

332 名前:329 [2010/06/05(土) 22:58:00 ]
>>331
そんな難しいのじゃなくていいです・・
とりあえずwhileとか使って
数字入力 演算子入力 数字入力・・・・=答え
みたいなのが作りたい。

333 名前:デフォルトの名無しさん [2010/06/05(土) 23:51:35 ]
>>258です。ポインタを用いないバージョンもできないでしょうか。

334 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 23:55:00 ]
>>332
こんなんでどう?
codepad.org/b68KtrqB

335 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 00:04:36 ]
scanf()はエラーも返すんだよね。

336 名前: ◆/91kCCQXBo mailto:sage [2010/06/06(日) 00:14:15 ]
#include<stdio.h>
int main(void){
  int a=0, b=0, plus=1;
  char buf[80];

  while(buf[0] != '='){
  //  fgets(buf,100,stdin);
    gets(buf);
    if(buf[0] == '+'){
      plus = 1;
      b = a;
    }
    else if(buf[0] == '-'){
      plus = -1;
      b = a;
    }
    else
      sscanf(buf, "%d", &a);
  }
  b = b + plus * a;
  printf("ans=%d\n", b);
}
/*
3
-
6
=
ans=-3
*/

337 名前:デフォルトの名無しさん [2010/06/06(日) 01:34:19 ]
こんなソフト作ってください(お代は払います)ってな感じのスレどっかにあったかなぁ?
アイデアはあるけどオツムがないからどうしようもなく放置したまま早1年。
発注するから誰か受注して って頼みたいんだけど?

338 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 01:53:31 ]
>>337
pc12.2ch.net/test/read.cgi/software/1251624598/l50
なんてどう?

339 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 02:09:42 ]
サンクス



340 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 02:37:30 ]
>>258
>>333
codepad.org/K6MwzaHX

341 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 10:39:09 ]
>>333
#include <stdio.h>

int main(void)
{
char a[256], b[256];
int i, j, flg = 0;

printf("文字列を入力してください。");
scanf("%s", a);
printf("検索文字列を入力してください。");
scanf("%s", b);

printf("文字列「%s」は", b);
for(i=0; a[i]; i++) {
for(j=0; b[j]; j++) if(a[i+j]!=b[j]) break;
if(b[j]=='\0') {
if(flg++) printf(",");
printf("%d文字目から%d文字目", i, i + j - 1);
}}

printf("%s\n", flg ? "に存在します" : "は存在しません");

return 0;
}

342 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 10:45:21 ]
>>333
折角書いたけど>>341の方がスマートでくやしい
#include <stdio.h>

int main()
{
    char str[256], search[256];
    int strIdx = 0, searchIdx = 0, found = 0;
    printf("文字列を入力してください。\n");
    scanf("%s", str);
    printf("検索文字列を入力してください。\n");
    scanf("%s", search);
    while(str[strIdx]){
        if(str[strIdx] == search[searchIdx]){
            found = strIdx + 1;
            while(search[++searchIdx]){
                if(str[++strIdx] != search[searchIdx]){
                    found = 0;
                    break;
                }
            }
            if(found) break;
        }
        ++strIdx;
    }
    if(found == 0) printf("文字列「%s」は存在しません。\n",search);
    else printf("文字列「%s」は%d文字目から%d文字目に存在します。\n",search, (found - 2), (found - 2) + (searchIdx-1));
}

343 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 10:47:15 ]
しかもバグ入りという...

344 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 12:03:14 ]
>>329
ちゃんとつくると難しいです。たとえばこんな感じになります。
codepad.org/ODg132aP

345 名前:デフォルトの名無しさん [2010/06/06(日) 16:10:45 ]
何故>>330
はダメなのでしょうか?

>>344
ちゃんとつくらなくても>>336のプログラムの中身がすでに
理解できないんですが・・・>>336より簡単にできないんですか?
どんなプログラムも付け足せば何とかなるんですよね。

buf[]とstdin, fgetsなど全く意味がわかりません。
一応プログラム自体実行したら正しくいきます。
ただ宿題なので、今まで習ったことでやるしかないんです。

一応C言語です。

346 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:15:25 ]
>>345
そういうのは最初に全部テンプレ使って言え

347 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:23:51 ]
>>345

#include<stdio.h>
int main(void){
int a,b = 0;
char c=' ';
while(c != '='){
scanf("%d",&a);
scanf("%c",&c);
if (c == '+')b += a;
else b -= a;
}
}
これでどうだ

348 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:25:40 ]
>>345
ちがった
#include<stdio.h>
int main(void){
int a,b = 0;
char c=' ';
while(c != '='){
scanf("%d",&a);
scanf("%c",&c);
if (c == '+')b += a;
else if(c == '-')b -= a;
}
printf("%d\n", b);
}

こうかな。

349 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:41:12 ]
>>345なぜダメかという理由を書くと

1.while(a != '=')となっている点。
aは数字だろ?演算子はcに入れたいんだろ?だからwhile(c!='=')が正しい。

2.if(c='-')となっている点。
=は代入。比較なら==を使う。たまに見かけるバグだな。

3.int a,b;となっていて、bを初期化していない点。
bに結果を入れたいのだろうが、最初に0で初期化していない。
初期化しないと値は不定。何が入ってるか分からないというわけ。
つまりコンパイラとしてはbに最初から0xCDCDCDCDを入れておいても仕様違反ではないというわけだ。
vc++のデバッグビルドならそうなる。
そこにプラスマイナスしても正しくならないよな。

4.else b-=a;となっている点。
これだと'='が来たときも引き算してしまう。だからese if(c=='-')にしないといけない。

5.whileに最初に入った時点でcは不定。
だから万が一cが'='だったらすぐ抜けてしまう。ここでは' 'を入れておけば絶対に問題が起きないのでおk。
現実問題として、滅多に起きないが、社会にでたらこれは立派なバグとして扱われるぞ。



350 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:42:02 ]
こいつに理解させるのはまず無理だと思うけどな

351 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:53:45 ]
俺に聞けスレで諦めた一人ですな

352 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:55:49 ]
>>348
12+12=0…

353 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:58:45 ]
だからscanf()で文字を読むときは改行文字に気をつけろって言っただろ

354 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 17:01:25 ]
int a=0 ,b=0;
char c=0;
scanf("%d%*c",&b);
while(scanf("%c%*c",&c) && c != '='){
scanf("%d%*c",&a);
if (c == '+')b += a;
else if(c == '-') b -= a;
else ;
}
printf("%d\n",b);
それを修正してとなると↑のようになる(scanf削って縮めたいんだが、俺には限界)

355 名前:349 mailto:sage [2010/06/06(日) 17:03:34 ]
ああ、ごめん。
実際に動かしてみたら色々問題がまだあるね

scanf("%c", &c);は改行コードを拾ってしまうな。

356 名前:4 [2010/06/06(日) 18:52:56 ]
>>350
>>351
ひどすぎワロタww
命かけて頑張ってんだよ、茶化さんで。

357 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 18:56:00 ]
>>356
命がけ、というのであれば、それを見せてほしいですね。現状では伝わってこないんです。

358 名前:4 [2010/06/06(日) 18:58:23 ]
>>354
優しすぎ、ありす。
まじで感謝してる。プログラミングの単位たぶん落とすと思うけど
2学期には間に合うようにするわ。


359 名前:デフォルトの名無しさん [2010/06/06(日) 19:02:36 ]
熟練のマである>>355でもエラー出すC言語ってどんだけむずいんだよ。
もっと簡単で寛容なC言語はないんかね。



360 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 19:03:51 ]
いろいろと突っ込みどころがあるな

361 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 19:44:23 ]
>>359
ちょっと上の方でコテが散々やっつけられていたのを見ましたか?
簡単で寛容な、というのは期待しないほうがいいかと。

362 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 20:20:28 ]
宿題というか、既存のプログラムのバグ消しのお願いです
AviUtlという画像編集・エンコソフトを使っているですが、
そのソフト用にNL-Means Filterというものが出ています。
ですがそのフィルターを使うとソフトがフリーズしてしまいます。なんとか解決できませんか?
症状としては、そのフィルターをオンにすると、AviUtlを終了しようとした時にフリーズします。
GPU支援を使う、計算モード3のときのみ起こります。お願い致します

kishibe.dyndns.tv/index.php?%E3%83%95%E3%83%AA%E3%83%BC%E3%82%BD%E3%83%95%E3%83%88%2FNL-Means%20filter
からダウンロードするとソースらしきものもついてきます

363 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 20:56:36 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10650.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2010年6/8まで
[5] その他の制限:なし
2問ありますが、よろしくお願いします。

364 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:06:03 ]
>>363
<課題2>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i, j, k, n;
double *x, temp;

scanf("%d", &n);

x = malloc(n * sizeof(double));

for(i=0; i<n; i++) scanf("%lf", x + i);

for(i=n-1; i; i=k) {
for(j=k=0; j<i; j++) {
if(x[j] > x[j+1]) {
temp = x[j];
x[j] = x[j+1];
x[j+1] = temp;
k = j;
}}}

for(i=0; i<n; i++) printf("%f\n", x[i]);

free(x);

return 0;
}

365 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:30:33 ]
>>363
<課題1>
codepad.org/i9GSGdcP

366 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 21:36:06 ]
>>363
codepad.org/XdsWKbxa
codepad.org/qynZDN0h

367 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:44:36 ]
ぐだぐだ言い訳されるのわかってても突っ込みたくなるなw

368 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:45:38 ]
>>367
どうぞどうぞ突っ込んでくださいな。楽しみにしています。

369 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:48:51 ]
実数と整数の区別もつかないアホ
ソート部分がクソ



370 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:55:59 ]
>>363です
ありがとうございます

371 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:56:08 ]
>>363
2番目の課題を訂正します。
codepad.org/qgboBPOZ
>>369
普通のバブルソートですが、何か問題でも?

372 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:57:51 ]
だからそれはバブルソートじゃないって言っただろw

373 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:02:21 ]
>>372
あれ?私は en.wikipedia.org/wiki/Bubble_sort を参照したんですけれどもね。

374 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:09:35 ]
それが言いたくてわざわざ効率の悪いほう使ったのかw

375 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:10:08 ]
>>373
バブルソートは

for(j=0;j<n-1;j++){
for (i = 0; i < n - 1; i++) {
if (x[i] > x[i + 1]) {
t = x[i];
x[i] = x[i + 1];
x[i + 1] = t;
}
}
}
だろ。わざわざdo{} while()にしても比較回数が減ることはない。


376 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:16:38 ]
>>373
だから全部読めって前も言ったよな?
Optimizing bubble sortのところで何でn := newn + 1ってなってると思ってるんだ?

377 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:17:08 ]
>>375
そうですよね。>>375 であげていただいたやり方もバブルソートといいますよね。
でも >>372 はお気に召さないようなんですよ。
確かに日本語版 wiki やドイツ語 wiki では、幾分効率をあげたものが採用されているようですが、
どうオプティマイズしても計算オーダーはΟ(n^2) で変わらないのですけれども、>>372 は計算オーダーの概念がよくわかっていないらしい。
pc12.2ch.net/test/read.cgi/tech/1269438098/706 のように、ある一種のバブルソートの実装にこだわっているんです。

378 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:18:14 ]
>>376
Optimizing のところでは、長さを縮めていますが、そうでない実装も、やっぱり bubble sort でしょう?

379 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:21:35 ]
計算オーダーが同じでも明らかに効率悪い方に拘る意味が分からんw



380 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:24:12 ]
こだわっているんではなくて、計算効率がちょびっとよくなるか悪くなるかの差で、バブルソートとよんだりよばなかったりするのはおかしいといっているのです。
英語版 wiki にのっている実装もバブルソート、 >>375 のやりかたもバブルソートなんですよ。無論私のもバブルソート。

381 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:42:15 ]
ん、バブルソートですね






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

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

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