1 名前:デフォルトの名無しさん [2010/01/18(月) 23:25:55 BE:265079647-S★(508111)] あなたが解けない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++の宿題片付けます 133代目 pc12.2ch.net/test/read.cgi/tech/1260532772/
513 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 01:34:32 ] >>508 単純な台形則による定積分で、関数F(X)のXY座標を、X座標の小さい順に V[][0], v[][1] に入力と解釈するなら #include <stdio.h> double daikei(double xa, double ya, double xb, double yb){ return(ya+yb)*(xb-xa)/2; } int main(void){ int n; int i; double V[1000][2]; double S,D; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%lf",&V[i][0]); scanf("%lf",&V[i][1]); } S=0.0; for(i=0;i<n-1;i++) S+=daikei(V[i][0],V[i][1],V[i+1][0],V[i+1][1]); printf("\n面積:%f\n",S); return 0; } とか?
514 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 03:11:53 ] >>509 NODE sentinel; NODE *root = &sentinel; 以降、全ての NULL を &sentinel に置き換える。 (malloc の戻り値チェックの NULL はそのまま) 元々 NULL が番兵の役割を果たしていたので、簡単な変更で済む。 NULL が番兵ではないと誤認識させる糞問題でした。
515 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 04:49:23 ] 【質問テンプレ】 [1] 授業単元:C言語 [2] 問題文: input.ppm というPPMフォーマットのファイルを読み込み, ヘッダをつけて縦横をそれぞれ 1/2(面積にして1/4) にして出力するプログラムを書きなさい. input.ppm のサイズは 410x307 である. [3] 環境 [3.1] OS:Windows Vista [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2/8 よろしくお願いします。
516 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 07:56:54 ] >515 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10502.zip
517 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 09:07:12 ] >>516 丁寧にありがとうございます ですが難しくてよく分からないです たぶんもっとシンプルで(いい加減で)良い課題なので、それを参考にもう少し頑張ります
518 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 12:09:37 ] >517 論理ミスしていた diff main.c main.c.bk 75,76c75,76 < rl.x = (x == 0 ? 1 : x*2); < rl.y = (y == 0 ? 1 : y*2); --- > rl.x = x*2; > rl.y = y*2; 縦横1/2の間引きだから、単純に縮小先の画素から見た縮小元の2x2の画素の平均値を新しい画素値にすればいいけど、 1/2の線形補間はになるためあまりきれいに縮小できない 以下疑似コード x, yは、整数, imageは元画像, new_imageは縮小画像を表す array(u, v)は、imageの縦u, 横vの値を表す height, widthは、それぞれ元画像の縦幅と横幅を表す for y in 0 <= y < height/2 for x in 0 <= x < width/2 new_value <- image(y*2, x*2) + image(y*2, x*2+1) + image(y*2+1, x*2) + image(y*2+1, x*2+1) new_value <- new_value / 4 new_image(y, x) <- new_value end end 実際のコードでは、RGBの値をそれぞれ計算しないといけないけど
519 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 12:15:31 ] >518 diff恥ずかしいなぁ、寝不足はいかんね
520 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 14:01:32 ] >>515-517 mkr_allocate_3d_array()で行のポインタがheightを一つ越えて 初期化されてしまってますね。バグバグバグ。
521 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 17:59:07 ] >>513 台形規則のプログラムではなくて 画像の関数の始点Aから終点Bで囲まれた赤色の面積を求めるような プログラムが欲しいです・・・ www1.axfc.net/uploader/Sc/so/80859 文章の記述不足すみません
522 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:02:02 ] 台形近似でも面積を求めることに変わりはないと思うんだが・・・
523 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:25:02 ] >>521 それを求める公式の一つが台形則。 希望があるならそれを明記しないと伝わらんぞ。
524 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:45:13 ] すみません;; 教科書読んだら台刑則のプログラムで面積を求めることが出来ると書いてありました… あとプログラムについて質問なのですが S+=daikei(V[i][0],V[i][1],V[i+1][0],V[i+1][1]); の部分の+=という演算子はどのような働きがあるのかと コンパイルしたあとは始点(xa,ya)終点(xb,yb)だけを打ち込めばいいのかわかりません そこについてもよろしくお願いします
525 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:50:14 ] a+=bはa=a+bと同義
526 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 19:43:34 ] >>524 (1)最初に関数F(x)上の点の数nを入力 (2)F(x)上の点(x,y)を、x座標の小さい順にn回入力。 下図を良〜く見れば、そのうち分かってくるはず upload.wikimedia.org/wikipedia/commons/thumb/4/42/Composite_trapezoidal_rule_illustration.png/180px-Composite_trapezoidal_rule_illustration.png
527 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 23:35:10 ] >520 ありがとうございます 潜在的なバグの原因になり兼ねますね 有効なアドレスを参照しているからメモリチェッカでは検出できていませんでした 修正は簡単だけど、エレガントなコードが浮かばない もう、ppm.c自体の完成度が低すぎて笑える、即席の使いまわしの接ぎ木
528 名前:至急お願いします。 [2010/02/09(火) 03:50:53 ] [1] 授業単元:C言語 [2] 問題文: ガウス分布における数値積分 I=∫f(x)dx,←xmin〜xmax f(x)=1/√(2*π*σ)*exp(a) a=-(x-μ)*(x-μ)/(2*σ*σ) 積分区間は[xmin,xmax]=[myuu-2siguma,myuu+2siguma]として計算すること。なおμ=0,σ=1とした場合、I=0.95449と なるので確認すること。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2/9 正午まで 出来ればすぐにお願いします。
529 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 03:59:06 ] >>528 確認しました。 で提出すりゃいいよ。
530 名前:至急お願いします。 [2010/02/09(火) 04:09:11 ] 追記 528>>関数を使ってください。
531 名前:至急お願いします。 [2010/02/09(火) 04:10:07 ] 529>>どういうことですか?
532 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 04:26:05 ] 計算すること 確認すること 参考書のページ数稼ぎによくあるパターンだな
533 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 05:39:00 ] >>528 多少誤差があるけど #include <stdio.h> #include <math.h> double f(double sigma, double mu, double x) { return 1/sqrt(2*M_PI*sigma) * exp(-(x-mu)*(x-mu)/(2*sigma*sigma)); } int main(int argc, char *argv[]) { int i, n = 10000000; double sigma=1, mu=0; double xmin = mu-2*sigma, xmax=mu+2*sigma; double a = f(sigma, mu, xmin), b; double sum = 0.0; for(i = 0; i < n; i++){ b = f(sigma, mu, xmin+(xmax-xmin)/n*i); sum += (a+b)*(xmax-xmin)/n/2; a = b; } printf("%f\n", sum); return 0; }
534 名前:デフォルトの名無しさん [2010/02/09(火) 07:18:38 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 配列に Institute of Technology という文字列を代入し、ポインタを利用して ・各文字が格納されているアドレス ・そのアドレスに格納されている文字 を表示するプログラムを作成せよ。 [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ名とバージョン:visual studio2008 [3.3] 言語:C [4] 期限:[2010年2月9日まで] [5] その他の制限: お願いします。
535 名前:デフォルトの名無しさん [2010/02/09(火) 07:33:03 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): まず次の内容のテキストファイルを準備せよ。 (メモ帳で作成し、test02.txtという名前で保存すること) abc 123 def 456 ghi 789 jkl 000 次に、作成したテキストファイルから内容を読み出し、 各行の先頭に 01 02 03 というように番号を付加して 画面に出力するプログラムを作成せよ。 [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ名とバージョン:visual studio2008 [3.3] 言語:C [4] 期限:[2010年2月10日まで] [5] その他の制限:
536 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 09:23:35 ] >>534 #include <stdio.h> int main(void) { char *pstr,str[30]="Institute of Technology"; pstr = str; for(;*pstr!='\0';++pstr) printf("%08x: %c\n",&*pstr,*pstr); }
537 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 09:26:13 ] >>535 #include <stdio.h> int main(void){ int i=0; char text[200]; FILE *ifp; ifp = fopen("test02.txt", "r"); if(!ifp) return 1; while(fgets(text,200,ifp) != NULL) printf("%02d %s", ++i, text); fclose(ifp); }
538 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 11:34:00 ] >>535 #include <stdio.h> int main(void){ FILE *f; f=fopen("test02.txt","r"); if(f==NULL) return 0; fclose(f); printf("01abc¥n02123¥n03def¥n04456¥n05ghi¥n06789¥n07jkl¥n08000¥n"); return 0; } センセーが期待した解答とは異なるだろうがよ
539 名前:至急お願いします。 [2010/02/09(火) 14:07:26 ] 534>>ありがとうございます。argvの後はなんてかいてあるのですか?
540 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 14:37:13 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): codepad.org/9ra3PWuv 上のコードが正しく動かないんです・・・ input.txtとして 1 2 3 4 5 の内容を保存して実行ファイルから読み込ませる ./a input.txt [3] 環境 [3.1] OS:ubuntu [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:[出来れば今日中で] [5] その他の制限:
541 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 15:17:43 ] >>540 自分が作ったプログラムを理解出来ていないようだ。(笑) input.txtとして↓を与える。 5 1 2 3 4 5
542 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 15:32:17 ] うわ、そんな安易な間違いでしたか・・・ ずっとプログラム睨んでました。 ありがとうございます。
543 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 16:07:04 ] バカもん。 > ずっとプログラム睨んでました。 プログラム睨んでたら普通気が付くだろ。
544 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 16:32:55 ] コードは鏡、自分自身が見えます。
545 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 16:36:53 ] 自分で書いてないのがバレバレだなw
546 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 20:17:21 ] >>538 死ね
547 名前:デフォルトの名無しさん [2010/02/09(火) 22:17:58 ] [1] 情報処理応用 [2] Fortranで, 階乗 n! を計算する関数を作成し, 順列 n個の異なるものからr個取り出して並べる。 このときの順列の総数をnPrとあらわす。 nPr=n(n-1)(n-2)・・・(n-r+1) を計算する関数を作成し, 組み合わせ 異なるn個からr個取り出して組を作る。 このときの組合せの総数をnCrとあらわす。 nCr = nPr/r! を計算するプログラムを作成してください [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語:fortran [4] 期限: 明日まで。急ぎですみません。 [5] その他の制限: 特にないですが、板を間違えていたらすみません。
548 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 22:18:01 ] [1]C言語課題 [2] コマンドラインに与えられた文字列が単数で自然数を表しているとい 下の例ように出力されるプログラムを作れ 入力==>3 132 231 入力==>5 1304 2552 4031 入力==>10 136107 259084 480952 710631 入力==>20 13610150016 25914201711 48131918127 71218191384 11172014952 16001510631 [3] [3-1]Linux [3-2]GNU C++ [3-3]C言語 [4] 2/22日正午迄 それ以降は不可 [5]stdio.h string.h stdlib.hを使用可能
549 名前:デフォルトの名無しさん [2010/02/09(火) 22:39:57 ] [1] 授業単元:プログラミング 1 [2] 問題文(含コード&リンク): 球の体積をもとめよ。またこの問題は間違っているのでそれを書き換えよ #include<stdio.h> int main(void) { double r,v; printf("直径を入力して下さい\n"); scanf("%1f",&r); v=4.0/3.0*3.14159*(r/2.0)*(r/2.0)*(r/2.0); printf("直径%fの球の体積は%fです。\n",r, v); } [3] 環境 [3.1] OS:windows vista [3.2] コンパイラ名とバージョン:visual studio2008 [3.3] 言語:C [4] 期限:[2010年2月10日まで] [5] その他の制限:
550 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 22:40:50 ] >>547 とりあえずスレタイをn!回声に出して読んでみようか
551 名前:デフォルトの名無しさん [2010/02/09(火) 22:47:32 ] [1] 授業単元:プログラミング 1 [2] 問題文(含コード&リンク): 二つの数列の和を表示したい。またこの問題は間違っているのでそれを書き換えよ #include<stdio.h> main() { int suretu1[]={2,4,6,8,10,12,14,16,18,20}; int suretu2[]={1,2,4,8,16,32,64,128,258,512}; int kotae; int count; for (count = 0; count <=10; count++ ) printf("%d,", suretu1[count]+suretu2[count]); { suretu1[count] = 2 * count +2; suretu2[count] = count* count; kotae= suretu1[count] + suretu2[count]; printf("二つのの整列の和によってできる数列は,\n"); printf("%d\t",kotae); } } [3] 環境 [3.1] OS:windows vista [3.2] コンパイラ名とバージョン:visual studio2008 [3.3] 言語:C [4] 期限:[2010年2月10日まで] [5] その他の制限:
552 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:00:56 ] [1] プログラミング基礎 [2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10503.txt [3] 環境 [3.1] OS:Unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限:2月10日 18時まで [5] その他の制限: 説明は詳しく書いてくれるととてもありがたいです。 現在とても困っています。皆さんよろしくお願いします。
553 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:15:56 ] >>548 入力==>15 136101511 259141127 481311384 712114952 111510631 入力==>11 1361011 2590007 4800084 7000952 1110631 入力==>9 13607 25984 48952 70631 入力==>8 1367 2584 4852 7631 入力==>6 1364 2552 4631 入力==>4 134 202 431
554 名前:デフォルトの名無しさん [2010/02/09(火) 23:19:47 ] [1] 授業単元:プログラミング 1 [2] 問題文(含コード&リンク): /************************* ある二つの文字列str1,str2 の編集距離はつぎの3つの操作を行うことによりstr1 をstr2 に変換するのに要する操作の最低回数である ・ 1文字挿入する ・ 1文字削除する ・ 1文字を他の1文字に置き換える たとえば str1="sport" はstr2="sort" に, 文字 'p' を削除することによりstr2 に変換できるため編集距離は 1 である str_n を文字列str の頭からn 番目までの部分列としm(i,j)をstr i とstr j の編集距離を表すものとする.m(i,j)とm(i+1,j),m(i,j+1),m(i+1,j+1)の間に成り立つ再帰式を記述しなさい この再帰式に基づき効率良く編集距離を計算するプログラムを2次元配列を利用して作成しなさい.ただし,関数m(i,j)はint型の編集距離を返り値とする. ******************************/ [3] 環境 [3.1] OS:windows vista [3.2] コンパイラ名とバージョン:visual studio2008 [3.3] 言語:C [4] 期限:[2010年2月10日まで] [5] その他の制限:
555 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:20:08 ] [1]C言語とプログラミング [2] キーボードから3つの整数を受け取り大きさの小さい順に出力するプログラムを作りなさい。 但しmain関数内ではint変数一つだけが使えるものとします。またmain関数の再帰呼び出しも 出来ません。(main関数の引数、argc,argvをint変数として使用することも勿論禁止します) main関数のみで構成されるプログラムとして下さい。 入力される数は1から10までの範囲にあることを常にチェックし、それ以外の入力の場合は 再入力を促して下さい。 [3] [3-1]Windows XP HomeEdition [3-2]Visual Studio 2008 [3-3]C言語 [4] 2/11迄 [5] 特に無し
556 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:28:36 ] まぁどれも期日まで時間があるからゆっくりやるべきだ 最近の学生は甘え過ぎ 粘って苦しめてやれというのはウソにせよ 期日ぎりぎりに催促されたら貼ってやる って感じで
557 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:30:40 ] >>549 scanf("%1f",&r); の %1f を %lf に修正。※lは小文字のL main関数が値を返して無いので、最後に return 0; 等を追加。
558 名前:デフォルトの名無しさん [2010/02/09(火) 23:32:55 ] >>556 余計なこと書くなよw 日付変えてくるだろうが
559 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:45:48 ] >>551 問題の題意がイマイチよく分からんので、適当に解釈 #include<stdio.h> main() { int suretu1[]={2,4,6,8,10,12,14,16,18,20}; int suretu2[]={1,2,4,8,16,32,64,128,258,512}; int kotae=0; int count; printf("二つの整列の和によってできる数列は\n"); for (count = 0; count <10; count++ ) { printf("%d ", suretu1[count]+suretu2[count]); kotae += suretu1[count] + suretu2[count]; } printf("\n数列の和は %d\n",kotae); return 0; }
560 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:47:16 ] >>535 #include <stdio.h> #include <string.h> int main(void){ #define CONTENTS "01abc¥n02123¥n03def¥n04456¥n05ghi¥n06789¥n07jkl¥n08000¥n" FILE *f; int i=0; char Fgets[256],Strcat[256],Sprintf[256]; f=fopen("test02.txt","r"); if(f==NULL) return 0; Strcat[0]=0; for(;;){ if(NULL==fgets(Fgets,256,f))break; sprintf(Sprintf,"%02d%s",++i,Fgets); strcat(Strcat,Sprintf); } fclose(f); if(0==strcmp(Strcat,CONTENTS))printf("%s",CONTENTS); return 0; }
561 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:01:18 ] >>552 1.Swapの引数が値渡しなので、Swap関数内で値を変更しても 関数呼び出し元の変数には影響を与えないから。 2.Swap関数内のbuf変数がポインタで定義されていて、その初期化されていないポインタの 示す先を一時保存場所として使用している為、正しく値が交換されない。 3. void Swap(int *p1, int *p2) { int buf; buf = *p1; *p1 = *p2; *p2 = buf; }
562 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:39:59 ] >>561 素早い回答ありがとうございます。助かりました。
563 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:57:05 ] [1] 授業単元: DirectX研究2 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10504.txt [3] 環境 [3.1] OS: (Windows vista) [3.2] コンパイラ名とバージョン:visual stdio 2008 [3.3] 言語: C++ [4] 期限: ([2010年2月10日17:00まで] [5] その他の制限:
564 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 01:26:05 ] >>547 スレ違いだけどFortran77で kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10505.txt
565 名前:564 mailto:sage [2010/02/10(水) 02:17:10 ] スレ違いのまま失礼… 訂正版 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10506.txt
566 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 02:19:37 ] >>548 思ったより難しかった
567 名前:566 mailto:sage [2010/02/10(水) 02:38:49 ] 入力==>200 1361015212836455566789110512013615317119000000000191 2591420273544546577901041191351521701890000000192172 4813192634435364768910311813415116918800000193173154 7121825334252637588102117133150168187000194174155137 1117243241516274871011161321491671860195175156138121 1623314050617386100115131148166185196176157139122106 2230394960728599114130147165184019717715814012310792 2938485971849811312914616418301981781591411241089379 3747587083971121281451631820199179160142125109948067 4657698296111127144162181020018016114312611095816856 5668819511012614316118020001811621441271119682695746 6780941091251421601791990182163145128112978370584737 7993108124141159178198018316414612911398847159483829 9210712314015817719701841651471301149985726049393022 1061221391571761961851661481311151008673615040312316 1211381561751950186167149132116101877462514132241711 1371551741940001871681501331171028875635242332518127 1541731930000018816915113411810389766453433426191384 1721920000000189170152135119104907765544435272014952 1910000000019017115313612010591786655453628211510631
568 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 02:42:04 ] [1]数値計算演習 [2] 極座標で表される曲線 r(t)=sin^2(πt) θ(t)=α sin(πt^2) (0<=t<=1)でαを指定した時 の曲線の長さと囲む面積の近似値を求め、π/4<=α<=πまで変化させる時、 面積/曲線の長さが最大になるαを推定する 曲線上の代表点をとり隣接する点の間の距離の和で曲線の長さを近似。 面積は隣接する代表点と原点が作る三角形の面積の和で近似する。 [3] [3-1] Mac-OS-X panther [3-2] XCode [3-3] C/C++どちらでも可能 [4] 2/18迄 [5] 特に無し
569 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 02:50:49 ] >>555 ビット演算の問題と解釈 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10507.txt
570 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 03:48:14 ] >>555 タイプミスに苦闘したが5分で打ち込めた kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10509.zip
571 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 04:05:07 ] >>568 答えがπになってしまった。間違ってたらごめんね kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10510.txt
572 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 05:31:38 ] >>555 好奇心で書いてみた めちゃ読みづらいけど勘弁 testhp.ddo.jp/prog.c
573 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 07:39:07 ] >>555 入力数を何でも対応できるように むりやりキャストしてポインター使ってみた codepad.org/xjtWz8N3
574 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 07:47:33 ] 大きい順と小さい順を勘違いしてた codepad.org/Z5aQHsCW
575 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 08:53:50 ] おまえら必死だな
576 名前:553 mailto:sage [2010/02/10(水) 09:05:02 ] >>575 入力==>200 13610152128364555667891105120136153171190 259142027354454657790104119135152170189 48131926344353647689103118134151169188 7121825334252637588102117133150168187 111724324151627487101116132149167186 1623314050617386100115131148166185 2230394960728599114130147165184 29384859718498113129146164183 374758708397112128145163182 4657698296111127144162181 56688195110126143161180200 678094109125142160179199 7993108124141159178198 92107123140158177197 106122139157176196 121138156175195 137155174194 154173193 172192 191 1)文字列を繋いで、1〜nまでの三角形を作る(上の図参照) 2)それを1文字ずつに分解して、上下反転、左右反転する 3)1と2で出来た物を左右に並べて、隙間がなくなるまで近づける 4)空いた隙間には0を詰める
577 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 09:10:09 ] >>575 問題が魅力的だったからみんなやったんだろうな
578 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 10:38:11 ] >>576 数値自身は左右反転じゃないぞ
579 名前:553 mailto:sage [2010/02/10(水) 12:56:23 ] #define MAXL 100 main(){ int num, i, j, k, len, maxlen; char wrk[4], mat1[MAXL][MAXL*2], mat2[MAXL][MAXL*2], tmp[MAXL]; printf("入力==>"); scanf("%d", &num); for(i=0;i<MAXL;i++) mat1[i][0] = mat2[i][0] = (char)0; i=1, j=0, k=0; while(i<=num){ if(k<0) { k = ++j; if(j >= MAXL) {puts("ERR"); return 1;} // てきとう } sprintf(wrk, "%d", i++); strcat(mat1[k--], wrk); /* LEFT */ strcpy(tmp, mat2[k+1]); /* RIGHT */ sprintf(mat2[k+1], "%d", i-1); strcat(mat2[k+1], tmp); } maxlen = k = 0; for(i=0;i<=j;i++){ len = strlen(mat1[i]) + strlen(mat2[j-i]); if(len > maxlen) maxlen = len, k=i; } for(i=0;i<=j;i++){ len = strlen(mat1[i]) + strlen(mat2[j-i]); for(k=maxlen-len-1;k>=0;k--) strcat(mat1[i], "0"); // めんどう strcat(mat1[i], mat2[j-i]); } for(i=0;i<=j;i++) puts(mat1[i]); }
580 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 13:00:22 ] >>548 codepad.org/nCjDliKG
581 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 13:12:52 ] >>548 デバッグ用のprintfがあるので見づらいが、>>580 では 1) 上半分の三角形(>>576 のような)の各行の長さを求める 2) 出力される配列の長さを決める( (i行目の長さ + (h-1-i)行目の長さ)の最大値 ) 3) 出力 という流れ。三角形の(i,j)の位置のにある数字は簡単に計算できるので メモリには各行の長さだけ記憶すれば十分。
582 名前:デフォルトの名無しさん [2010/02/10(水) 13:13:57 ] [1] 授業単元:なし [2] 問題文(含コード&リンク):MSPAINTの色の選択(カラーダイヤログ)を表示して、選択した色(RGB)を文字列として取得する秀丸用のDLLを作成してください [3] 環境 [3.1] OS:Windows XP or Vista [3.2] コンパイラ名とバージョン: なんでも [3.3] 言語: CかC++どちらでも可 [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: とくになし DLLの使用などはこちらを参照してください ttp://homepage3.nifty.com/kons/hidemaru/helpsite/hidemac/html/200_Dll.html
583 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 13:19:45 ] >>582 それ、宿題じゃねーだろ。
584 名前:570 mailto:sage [2010/02/10(水) 13:32:22 ] >>555 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10512.zip 多くの部分に間違いがあった。 さすがに700行/分の入力ではミスが起こるわなw
585 名前:570 mailto:sage [2010/02/10(水) 13:46:27 ] スマン まだ一カ所ミスが... 入力チェックをミスってる #define INPUT()で でwhileロジックを while ( (m<1)||(m>10) ) に修正して
586 名前:デフォルトの名無しさん [2010/02/10(水) 13:51:16 ] >>336 課題4と課題5どなたかよろしくお願いします。期日すぎても提出できるので、なんとかならないか必死です。
587 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 17:24:00 ] >>586 5番のグラフって何グラフ?
588 名前:デフォルトの名無しさん [2010/02/10(水) 17:40:46 ] 入力データの例 1.2 3.7 2.1 4.2 2.9 1.3 4.0 2.5 x,y軸を-や+で表現して、それぞれ座標の点(4つ)を*でプロットする感じです。
589 名前:555 mailto:sage [2010/02/10(水) 19:03:12 ] >>572 >>573 >>570 どうもありがとうございました。 >>570 さんのコードは非常にわかりやすいです。 3600行を5分で入力とは凄いですね。 タッチタイピング速度はどの位でそれくらいに なるんでしょうか?自分は1分間に賞味150文字が 精一杯です。(IME変換時間を含む) 他の皆様もいろいろと工夫をされておられ特にビット 操作とかポインタ操作とか裏技的な技法は非常に参考 になると思います。
590 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:45:14 ] >>570 ひらいてみた。ちょwwww
591 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:52:14 ] 世間では一昔前はコード1行1万が 相場だった時代もあったね。 >>570 のコードだといくらになるんだかw **確認事項** ここで答えてやっても事後を含め 一切依頼者に報酬を請求出来ない
592 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:54:41 ] >>591 ここで答えるようなのって単体じゃどうせ金にならなくないか?
593 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:55:23 ] >>570 >>584 クソワロタ
594 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:15:31 ] ここで解かれている問題とその回答を 応用してもいいけど事後問題になる可 能性もあるんで(2ちゃんねるから 引用ってw格式ある組織ではそれだけ で処分対象w)
595 名前:570 mailto:sage [2010/02/10(水) 22:38:17 ] >>555 いえいえ。 タッチタイピングの上達のコツは このスレの他の回答者に聞いてくれ 企業秘密なんで。 この業界では毎分400文字〜500文字 (IME入力変換時間を含む)の入力が 生き残りの最低条件なんでw 今回は実にのんびりしたテンポで入力 したよ。 >>590 >>593 何かおもしろいところあるのかい?
596 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:50:17 ] いやここまで冗長なプログラムは初めて見たもんで 一行いくらならこういう方法でガツガツ稼げるなw
597 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 23:16:03 ] 冗長? 見た目だろ。 ロジックそのものはこれほど直接的なものはない コードは常に短く書けばいいというもんでもないと 目から鱗が落ちたような気分 コードを(最初から)短く書くのが偉いとかそういう 奇妙な信仰はかなり弊害もあるんじゃないかと もっとも一つのint変数しか使えない状況での プログラミングもかなりナンセンスだと思うが
598 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 23:16:59 ] 回路に例えるとワイヤードロジックな 普通のプログラムがマイクロプログラムに例える事が出来るかも
599 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 23:21:30 ] >>555 って__asmでスタックとレジスタ使えばint変数一つでも楽勝なんじゃないのw
600 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 02:07:11 ] >>555 逃避したくなったので書いてみた。 codepad.org/HcRNGiZZ
601 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 11:03:25 ] 勉強になるなぁ。hhdかー。
602 名前:デフォルトの名無しさん [2010/02/11(木) 13:05:19 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): #include <stdio.h> int main(void){ int a=0,k; for (k=0;k<100;k++){a++; if(a%5==0&&a%9==0)printf("A\n"); else if(a%5==0)printf("B\n"); else if(a%9==0)printf("C\n"); else printf("%d\n",a); }return 0;} この処理のプログラムをスペース、改行を含み140字以内で書き直したい。 [3] 環境 [3.1] OS:Windows XP Pro [3.2] コンパイラ名とバージョン:VisualStudio2005 [3.3] 言語:C [4] 期限: [5] その他の制限:特になし よろしくお願いします。
603 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 13:29:10 ] >>602 #include <stdio.h> int main(){ int k; for (k=1;k<=100;k++){ printf(k%5==0&&k%9==0?"A\n":k%5==0?"B\n":k%9==0?"C\n":"%d\n",k); }}
604 名前: ◆/91kCCQXBo mailto:sage [2010/02/11(木) 13:54:38 ] #include <stdio.h> int main(void){ int a; for(a=1;a<=100;a++) printf(a%45?a%5?a%9?"%d\n":"C\n":"B\n":"A\n",a); return 0; }
605 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 14:04:38 ] >>602 変な問題ですが無理なのでは166byte
606 名前:デフォルトの名無しさん [2010/02/11(木) 14:05:22 ] 602です。 <<603 <<604 の方ありがとうございます。 助かりました。
607 名前:605 mailto:sage [2010/02/11(木) 14:05:28 ] 失礼3項演算子があったのね
608 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 14:11:20 ] >>555 きっと反則技なんだろうけど。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10517.c
609 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:34:45 ] >>602 code golfするの? a;main(){for(;++a<101;)printf(a%45?a%5?a%9?"%d\n":"C\n":"B\n":"A\n",a);}
610 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:11:13 ] >>555 int a; scanf("%ld %ld %ld%*c", (long *)&a, (long *)&argc, (long *)&argv); じゃだめか Windows XP HomeEditionって64bitないよね
611 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:54:33 ] >>610 たった3行の制約条件を見逃すようじゃ、お前マの適性ない。 転職を勧める。
612 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 01:00:07 ] >>555 もう需要ないかと思うが、面白そうなのでやってみた。 バブルソートのありがたみを出すため、かつ、4bit余ったため、入力する値を4つに勝手に変更。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10519.txt
613 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 01:03:56 ] >>612 1〜10だよ。