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


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

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



1 名前:デフォルトの名無しさん [2007/10/23(火) 23:48:35 ]
あなたが解けない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++の宿題を片付けます 97代目
pc11.2ch.net/test/read.cgi/tech/1191937213/

296 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:26:36 ]
>>294
出題者じゃないんだが。

typedef double (*func)(double);
これってなにやってるの?

297 名前:57 mailto:sage [2007/10/27(土) 01:29:04 ]
>>228
自分も詳しい理由は分かりませんが、この再帰の問題以前にも、リストで
色々な動作をする関数を作ったので、その関数を作る時、関数に引数を
渡したりするのに、リストの先頭にデータを入れない方が都合が
良いんじゃないですかね?
リストは先頭にデータを入れないとばかり思ってたので、よく分かりませんが。

298 名前:291 [2007/10/27(土) 01:30:26 ]
>>296
たとえばDLLを使うとき次のように書く 型の定義

typedef int (__stdcall *FNC)(const HWND , LPCSTR , LPSTR , const DWORD);

main(){
HINSTANCE hd = LoadLibrary("UNZIP32.DLL");
FNC p = (FNC)GetProcAddress(hd,"UnZip");
}

299 名前:デフォルトの名無しさん [2007/10/27(土) 01:30:41 ]
>>290
すいませんd=0.001となってるのが良く分からないんですが

300 名前:291 [2007/10/27(土) 01:31:39 ]
>>299 細かくした方が値が正確になるって事だけだ d=0.1でいい

301 名前:コッチェビン [2007/10/27(土) 01:32:28 ]
なんかすごいシコシコしたい・・・

302 名前:デフォルトの名無しさん [2007/10/27(土) 01:33:37 ]
>>300
どうもです

303 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:34:19 ]
>>298
つまりfuncという関数型ができたということ?
そうしたらIntegral(func funcName,...)
とすべきでは?
それと
#define F(a,b) (f(a)+f(b)+4*f((a+b)/2))*(b-a)/6
ここでfつかっちゃったらマクロFでは常に関数fが呼び出されることにならない?


304 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:35:47 ]
ちなみに追い詰めてるわけじゃないです。数値あわせがしたいだけです。
計算結果に自信がないので。



305 名前:291 [2007/10/27(土) 01:36:19 ]
>>303
呼び出すのはfでいいんだよ 引数でfとかgを指定するから

306 名前:291 [2007/10/27(土) 01:37:56 ]
>>304
単純な定積分の値と比較したから正解だろう >>290で求めている
あと>>290はgが間違えていて
正しくは
double g(double x){return 1/sqrt(1+x*x*x*x);}

307 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:38:07 ]
>そうしたらIntegral(func funcName,...)
スマソ。そうなってた。

308 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:40:16 ]
>>305

double Integral(func f,int a,int b, double d){
int n,N=(int)1/d;double s=0;
for(n=0;n<N;n++)s+=F(n*d,n*d+d);
return s;}

引数でfという関数を取っているのは確かなんだけど
関数内で一回も使ってない。

309 名前:291 [2007/10/27(土) 01:41:38 ]
>>308
Fがマクロだから使っている
あと使っていないのはaとbだ 勝手に(0,1)だとおもって書いてしまった

310 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:41:57 ]
>>308
マクロ展開してみればいい
でも名前が被っているのは気持ち悪いな

#include<stdio.h>

void a(void){printf("func a\n");}
void b(void){printf("func b\n");}
void c(void (*a)(void)){a();}

int main(void){
c(a);
c(b);
return 0;
}

311 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:43:31 ]
>>309
なるほどね。理解できました。
exp(-x*x)の関数名をfにしないでくれたらよかった。


312 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:53:03 ]
>>294
粘着すまん。
6じゃなくて3で割らないといけなくないか?
h=0.1で指定されているし。

313 名前:修正版 [2007/10/27(土) 02:00:49 ]
#include <stdio.h>
#include <math.h>

double exp_x2(double x){return exp(-x*x);}
double ichiwaru_root_1tasu_x4(double x){return 1/sqrt(1+x*x*x*x);}
#define F(a,b) (f((a))+f((b))+4*f(((a)+(b))/2))*((b)-(a))/6

typedef double (*func)(double);

double Integral(func f,double a,double b, double d){
int n,N;double s=0;
N=(int)(b-a)/d;
for(n=0;n<N;n++)
s+=F(a+n*d,a+(n+1)*d);
s+=F(N*d,b);return s;}

int main(){
double d=0.1;
printf("%f\n",Integral(exp_x2,0,1,d));
printf("%f\n",Integral(ichiwaru_root_1tasu_x4,0,1,d));}

314 名前:修正版 [2007/10/27(土) 02:03:09 ]
>>312
そもそも2hの幅で積分しろってことか それならそうだな



315 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:04:51 ]
うがあぁ数値が合わない。
何が違うんだ。。。。。

316 名前:修正版 [2007/10/27(土) 02:07:29 ]
>>312
でも最小の区間を与えた方が標準的だと思う
Integral(f, 0, 1, 0.2))と呼び出せば正解と一致する値が出るはずだ

317 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:11:03 ]
>>316
考えてみる。
正解はちなみにいくつなんだ
俺は
result=1.560123
result=1.988458

そっちは
1.493648
1.854075

他の検証方法ってある?Excelあたりでできるもんかね?

318 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:12:30 ]
あ。6->3にした値ね。

319 名前:修正版 [2007/10/27(土) 02:17:43 ]
正解は0.746825と0.927040じゃないか

単純な積分値とほぼ一致する
#include <stdio.h>
#include <math.h>

double f(double x){return exp(-x*x);}
double g(double x){return 1/sqrt(1+x*x*x*x);}

int main(){
double x,s,d=0.001;

s=0;for(x=0;x<1;x+=d)s+=d*f(x);
printf("%f\n",s);

s=0;for(x=0;x<1;x+=d)s+=d*g(x);
printf("%f\n",s);
}

320 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:25:04 ]
Excelで確認したところ俺もexp(-x*x)の単純な積分の値は
0.747508011
ぐらいになった。
では6で割るべきなのか。

321 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:28:04 ]
6->3にした結果

result=0.780061
result=0.994229
そちら
0.746825
0.927040

そっちの勝ちだ.orz
ノシ

322 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:28:58 ]
間違えた
3->6

323 名前:修正版 [2007/10/27(土) 02:31:52 ]
doiob.net/doiob/uploader/src/up11903.jpg
この式よく見てみろ
hを算出するときに既に2で割っている 分割数nに対して2nで割っているからややこしいだけ

324 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:34:34 ]
そういうことか・・・ややこしい。



325 名前:デフォルトの名無しさん [2007/10/27(土) 02:40:23 ]
便乗質問なんだけど
h=0.1で与えられてるから式の通りに3で割るんじゃないの?
の辺りがイマイチ理解できんので教えてくれ…

326 名前:修正版 [2007/10/27(土) 02:46:21 ]
>>325
問題どおりにやるとひとつひとつの積分区間は2hなので
6で割る部分と打ち消しあって3になる

幅hの積分を求めるのではなく x とx+hとx+2hの三点を2次関数で近似したいと言うことなんだろう
だから2h幅になっている

327 名前:修正版 [2007/10/27(土) 02:48:01 ]
>>325
原理、近似の方法はここに書いてある
ja.wikipedia.org/wiki/%E3%82%B7%E3%83%B3%E3%83%97%E3%82%BD%E3%83%B3%E3%81%AE%E5%85%AC%E5%BC%8F

328 名前:デフォルトの名無しさん [2007/10/27(土) 02:54:49 ]
ありがとうございます

329 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 03:05:21 ]
>>287
ふざけてないです。
おおマジです。

330 名前:デフォルトの名無しさん [2007/10/27(土) 03:57:35 ]
引用しますが、計算式を
#define F(a,b,h) (f(a)+f(b)+4*f((a+b)/2))*h/3
#define G(a,b,h) (g(a)+g(b)+4*g((a+b)/2))*h/3
というようにhを用いた式で表すなら 図のように
d=0.1
for(x=0;x<1;x+=d*2)
とすればいいのか

331 名前:修正版 [2007/10/27(土) 04:06:02 ]
>>330
#include <stdio.h>
#include <math.h>

double f(double x){return exp(-x*x);}
double g(double x){return 1/sqrt(1+x*x*x*x);}
#define F(x,h) (f(x) + 4*f(x+h) + f(x+2*h)) * h/3
#define G(x,h) (g(x) + 4*g(x+h) + g(x+2*h)) * h/3

int main(){
double x,sum,h=0.1;
sum=0;
for(x=0;x<1;x+=2*h)sum+=F(x,h);
printf("%f\n",sum);
sum=0;
for(x=0;x<1;x+=2*h)sum+=G(x,h);
printf("%f\n",sum);}

332 名前:デフォルトの名無しさん [2007/10/27(土) 04:12:10 ]
何か邪魔臭くなっていましたね さんくすこ

333 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 08:27:42 ]
まだやってたのか。俺は寝てしまって今起きた

#define F(x,h) (f(x) + 4*f(x+h) + f(x+2*h)) * h/3
#define G(x,h) (g(x) + 4*g(x+h) + g(x+2*h)) * h/3
じゃなくて
#define F(x,h) (f(x) + 4*f(x+h/2) + f(x+h)) * h/6
#define G(x,h) (g(x) + 4*g(x+h/2) + g(x+h)) * h/6
にするかもしくはh=0.05にしないといけない。

334 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 08:35:59 ]
すまん。寝ぼけて間違えた。
>>331でOK。



335 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 08:37:39 ]
やっと数値のずれが直ったので貼る
#include<stdio.h>
#include<math.h>

double quadInterpol( double (*fun)( double ), double begin, double h )
{
return ((*fun)( begin ) + 4.0*(*fun)( begin + h ) + (*fun)( begin + 2.0*h )) * h/3.0;
}

double integral( double (*fun)( double ), double begin, double end, double h )
{
double result = 0.0;
double pos = begin;
do
{
result += quadInterpol( (*fun), pos, h );
pos += 2.0*h;
} while( pos < end );
return result;
}

double f(double x) { return exp(-x*x); }
double g(double x) { return 1.0/sqrt(1 + x*x*x*x); }

int main(void)
{
const double diff = 0.1;
printf("result=%f\n",integral(f,0.0,1.0,diff));
printf("result=%f\n",integral(g,0.0,1.0,diff));
return 0;
}

336 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 08:55:22 ]
ひゃっほう。

337 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 10:08:16 ]
なんでシンプソン公式だけでこんなにスレ進むんだよw

338 名前:デフォルトの名無しさん [2007/10/27(土) 10:59:46 ]
[1] 授業単元: プログラミング
[2] 問題文:整数nをscanfで入力後"factorial"という関数を呼び出して、n!を
求めるプログラム(結果はmainにて表示)
(定義例:int factorial(int num))
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: ([2007年10月28日まで]
[5] その他の制限:定義例を使ってください
if,while,switch,forは習いました

お願いします

339 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:06:51 ]
#include <stdio.h>
int factorial(int num)
{
int i, ret = 1;
for(i=2; i<=num; i++) ret *= i;
return ret;
}

int main(void)
{
int n;

printf("nを入力:");
scanf("%d", &n);

printf("%dの階乗は%d\n", n, factorial(n));

return 0;
}

340 名前:デフォルトの名無しさん [2007/10/27(土) 11:17:19 ]
>>339
全くわかんなかったのに数分で解いてるよ(>_<)
ありがとうございました。

341 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:27:20 ]
て言うか既出ネタだろ
>>235-237

342 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:29:23 ]
階乗は頻出の基本問題だし、このスレで答えてる人なら数分とかじゃなくて、問題見た瞬間に即答だろ。

343 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:49:08 ]
テンプレレベルだよな・・・と思ったらwikiにも書いてないな
今から編集してくる

344 名前:デフォルトの名無しさん [2007/10/27(土) 11:51:23 ]
>>342さすがですね
勉強不足ですいません



345 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:09:39 ]
×勉強不足
○勉強する気がない

346 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:13:00 ]
LU分解とか死ねwwwwww
京大電電でつけど、プログラムの課題がイミフwwwwwwww

347 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:15:15 ]
それ、プログラム以前の問題だろ
Fランの大学ですらやる基本的な問題だし

348 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 13:38:28 ]
【質問テンプレ】
[1] 授業単元: 画像工学
[2] 問題文(含コード&リンク):ある特定の画像を自動的に判別する
フォルダ内の画像を自動的に判別し,緑の画像があればhighlightのフォルダに
なければotherのフォルダに分別する 
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) よくわかりません
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) Visual C++ 2005
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 来週水曜日まで
[5] その他の制限: 特にありません
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5159.zip

349 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 13:47:53 ]
>>347
池沼でサーセンwwwww

350 名前:デフォルトの名無しさん [2007/10/27(土) 14:08:07 ]
348
こんなの面倒 授業でていたやつのほうが関数にくわしいだろ

351 名前:デフォルトの名無しさん [2007/10/27(土) 15:52:58 ]
[1] 授業単元: C言語
[2] 問題文:2×2の行列A,Bの積(cのij成分=Σaのij成分bのij成分)を表示する

a[i][j]=[0 4] b[i][j]=[5 0]
[-5 -1] [0 -5]
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: ([2007年10月28日まで]
[5] その他の制限:for文を用いてください

352 名前:デフォルトの名無しさん [2007/10/27(土) 16:02:13 ]
#include <stdio.h>

main(){
int i,j,x=0,a[2][2]={0,4,-5,-1},b[2][2]={5,0,0,-5};
for(i=0;i<2;i++)for(j=0;j<2;j++)x+=a[i][j]*b[j][i];
printf("%d\n",x);
}

353 名前:デフォルトの名無しさん [2007/10/27(土) 16:12:53 ]
2次元配列のサイズを調べる方法ありますか?

354 名前:デフォルトの名無しさん [2007/10/27(土) 16:16:09 ]
#include <stdio.h>

main(){
int x[70][6],m,n;
m=sizeof(x)/sizeof(x[0]);
n=sizeof(x[0])/sizeof(x[0][0]);
printf("%d %d",m,n);
}



355 名前:デフォルトの名無しさん [2007/10/27(土) 16:27:45 ]
#include <stdio.h>

main(){
int i,j,k;
int a[2][2]={0,4,-5,-1},b[2][2]={5,0,0,-5},c[2][2];
for(i=0;i<2;i++)
for(j=0;j<2;j++)
for(k=0;k<2;k++)
c[i][j]=a[i][k]*b[k][j];

for(i=0;i<2;i++){
for(j=0;j<2;j++)printf("%d ",c[i][j]);
printf("\n");}
}

356 名前:デフォルトの名無しさん [2007/10/27(土) 16:34:11 ]
[1] 授業単元: C言語
[2] 問題文:キーボードから5点の座標を二次元配列に入力し、
原点から最も離れた点の座標を出力するプログラムを作成せよ
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: ([2007年10月28日まで]
[5] その他の制限:多次元配列まで習ってます


357 名前:147 mailto:sage [2007/10/27(土) 16:35:47 ]
機械に仕事を割り当てるところまでやった

すなわち、問題文の
>5種類の性能の異なる加工機械が各1台ある工場で、100種類の製品を作っている。
>各製品がその日に受注した場合、LT(完成までにかかる日数)を表示するスケジューリングプログラムを作成せよ。
>また、ランダムに発注があり、発注があった場合にのみ実際に機械は使用される。
>すなわち、発注が一度もなければ100日間ずっと同じLTが表示され、発注があれば、
>その日以降は機械が使用されているので、LTが長くなる可能性があるということ。
ところまで。

// 生産計画・生産管理
// 97th-res: >>168 (>>111, >>211, >>229)
// 2007/10/27

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5160.txt

358 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 16:46:34 ]
>>356
#include<stdio.h>
#include<math.h>

int main(void)
{
double maximum_distance=0.0, distance;
double x, y, point[5][2], (*maximum_point)[2];
int i;

for(i=0;i<5;i++)
{
printf("Input x :");
scanf("%lf", &x);
printf("Input y :");
scanf("%lf", &y);
point[i][0]=x;
point[i][1]=y;

distance=sqrt(x*x+y*y);
if(distance>maximum_distance || !i)
{
maximum_distance=distance;
maximum_point=&point[i];
}
}
printf("\n( %lf , %lf )\n", (*maximum_point)[0], (*maximum_point)[1]);

return 0;
}

359 名前:入力うまくいかない [2007/10/27(土) 16:48:36 ]
#include <stdio.h>

main(){
int x[6],y[6],i,ban;
double max=0,d;
for(i=1;i<6;i++){
printf("\n%d 番目のx座標を入力して下さい ",i);
x[i]=getchar();
printf("\n%d 番目のy座標を入力して下さい ",i);
y[i]=getchar();}

for(i=1;i<6;i++){
d=x[i]*x[i]+y[i]*y[i];
if(d>max){max=d;ban=i;}}
printf("原点からもっとも遠い座標は(%d,%d)です ",x[ban],y[ban]);
}

360 名前:scanfにしたら良くなったよ [2007/10/27(土) 16:54:18 ]
#include <stdio.h>
main(){
int x[6],y[6],i,ban;
double max=0,d;
for(i=1;i<6;i++){
printf("\n%d 番目のx座標を入力して下さい ",i);
scanf("%d",&x[i]);
printf("\n%d 番目のy座標を入力して下さい ",i);
scanf("%d",&y[i]);}

for(i=1;i<6;i++){
d=x[i]*x[i]+y[i]*y[i];
if(d>max){max=d;ban=i;}}
printf("\n原点からもっとも遠い座標は(%d,%d)です ",x[ban],y[ban]);}

361 名前:356 [2007/10/27(土) 16:54:35 ]
>>358さん
>>359さん
早い回答ありがとうございました!

362 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:00:45 ]
// >>356 ソート付き
#include <iostream>
#include <math.h>
#define NUM 5
using namespace std;

int main (void){
double p[NUM][2], absolute[NUM];

for (int i=0; i<NUM; i++){
cout << i+1 << "番目の点の" << endl;
cout << "\tx座標を入力してください : "; cin >> p[i][0];
cout << "\ty座標を入力してください : "; cin >> p[i][1];
}

for (int i=0; i<NUM; i++) absolute[i] = sqrt(p[i][0] * p[i][0] + p[i][1] * p[i][1]);

double tempabs, tempx, tempy;
for (int i=0; i<NUM-1; i++) {
for (int j=NUM-1; j>i; j--) {
if (absolute[j-1] > absolute[j]) {
tempabs = absolute[j]; tempx = p[j][0]; tempy = p[j][1];
absolute[j] = absolute[j-1]; p[j][0] = p[j-1][0]; p[j][1] = p[j-1][1];
absolute[j-1] = tempabs; p[j-1][0] = tempx;
p[j-1][1] = tempy;
}}}

cout << "(" << p[NUM-1][0] << ", " << p[NUM-1][1] << ")" << endl;
return (0);
}


363 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:05:37 ]
>>356
既に何人も回答してるけど参考までに
#include <stdio.h>
int main(int argc, char* argv[])
{
int i, p[5][2], r2[5], r2max = 0;

printf("input points\n");
for(i=0;i<5;i++) {
printf("point[%d] : ", i);
scanf("%d %d", p[i], p[i]+1);
r2[i] = p[i][0] * p[i][0] + p[i][1] * p[i][1];
if(r2max < r2[i]) {
r2max = r2[i];
}
}
printf("maximum range points\n");
for(i=0;i<5;i++)
if(r2[i] == r2max)
printf("point[%d] : %d %d\n", i, p[i][0], p[i][1]);
return 0;
}

364 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:29:58 ]
すいません!このJAVAコードをCに直せって言われました!
直してください!!!!
public static int[] invoke(int[] input){
//WARNING: This will destroy the contents of the input array
//This function assumes input.length=2^n, n>1
int[] output = new int[input.length];

for(int length = input.length >> 1; ; length >>= 1){
//length=2^n, WITH DECREASING n
for(int i = 0; i < length; i++) {
int sum = input[i*2]+input[i*2+1];
int difference = input[i*2]-input[i*2+1];
output[i] = sum;
output[length+i] = difference;
}
if (length == 1)
return output;

//Swap arrays to do next iteration
System.arraycopy(output, 0, input, 0, length<<1);
}
}




365 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:03:32 ]
>>364
>>1読んでから書き直し

366 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:07:30 ]
>>365
つまりテンプレ通りに書けってこった
とりあえずこのコードが何をするかぐらいは書いたほうがいい

367 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:20:27 ]
>>357
根本的に考え方が間違ってるよ。
これは生産計画立案の問題。

368 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:20:53 ]
(int[] input)これをcで引数一個で実現するのは無理では?
最後尾にNULL入れた配列が欲しくなったり、
サイズを持った構造体へのポインタにしたくなったり、
int *input, int sizeみたいに素直になりたかったり。

369 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:37:29 ]
突っ込むところはinput.lengthこっちだろ

370 名前:aho mailto:sage [2007/10/27(土) 19:02:35 ]
>>364
今書いてて思ったけど何がしたいのかいまいち分からない。
sumとdifferenceを計算した後何でoutputを上書きするの?
どんどん足し込む仕様じゃないの?
とりあえず、今ので書いてみるよーん

371 名前:aho mailto:sage [2007/10/27(土) 19:08:59 ]
どうもごめんちゃーい。
最後の行のarrayCopyみてませんでした。


372 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:09:34 ]
>>370
ものすごい助かります(;;

離散ウェーブレット変換
ttp://ja.wikipedia.org/wiki/%E9%9B%A2%E6%95%A3%E3%82%A6%E3%82%A7%E3%83%BC%E3%83%96%E3%83%AC%E3%83%83%E3%83%88%E5%A4%89%E6%8F%9B
のHaarWavletというものです。


373 名前:aho mailto:sage [2007/10/27(土) 19:24:07 ]
/*
メモリの確保は呼び出し元で行う。
この関数内でメモリを確保して配列を返すと、メモリの解放ができない。
\param input 入力配列
\param output 出力配列
\param size 入力配列の大きさ
*/
void invoke(int* input, int* output, int size){
// 1/2
for(int length = size >> 1; ; length >>= 1){
for(int i=0; i<length; i++){
int sum = input[i*2] + input[i*2 + 1];
int difference = input[i*2] - input[i*2+1];
output[i] = sum;
output[length+i] = difference;
}
if(length == 1)
return;
//array copy
for(int i=0; i<length<<1; i++){
output[i] = input[i];
}
}
}
一応作ってみた。
確認お願い!

374 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 21:27:54 ]
>>373
ああ…ありがたい
今確認します!!!どうもありがとう!!!!涙出てきた



375 名前:デフォルトの名無しさん [2007/10/27(土) 22:51:52 ]
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5163.txt
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語: C言語
[4] 期限: 10月28日午前12時30分まで
よろしくおねがいします

376 名前:aho mailto:sage [2007/10/27(土) 23:01:10 ]
課題1
int sqr(int x){
return x * x;
}

int pow4(int x){
return sqr(x) * sqr(x);
}


377 名前:デフォルトの名無しさん [2007/10/27(土) 23:01:24 ]
>>375 最後のだけやってもいいよ 任意サイズでやってやるぜ

378 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:01:32 ]
関数sqrってなんだ?sqrtの間違い?
でもなんで四乗値求めるのに平方根必要?

379 名前:aho mailto:sage [2007/10/27(土) 23:02:37 ]
課題2
void hello(void){
printf("こんにちは。\n");

return;
}


380 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:02:42 ]
squareって事ね。

381 名前:デフォルトの名無しさん [2007/10/27(土) 23:12:34 ]
任意サイズの2次配列を引数にするにはどうすればいい?

382 名前:aho mailto:sage [2007/10/27(土) 23:14:56 ]
課題3
void rev_intary(int vc[], int no){
int i;
int* tmp = (int*)malloc(sizeof(int) * no);
/* noをコピーしておく */
for(i=0; i<no; i++)
tmp[i] = vc[i];
for(i=0; i<no; i++)
vc[i] = tmp[no-1-i];
free(tmp);

return;
}

stdlib.hをインクルードするように!

383 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:15:02 ]
配列のポインタかポインタのポインタを使う

384 名前:デフォルトの名無しさん [2007/10/27(土) 23:20:08 ]
>>383
サイズをどうやって保存するの?



385 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:22:02 ]
パンチで

386 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:22:17 ]
保存はできない。引数でサイズ指定するしかない。

387 名前:168 [2007/10/28(日) 00:20:59 ]
>>357
ありがとうございます。
続きはやっていただけませんか?

388 名前:デフォルトの名無しさん [2007/10/28(日) 00:21:53 ]
これうまくいかないけどなぜでしょうか?サイズがちゃんと求まりません

#include <iostream>
#include <vector>
using namespace std;

void sizehyoji(vector< vector<int> > x){
int m,n;
m=sizeof(x)/sizeof(x[0]);
n=sizeof(x[0])/sizeof(x[0][0]);
printf("%d %d",m,n);}

main(){
int i,j,M=200,N=100;
vector< vector<int> > x;
x.resize(M);
for(i=0;i<M;i++)x[i].resize(N);
for(i=0;i<M;i++)for(j=0;j<N;j++)x[i][j]=0;
sizehyoji(x);}

389 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:24:21 ]
>>388
vectorはsize()を使え

390 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:26:59 ]
>>375
課題3
void rev_intary(int vc[], int no)
{
int temp, i, n = no / 2;

for(i=0; i<n; i++) {
temp = vc[i];
vc[i] = vc[no-1-i];
vc[no-1-i] = temp;
}
}

391 名前:デフォルトの名無しさん [2007/10/28(日) 00:27:20 ]
>>389
できました vectorでやればサイズ渡せますね

#include <iostream>
#include <vector>
using namespace std;

void sizehyoji(vector< vector<int> > x){
printf("%d %d",x.size(),x[0].size());}

main(){
int i,j,M=200,N=100;
vector< vector<int> > x;
x.resize(M);
for(i=0;i<M;i++)x[i].resize(N);
sizehyoji(x);}

392 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:32:19 ]
>>375
課題4
void mul(const int ma[2][3], const int mb[3][2], int mc[2][2])
{
int i, j, k;

for(i=0; i<2; i++) {
for(j=0; j<2; j++) {
for(k=0; k<3; k++) mc[i][j] += ma[i][k] * mb[k][j];
}
}
}


393 名前:デフォルトの名無しさん [2007/10/28(日) 01:01:51 ]
任意サイズのやつやろうとしたけど面倒になった あとでやるかもしれない 書き込んでおく
 
#include <iostream>
#include <vector>
using namespace std;

class Gyouretu {
vector< vector<int> > x;
public:

Gyouretu(){Gyouretu(1,1);}
Gyouretu(int M,int N){int i,j;x.resize(M);for(i=0;i<M;i++)x[i].resize(N);
for(i=0;i<M;i++)for(j=0;j<N;j++)x[i][j]=0;}
resize(int M,int N){Gyouretu(M,N);}

Gyouretu& Gyouretu::operator=(Gyouretu& y){
if(&x!=this){} return *this;}

};


main(){
Gyouretu x;
x.resize(6,5);}

394 名前:デフォルトの名無しさん [2007/10/28(日) 04:31:04 ]
全ディレクトリのファイルでサイズが一致するものをプルパスで出力せよ



395 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 04:38:32 ]
プルパスについてkwsk

396 名前:デフォルトの名無しさん [2007/10/28(日) 04:42:58 ]
植田佳奈 さんってこんな人だったの・・・?
相手の人、可哀想;;

www.nicovideo.jp/watch/sm1282003
25分14秒付近より

●植田佳奈、最近人生を丸投げしたくなることは?というフリに、「こないだー、悪口を絶賛喋ってた
ら、後ろに本人いて(笑)あんなことほんとにあるんだ!って思って、超びっくりしちゃった(笑)
実名って言うかその人しかあり得ないような悪口をバンバン言ってたの。そしたら、”そんな風に思っ
てたんだ、ごめんね”って逆に謝られちゃって…(笑)」






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

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

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