1 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:40:55 ] あなたが解けない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++の宿題を片付けます 109代目 pc11.2ch.net/test/read.cgi/tech/1212895856/
312 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 19:44:01 ] >>310 #include <stdio.h> int main(void) { unsigned int n, i = 1 << sizeof(unsigned int) * 8 - 1; scanf("%d", &n); while((i&n)==0) i>>=1; while(i) { putchar(n & i ? '1' : '0'); i >>= 1; } return 0; }
313 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 19:47:01 ] >>281 >>287 >>292 >>293 >>308
314 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 19:48:07 ] >>275 >>277 >>280
315 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 19:55:11 ] >>288 func(t, x, f) /*f(t, x)を定義*/ double t, x[], f[];{ f[0] = x[1]; f[1] = - (G/L0)*sin(x[0]); } を使わず func(t,x,f,h)double t,x[],f[],h;{ f[0]=x[1]*h;f[1]=-(G/L0)*sin(x[0])*h; } として for ( n = 0; n < n_step; n++ ) { t[n+1] = T_s + (n+1)*h; func(t[n], x[n], dfk1,h); /*dfk1=h* f(t[n], x[n])*/ for( i = 0;i < N_var; i++){ y[i] = x[n][i] + dfk1[i]; /*y[i]:中間変数Xn*/ } func(t[n+1], y, dfk2,h); /*dfk2=h*f(t[n+1], y)=h*f(t[n+1], Xn)*/ for( i = 0; i < N_var; i++){ x[n+1][i] = x[n][i] + (dfk1[i] +dfk2[i])/2; /*x[n+1] = x[n] + (fk1 + fk2)/2*/ } }
316 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:09:00 ] >>310 #include <stdio.h> void f1(int x) { int y=x/2; if(y!=0) f1(y); printf("%d",x%2); } void f2(double x) { int y; double z=x*2.0; y=(int)z; z=z-(double)y; printf("%d",y); if(z!=0.0) f2(z); } int main(void) { int i; double r; scanf("%lf",&r); i=(int)r; r=r-(double)i; f1(i); putchar('.'); f2(r); return 0; }
317 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:14:52 ] >>103 微妙ですがありがとうございます
318 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:15:55 ] 何様だw
319 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:19:35 ] ワロタ
320 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:21:17 ] >>263 >>247 に不要なゴミコードが残ってた・・・気づいたら消しておいて。 > printf("p : %p \n",p); データ追加、コピーの辺り。あと、一番最後に free(list); を忘れてた。 >>264 に説明があるけど、コードの中では struct p_dataの構造をDATA型として、struct node_listの構造をLIST型 として定義し、変数の宣言のときに、わざわざ struct p_data と書かずに DATA以下適当に変数を宣言できるようになってる。
321 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:21:32 ] >微妙ですがありがとうございます 微妙ですが 微妙ですが 微妙ですが 微妙ですが 微妙ですが 微妙ですが 微妙ですが
322 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:23:08 ] >>103 > 俺のプレイ > もうこれ以上は減らせないw そうかそうか、何回も何回もやりまくってやりまくってぇ〜
323 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:24:12 ] >>312 >>316 ありがとうございます >>演算子(?)は初見なんでぐぐってきます
324 名前:hoge ◆ZdPTx91qxk mailto:sage [2008/06/22(日) 20:36:18 ] >>312 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7013.txt まぁもう回答でてるっぽいけどな
325 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:39:45 ] ありがとうございます!!!! 微妙ですが
326 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:41:11 ] 微妙ですが が、今後のスタンダードかなるほど
327 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:41:39 ] このスレで笑ったのは初めてかもしれない
328 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:49:02 ] >>317 最近の人間はプログラムの意識が高いんだな… 構造体習って無いから使うな、簡単なコードで、人間と同等以上のAIプログラムを作れって… と、作った本人が言って見るテスト キミの周りの学生が、余裕でその課題をこなしてるなら キミは今居る場所に居つづける事を考え直した方が良いかもよw
329 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:51:48 ] 揚げ足取りがミイラ取りになってる件
330 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:57:17 ] 微妙ですが私も揚げ足取りになってしまうかもしれません ><;
331 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:05:18 ] [1] 授業単元: Cプログラミング実習 [2] 問題文(含コード&リンク)-------------------- int型の数値データの内部表現を2進数で表示する。 実行に当たっては次のデータを入力して確認せよ。 [1]0 [2]1 [3]-1 [4]32767 [5]-32768 実行例↓ 入力データ:-1 内部表現:1111111111111111 入力データ:32767 内部表現:0111111111111111 ----------------------------------------------- [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: (visual studio 2005 ) [3.3] 言語: (C言語) [4] 期限:25日まで [5] その他の制限: (まだ大してC言語は習ってないので簡単な関数でお願いします)
332 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:11:35 ] >>331 なんか、前スレにマイナスにも対応しているものがあった・・・ ちと探してくる
333 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:14:37 ] >>332 わざわざすいません<(_ _*)>
334 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:20:35 ] >>331 int型は16bitでいいの?
335 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:25:17 ] >>331 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7014.c
336 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:29:04 ] >>331 #include <stdlib.h> #include <stdio.h> void main(int argc,char* argv[]) { int _in = atoi(argv[1]); int i; for(i = 0;i < 32;i++) { printf("%d",(_in & (0x80000000>>i) )?1:0); } printf("\n"); } 数値は引数で入力、エラーチェックはしてない
337 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:33:54 ] >>331 #include<stdio.h> int main( void ){ int i,n; printf("入力データ:"); scanf("%d",&n); printf(" 内部表現:"); for(i=0;i<16;++i){ if(n & 1<<15-i) printf("1"); else printf("0"); } return 0; }
338 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:34:00 ] 微妙だな
339 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:40:10 ] いや、絶妙だ
340 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:42:20 ] >>334 VS2005でWinが対象だから32bitじゃない?
341 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:42:51 ] 絶妙ですがありがとうございます
342 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:45:06 ] まっ、待ってたもう、麻呂の16進数まで対応したクソースを拝むでおじゃるよ もう少し待ってたもう
343 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:51:37 ] >>340 実行例が16桁だから…
344 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:52:05 ] int i,n; int bit=sizeof(int)*8; //nをキーボードから入力 for(i=bit-1; i>=0; i--) printf("%d", n>>i&1);
345 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:52:46 ] >>343 それは確かに気になった…。
346 名前:331 mailto:sage [2008/06/22(日) 22:02:29 ] テキストの問題なんですけど、何ビットとか書いてないんですよ・・・ 多分16ビットでOKだと思います。
347 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:03:37 ] Winでint型だと普通は32bitだけどね
348 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:07:13 ] 普通にsizeof演算子使えよ でも1byteが9bitの環境もあるって聞いたことあるな
349 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:11:32 ] テキストってことは16bit時代の参考書をそのまま使ってるんじゃね? あくまで「int型」の内部表現を出力するんであれば32bitが正解だろうなぁ
350 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:12:10 ] せっかくがんばったのでうpっときます。 >>179 C++だけど参考にでもしてください。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7016.cpp
351 名前:350 mailto:sage [2008/06/22(日) 22:14:09 ] 一番最後のcoutではCtrl+Gだったけど、ダメみたいね・・・
352 名前:350 mailto:sage [2008/06/22(日) 22:15:29 ] あら、コピったら生きてた さばら
353 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:15:42 ] DWORD WORD BYTE表現でいいだろ
354 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:22:32 ] >>301 nが小さいときだけおk #include<iostream> #include<algorithm> #include<cmath> struct point_t{ double x, y; }; double calc_distance(const point_t &a, const point_t &b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); } int main(void){ const int n=1000; // これが小さいときだけ double *distance=new double[n*(n-1)]; point_t *point=new point_t[n]; long i, j, x=0; for(i=0;i<n;i++){ point[i].x=rand(); point[i].y=rand(); } for(i=0;i<n;i++){ for(j=i+1;j<n;j++){ distance[x++]=calc_distance(point[i], point[j]); } } std::sort(&distance[0], &distance[x]); for(i=0;i<x;i++){ std::cout << distance[i] << std::endl; } return 0; }
355 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:22:44 ] 16進数表示ならこんな漢字かな 実行して無いからわからんが for(i=bit-4; i>=0; i-=4) printf("%c", "0123456789abcdef"[n>>i&15]);
356 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:25:32 ] >>331 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7017.c まっ、麻呂の、麻呂のクソースを見てたもうぅ〜〜 10進数の数値を2〜16進数まで変換できるでおじゃる
357 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:28:53 ] >>350 ちょ、俺のコンパイラ(BCC5..9.3)だと direction++;で エラー E2277 chess1.cpp 362: 左辺値が必要 (関数 CAnalyzeTourOfKnight::AnalyzeTourOfKnight(ANALYZETYPE) )
358 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:29:23 ] 微妙だな
359 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:33:05 ] クソースとしては絶妙でおじゃ
360 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:33:11 ] まあ出題者がgcc指定してるからgccで通ればよいのか
361 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:37:44 ] >>357 >>360 いや 俺もbccなんだけど そこで落ちる理由はわからん・・・?? 俺の環境じゃ落ちないぞ?
362 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:39:20 ] それは奇妙だな
363 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:42:57 ] C:\Documents and Settings\knight>bcc32 TourOfKnight Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland TourOfKnight.cpp: 警告 W8004 TourOfKnight.cpp 134: 'tempY' に代入した値は使われていない(関数 CAnal yzeTourOfKnight::MoveKnightPosition(int &,int &,DIRECTION) ) 警告 W8004 TourOfKnight.cpp 134: 'tempX' に代入した値は使われていない(関数 CAnal yzeTourOfKnight::MoveKnightPosition(int &,int &,DIRECTION) ) 警告 W8004 TourOfKnight.cpp 309: 'y' に代入した値は使われていない(関数 CAnalyzeT ourOfKnight::KinghtRoundBoard(int,int) ) 警告 W8004 TourOfKnight.cpp 453: 'comparisonNum' に代入した値は使われていない(関 数 main() ) 警告 W8004 TourOfKnight.cpp 452: 'answerNum' に代入した値は使われていない(関数 m ain() ) Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland これだけ
364 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:44:11 ] >>361 BCC(今はCodeGearCCだからCCCか)のバージョンは同じ? 5.9.3ってBCB2007の付属品だよ。 フリーで配布されているのは5.5.1。
365 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:44:39 ] >>364 5.5.1
366 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:46:08 ] enum値のインクリメントは許されないのか・・・・
367 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:46:42 ] ちなみにVC9のエラーログ c:\documents and settings\********\my documents\visual studio 2008 \projects\learn1\chess1\chess1.cpp(367) : error C2676: 二項演算子 '++' : 'CAnalyzeTourOfKnight::DIRECTION' は、この演算子または定義済の演算子に 適切な型への変換の定義を行いません。(新しい動作; ヘルプを参照)
368 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:51:13 ] >direction++;で >エラー E2277 chess1.cpp 362: ファイル名を chess1.cにするか direction = direction + 1; にしたらいいんでない?
369 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:51:49 ] >>366 そのままではできないが、演算子多重定義すればできる。
370 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:52:59 ] >>368 ああそうか。てっきり>>350 で >C++だけど参考にでもしてください。 と書いてあったからcppしてたわ。 <time>も通らないので<ctime>にしてたしおかしいわと 思ってたんだ
371 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:53:35 ] direction = static_cast<Month>(direction+1); でどうだ!!? ということでごめんなさい。
372 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:55:04 ] >>370 いやcppだけどね。 timeは通ってるけど たしかにctimeだわな('A`) スマソ
373 名前:350 mailto:sage [2008/06/22(日) 22:56:14 ] 俺のレス >>361 >>363 >>365 >>366 >>371 >>372
374 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:56:27 ] 要するにC++モードでもenumに++演算子を適用できる コンパイラと弾くコンパイラがあるわけだ 規格書ではどうなってるのかな
375 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:57:09 ] ウォッチでは通るのに
376 名前:350 mailto:sage [2008/06/22(日) 23:01:35 ] まあ普通に考えたら enum{ A=1, B=10, C=100, D=1000 }; とかがあることもあるわけだから、やっぱり++は許されないのかな
377 名前:179 mailto:sage [2008/06/22(日) 23:23:16 ] >>350 返事遅れてごめんなさい・・・ 自分C++全く知らないのですが、やっていただいたことに関しては 本当に感謝してます! 聞いてばかりで申し訳ないのですが、 このソースをCに書き換えるにはどのようにすればよいのでしょうか? ちなみに調べてみたんですが5x5は解の個数が304個みたいです。
378 名前:デフォルトの名無しさん [2008/06/23(月) 00:21:32 ] 全部関数にしたらどう?
379 名前:350 mailto:sage [2008/06/23(月) 00:22:56 ] >>377 304>< 感動>< 変数がめんどくさいかも・・・ 全部staticでいいならいいけど・・・
380 名前:デフォルトの名無しさん [2008/06/23(月) 00:26:52 ] Cってことはfor内での変数宣言とかも直さなきゃならんか
381 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:37:11 ] ttp://www.kameda-lab.org/lecture/2008-tsukuba-algorithm/report4-j.html
382 名前: ◆15lIZBDwz6 mailto:sage [2008/06/23(月) 00:37:22 ] [1] 授業単元:プログラミングU [2] 問題文(含コード&リンク): 5 つの文字列を格納できる二次元配列 str を定義し,キーボードから5つの文字列を入力する. その後,配列 str と文字列数 num (この例では,5)を引数として受け取り, 最長の文字列が格納されている配列の添え字(行の要素番号) を返す関数 int str_maxlen(const char str[][100], int num)を定義し,動作を確認するプログラムを作成せよ. 但し,同じ長さの文字列が存在する場合は,最初に現れる文字列を優先すること. また,文字列長はライブラリ関数は利用せずに求めること。 main関数内で,str_maxlen 関数の返却値を元に文字列を出力することで,動作確認すること. [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: bcc [3.3] 言語: C [4] 期限:2008年6月24日 [5] その他の制限: 習った範囲は文字列まで。その他の制限は問題文参照 自分で解いていたらこの問題だけ上手くいかないのでお願いします
383 名前:350 mailto:sage [2008/06/23(月) 00:38:42 ] >>377 書き換えてみた。 static変数使いまくりでひどいけど ちなみに100行目に入れる値を変えればいろいろ変化します。 Bには非対応ですね。 自分で盤を初期化すれば多分できるのかな・・・
384 名前:350 mailto:sage [2008/06/23(月) 00:39:13 ] >>383 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7018.c 大事なもん貼り忘れた
385 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:55:26 ] >>382 #include <stdio.h> int str_maxlen(char str[][100], int num) { int i, j, max = 0, max_index = 0; for(i=0; i<num; i++) { for(j=0; str[i][j]; j++); if(max < j) max = j, max_index = i; } return max_index; } int main(void) { char str[5][100]; int i; for(i=0; i<5; i++) scanf("%s", str[i]); printf("最長の文字列は%s", str[str_maxlen(str, 5)]); return 0; }
386 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:56:09 ] >>382 #include<stdio.h> str_maxlen(const char str[][100], int num); int main( void ) { char str[ 5 ][ 100 ]; int i = 0; int length = 0; for( i = 0; i < 5; i++ ){ gets( str[ i ] ); } length = str_maxlen( str, i ); printf( "%d", length); return( 0 ); } int str_maxlen(const char str[][100], int num) { int maxlen=0; int i = 0, k = 0; for( i = 0; i < num; i++ ){ for( k = 0; str[ i ][ k ] != '\0'; k++ ){} if( k > maxlen ){ maxlen = k; } } return( maxlen ); }
387 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:57:38 ] 今だっ!おまいらうpロダ(ry
388 名前:386 mailto:sage [2008/06/23(月) 00:59:01 ] >main関数内で,str_maxlen 関数の返却値を元に文字列を出力することで,動作確認すること. これやってないわ スマソ
389 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:00:51 ] 返すのは長さじゃなくて添え字
390 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:02:19 ] >>389 まぁ結局は添え字だが、 返すべきはkじゃなくてiだわな
391 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:05:41 ] >まぁ結局は添え字だが、 何を言ってるんだ?
392 名前:377 mailto:sage [2008/06/23(月) 01:07:21 ] >>383 、>>384 書き換えまでやってくださったとは・・・! 本当何から何まですみません。 ありがとうございます!(>_<)
393 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:14:32 ] >>350 コンパイルは通ったけど、解が見つからなかったので報告。 // direction++; direction = static_cast<DIRECTION>(direction+1); /* switch(direction){ case NOTYET:direction = START; break; case START: direction = RU; break; case RU: direction = RD; break; case RD: direction = DR; break; case DR: direction = DL; break; case DL: direction = LD; break; case LD: direction = LU; break; case LU: direction = UL; break; case UL: direction = UR; break; case UR: direction = END; break; case END: direction = NOTYET; break; } */
394 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:17:27 ] 6x6の盤でナイトの旅を始めます。 解析中... 正しく解析できました。 1 30 27 18 3 10 26 17 2 11 28 19 31 36 29 20 9 4 16 25 8 35 12 21 7 32 23 14 5 34 24 15 6 33 22 13 評価回数は59079349回です。 要した時間は0.028秒です。
395 名前:393 mailto:sage [2008/06/23(月) 01:21:25 ] //盤面のサイズ。 #define SIZE 5 です。遅れました Express 2005 + SDK
396 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:24:45 ] 以下のようなプログラミングはどのようにすればよいのでしょうか? 「組み合わせ」を求める数学の公式にコンビネーションがあります。このコンビネーションのプログラミングを教えてください! 1.nとrをscanf()で読み、nCrの値を計算して表示させます。 条件として、nとrの値はマイナスでなく、またゼロでなく、さらにここではn<=10であることを確認させて、正しい数値を入力させる。もし誤った数値を入力したら「入力ミスです」と表示させる。 2.0!=1も扱えるようにすることを忘れない。
397 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:25:06 ] 統計計算のプログラミングの例を教えてください。 最大20個までの実数値をscanf()で、配列に読み、呼んだデータの、平均値、分散、最大値、最小値を計算して表示するプログラムを教えてください! 条件として、データは-999.0から999.0の範囲とし、入力終了の合図として1000.0より大きい値のデータを入力すると、その数値は入力されずに入力作業を終了する。 平均値と分散については、 データ数をn、各データをXi(i=1〜n)とすると、(ΣXi)/n (データの個数で割ったもの)が平均値 (Σ(Xi-(データの相加平均))^2)/nが分散であるとする。 よろしくお願いします!!
398 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:26:18 ] 5x5の盤でナイトの旅を始めます。 解析中... 解析できませんでした。 評価回数は15615711回です。 要した時間は0.07秒です。
399 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:26:43 ] >>391 maxlen=k; return maxlen; はどう見ても添え字を返してるだろ
400 名前:350 mailto:sage [2008/06/23(月) 01:30:24 ] >>395 マスの数が奇数の場合、周遊は解なし >>398 お前のPCのスペックが知りたいわw
401 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:32:32 ] >>396 つ パスカルの三角形 >>397 探せば見つかるようなありきたりの課題じゃ〜・・・
402 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:33:46 ] >>397 #include <stdio.h> int main(void){ double value, sum=0, sum2=0, average, variance, maximum=0, minimum=0; int n; for(n=0;n<20;n++){ if(scanf("%lf", &value)!=1) break; if(value>=1000.0) break; sum+=value; sum2+=value*value; if(n==0 || maximum<value) maximum=value; if(n==0 || minimum>value) minimum=value; } if(n==0) return 1; average=sum/n; variance=(sum2-sum*average)/n; printf("平均値 %f\n分散 %f\n最大値 %f\n最小値 %f\n", average, variance, maximum, minimum); return 0; }
403 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:34:44 ] >>399 アホか 添え字って言っても >最長の文字列が格納されている配列の添え字(行の要素番号) だぞ。 kは文字列の長さにしかなんねーよ
404 名前: ◆15lIZBDwz6 mailto:sage [2008/06/23(月) 01:35:35 ] >>385-386 ありがとうございます。 それにしても…早いw 次の問題解き終わってきてみたら20分後にはもうできてるし…
405 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:39:37 ] >>399 >>390
406 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:39:47 ] >>396 > 2.0!=1も扱えるようにすることを忘れない。 階乗を求めるやり方か・・・
407 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:49:24 ] >>396 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7019.c
408 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:50:59 ] >>394 最近のコンピュータははやいな!
409 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 02:01:50 ] >>396 あ〜、入力エラーの表示は適当に追加しておいて。 あと、nもrも0のときでも考慮されてる。 0個の中から9個のものを選ぶという事象も1つの事柄として扱っているし n個の中から0個のものを選ぶ、すなわち何も選ばないということも 1通りの事象として扱われているから。
410 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 02:02:27 ] ×0個の中から9個のものを選ぶという ○0個の中から0個のものを選ぶという
411 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 02:04:32 ] >>397 #include <stdio.h> #include <math.h> int main(void) { double d[20], max = -1000.0, min = 1000.0, ave = 0, var = 0; int i, n; for(i=0; i<20; i++) { scanf("%lf", d + i); if(fabs(d[i]) > 999.0) break; if(max < d[i]) max = d[i]; if(min > d[i]) min = d[i]; ave += d[i]; var += d[i] * d[i]; } if(!i) return 0; ave /= i; var = var / i - ave * ave; printf("最大値%f\n最小値%f\n平均%f\n分散%f\n", max, min, ave, var); return 0; }
412 名前:395 mailto:sage [2008/06/23(月) 02:48:26 ] >>400 有り難う御座います、見逃していました。 >ちなみに100行目に入れる値を変えればいろいろ変化します。 所で、よく見るとCのほう(float)キャストが無いので、経過時間が0.000秒でした。