1 名前:デフォルトの名無しさん [2009/01/15(木) 23:21:27 ] あなたが解けない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++の宿題を片付けます 121代目 pc11.2ch.net/test/read.cgi/tech/1230678123/
266 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 00:56:37 ] >>172 コンソールアプリでいいんだよね? 言語はCとC++どっち?
267 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 02:13:27 ] >>266 >[5] その他の制限: まだ基礎段階なので、なるべく簡単なプログラムがいいです。 画像の取り込みとかはせずに、文章で表示すればいいらしいです。 Visual c++がよくわからないので、よろしくお願いします C++のWindowアプリケーションを望んでいるようには見えない。 求めてるのは”なるべく簡単”でしょ。
268 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 14:27:20 ] [1] 授業単元: プロムラミング演習2 [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8813.txt [3.1] OS: Windows [3.3] 言語:C言語 [4] 期限:2月5日まで [5] その他の制限:すみません自力ではわかりません.ご指導お願いします
269 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 14:46:26 ] void bitpart(int x) { char str[33]=""; for(b=31;b>=0;b--){ sprintf(str,"%s%d",(x>>b)&1); return str; } > jprintf(bit pattern=%s\n",bitpart(x,bit)); なんかちがう
270 名前:897です mailto:sage [2009/02/04(水) 14:51:10 ] すみません... 打ち間違いでした printf("bit pattern =%s\n", bitpart(x,bit)); です.すみません
271 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 14:51:44 ] >>268 char*bitpart(int x,char *bit) { int b; bit[32] = '\0'; for(b=31;b>=0;b--){ sprintf(&bit[31-b],"%d",(x>>b)&1); } return bit; }
272 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 15:00:15 ] >>271 早い返事ありがとうございます 助かりました
273 名前:897 mailto:sage [2009/02/04(水) 17:01:19 ] [1] 授業単元: C言語 [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8814.txt [3.1] OS: Windows [3.3] 言語:C言語 [4] 期限:2月5日まで [5] その他:お願いします
274 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:17:20 ] >>273 void insert(int num, struct node *p) { struct node *n; while (p->next != NULL && p->next->key < num) { p = p->next; } n = (struct node *)malloc(sizeof *n); n->key = num; n->next = p->next; p->next = n; }
275 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:27:54 ] >>274 ありがとうございます!! なんとかいけそうです
276 名前:デフォルトの名無しさん [2009/02/04(水) 17:46:14 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8815.txt [3] 環境 [3.1] OS: Windows Vista [3.2] コンパイラ名とバージョン: [3.3] 言語: C [4] 期限: ([2009年02月05日12:00まで] [5] その他の制限: よろしくお願いします。
277 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:01:53 ] >>276 #include <stdio.h> int main(void) { int kinshu[10] = { 10000, 5000, 2000, 1000, 500, 100, 50, 10, 5, 1 }; int i, j, c, n; printf("金額を入力してください: "); scanf("%d", &n); for (i = 0; i < 10; ++i) { for (c = 0; n / kinshu[i]; ++c) n -= kinshu[i]; printf("%5d円: %d枚\n", kinshu[i], c); } return 0; }
278 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:10:45 ] > for (c = 0; n / kinshu[i]; ++c) n -= kinshu[i]; c=n/kinshu[i]; n-= c*kinsyu[i];
279 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:37:30 ] [1] 授業単元:数値解析 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8817.txt [3] 環境 [3.1] OS: Windows XP [3.3] 言語: C [4] 期限: 2009年02月05日まで 問題多いですがよろしくお願いします。
280 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:38:16 ] [1] 授業単元: C言語 [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8816.txt [3.3] 言語:C言語 [4] 期限:2月5日まで [5] その他: 違うところで同様の質問をして,いろいろヒントをもらった のですが,いまいちわかりません.その時こちらを紹介されたので, どうかお願いします
281 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:52:39 ] >>280 int pop(void) { struct node *n = TOP.next; if (n == NULL) { fprintf(stderr, "no stack\n"); return 0; } else { int num = n->key; TOP.next = n->next; free(n); return num; } } int main(void) { TOP.next = NULL; push(21); push(42); printf("%d\n", pop()); printf("%d\n", pop()); return 0; }
282 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 19:29:50 ] >>279 どんだけ丸投げだよ。
283 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 19:37:05 ] 丸投げスレなんだから当然だろ? ってこれは・・・w
284 名前:280 mailto:sage [2009/02/04(水) 19:46:00 ] >>281 ありがとうございます 助かりました!!
285 名前:Rm [2009/02/05(木) 00:09:41 ] [1] 計算システム(C言語) [2] N×Nの行列A,Bに大して、次のようなプログラムを作成せよ。 ・A+B、A−B、A×Bを出力するプログラム ・Aの逆行列を出力するプログラム(ピボット選択法) ただし ・Nはdefineで4と定義する。 ・A,Bそれぞれの成分データはdouble型配列に保存する。 ・行列A,Bの各成分のデータは時間に依存した種から与えられる疑似関数により自動生成する。 mathweb.sc.niigata-u.ac.jp/~yamada/system/wed/kadai.htm 実際ほかの課題もわかりません。1は出来ましたが。 [3] 環境 [3.1] OS:Windows [3.2] gcc [3.3] 言語: C [4] 期限: 5日 よろしくお願いいたします。
286 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:52:15 ] >>273 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8819.txt
287 名前:280 です mailto:sage [2009/02/05(木) 02:14:54 ] >>281 さんの方から解答をいただいたのですが main関数の所がいまいちわかりません できたらもう一度お願いします.
288 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 02:24:30 ] >>287 わかりませんもなにも見たまんまpushしてpopしてるだけだと思うが もう一度といわれてもこれ以外書きようがないと思うべ? どこがどうわからないか考え直してきなさい
289 名前:280 です mailto:sage [2009/02/05(木) 02:39:14 ] push(21); push(42); これがよくわかりません コンパイルしてもこれしかでないのですが・・・ mainは、任意個数の数字を入力させてそれをpushし、 EOFになったら逆にpopで値を取り出して画面に表示する みたいな感じにしたいのですが・・
290 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 02:57:53 ] >>289 >pushとpopが正常に動作をしているか確かめられるプログラムを作成してください といわれて>>289 の下半分の内容を読み取れなんてエスパーじゃない限り無理 int main(void) { TOP.next = NULL; int d; while(scanf("%d", &d)!=EOF) push(d); while(TOP.next) printf("%d\n", pop()); return 0; }
291 名前:280 です mailto:sage [2009/02/05(木) 03:03:11 ] >>290 言葉足らずですみません 夜遅くわざわざありがとうございます
292 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:06:14 ] 十分テストコードになってると思うんだけどな。
293 名前:デフォルトの名無しさん [2009/02/05(木) 03:23:22 ] while(1) { wakeup; static int day; int time = wakeuptime(); while(1) { 2ch; if(time == Daytime()) { lunch; }; if(time == nighttime()) { supper; }; if( time == sleeptime();) { break; } time++; } day++; sleep; } こんな毎日、無限ループって怖いよな;;
294 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:48:10 ] >>285 和、差、積のやつ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8821.c
295 名前:285 [2009/02/05(木) 04:09:48 ] >>294 ありがとうございます。よろしければ逆行列プログラムもお願いします。
296 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 04:54:22 ] >>295 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8822.c
297 名前:285 [2009/02/05(木) 05:24:02 ] >>296 このような時間帯にわざわざありがとうございます。 おかげ様で助かりました。
298 名前:279 mailto:sage [2009/02/05(木) 06:58:42 ] >>282 >>283 確かにこれはひどいですよね… 1問でもいいのでお願いしたいです。 一応自分でもやっていますが、数学が苦手なもので…
299 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 12:42:16 ] >>167 です。 自己解決したので取り下げます。スレ汚し失礼しました。
300 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 13:13:46 ] 1] 授業単元: C言語 [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8823.txt [3.1] OS: Windows [3.3] 言語:C言語 [4] 期限:2月6日まで [5] その他:お願いします
301 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:25:46 ] [1] 授業単元:C言語プログラミング [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8824.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:明日まで [5] その他の制限:与えられたプログラムを改造(付け足し)する
302 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:16:54 ] >>301 #include <stdio.h> int main(void) { int i, j, c; char seq[] = "tion"; i = 0; while ((c = getchar()) != EOF) { if (c == seq[i]) { i++; if (i == sizeof(seq) - 1) { break; } } else { for (j = 0; j < i; j++) { putchar(seq[j]); } i = 0; putchar(c); } } return 0; }
303 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:18:39 ] 300 の問題って リダイレクトじゃだめなのか?
304 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:26:50 ] >>300 #define INPUT_FILE_NAME "foo.in" #define OUTPUT_FILE_NAME "bar.out" int main(void) { struct student A[Nmax]; double avg=0; int i; FILE *fin, *fout; fin = fopen(INPUT_FILE_NAME, "r"); if (fin == NULL) { perror(INPUT_FILE_NAME); return 1; } for( i=0; i<Nmax; i++){ fscanf (fin, "%d %d %d %s", &A[i].sc1,&A[i].sc2,&A[i].sc3,A[i].name); } fclose(fin); fout = fopen(OUTPUT_FILE_NAME, "w"); if (fout == NULL) { perror(OUTPUT_FILE_NAME); return 1; } fprintf(fout, "Score Name\n"); fprintf(fout, "-------------------------------------------\n"); for(i = 0;i <Nmax; i++){ A[i].total =(A[i].sc1+A[i].sc2)*0.4+A[i].sc3; A[i].res =(A[i].total>=60)?"A": "F"; avg += A[i].total; fprintf(fout, "%6.1f %s %s\n", A[i].total,A[i].res, A[i].name); } fprintf(fout, "---------------------------------------------\n"); fprintf(fout, "%6.1f (Avg)\n",avg/Nmax); fclose(fout); return 0; }
305 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:09:19 ] >>302 "ttion" >>301 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8825.txt
306 名前: ◆g8eVFLrbyk [2009/02/05(木) 16:49:09 ] [1] 授業単元:C++言語プログラミング [2] 問題文:www.s.kyushu-u.ac.jp/~z6st02in/repo2008z/repo2008kprob.html 問題2と3をおねがいします。 [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン: [3.3] 言語:C++言語 [4] 期限:明日まで [5] その他の制限:与えられたプログラムを改造(付け足し)する
307 名前:suzuki mailto:sage [2009/02/05(木) 16:59:16 ] 君は不可だ! 調査した上で厳正に処理するから首を洗っとれ
308 名前:302 mailto:sage [2009/02/05(木) 17:09:27 ] >>305 あ、ホントだ。俺の間違ってたね。
309 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:27:29 ] スレチですいません。 今日面接でプログラミングの手書きのテストをやってきました。 テスト終わって家に帰ってから効率のいいコードの書き方を思い出しました。 テスト中は時間のことが気になって思い出せずとりあえず動くコードで書きました。 テストの場合は白紙や書き途中で提出するくらいなら、 とりあえず動くコードで書いておけば特に問題はないですよね?
310 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:30:05 ] 宿題やテストの採点思想次第だわな
311 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:25:48 ] >>309 「動かないよりマシ」って言って欲しいんだろうけど、 採点者が何を見ているか次第なんじゃね? Fizz-Buzz問題って日本でも実施してるのかな? ナベアツ問題は、このスレでも何度か回答されてるよね。 プログラマーなら「FizzBuzz問題」解けるよな? pc11.2ch.net/test/read.cgi/prog/1209467166/ Fizz Buzz(ウィキペディア) ja.wikipedia.org/wiki/Fizz_Buzz どうしてプログラマに・・・プログラムが書けないのか? www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
312 名前:301 mailto:sage [2009/02/05(木) 20:15:18 ] >>305 すみません。問題が間違ってました 正しくはkansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8826.txt でした
313 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 20:23:27 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): データファイル(kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8827.txt ) には,1000 人の「学籍番号,科目A,科目B,科目C の各点数」が学籍番号順に並んでいる. そのデータファイルを元に,キーボードから入力された学籍番号の学生の成績(含:3科目の合計点の順位)を表示するプログラムを作れ. 探索は二分探索を使い,ソートにはクイックソートを使うこと. 合計点が同じになる学生はいないということは既知とせよ. 学籍番号が存在しない場合は,”No data ”と表示するようにせよ. 表示は以下のようにせよ. Input A Student Number: 14【Enter】 Ranking : #269 /*最高得点は1位とせよ.*/ Subject A : 86 Subject B : 59.1 Subject C : 220.42 Total : 365.52 [3] 環境 [3.1] OS:Win [3.2] gcc [3.3] C [4] 2月6日23:59 おねがいします。
314 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:03:57 ] >>312 #include<stdio.h> #include<string.h> int main(void){ int c, i; char history[4*2]=""; for(i=0;(c=getchar())!=EOF;i++){ history[i%4]=history[(i%4)+4]=c; printf("%c", c); if(strncmp(&history[(i+1)%4], "tion", 4)==0) break; } return 0; }
315 名前:305 mailto:sage [2009/02/05(木) 21:07:49 ] 上のプログラムに、入力列としてt、i、o、nの並びが与えられた場合にも入力を終了する機能を追加せよ 例 This is important information for me! の場合 This is important informaと出力 This scene is romantic の場合 This scene is romantic (tionの並びでないのでそのまま出力) 上のプログラムに、入力列としてt、i、o、nの並びが与えられた場合にも入力を終了する機能を追加せよ 例 This is important information for me! の場合 This is important informationと出力 This scene is romantic の場合 This scene is romantic (tionの並びでないのでそのまま出力)
316 名前:305 mailto:sage [2009/02/05(木) 23:50:36 ] >>314 その手があったか。参ったのでソース貼り付け。 #include<stdio.h> #define LEN 4 char tion[LEN + 1] = "tion"; int main(void) { int c = '\0', k = 0; while ((c = getchar()) != EOF && k < LEN) { if (c == tion[0]) k = 1; else if (k > 0) { if (c == tion[k]) k++; else k = 0; } putchar(c); } return 0; }
317 名前:301 mailto:sage [2009/02/06(金) 00:46:55 ] 皆さんありがとうございました
318 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 02:48:49 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): ニュートン法と二分法の両方を用いて,直線y = x + 1/2 と単位円 x2 + y2 = 1 の交点の座標の近似解(小数点以下第6位まで)を求めよ. 1つのプログラムに書くこと(ニュートン法と二分法に関する箇所はmain 関数から独立させよ) ニュートン法も二分法もともに何回で収束したかが分かるようせよ. 関数へのポインタは必ず使うこと. 表記は例えば以下のようにすること: Newton method: Lower part: count : ???? sol :( ?????, ????? ) Upper part: count : ???? sol :( ?????, ????? ) 二分法で用いる初期値は[a,b]= [-1,1]とせよ ニュートン法で用いる初期値は2つとも0とせよ。その際,1つの関数は 収束しない.収束しない場合は,求められないと分かった時点で計算を終了 するように工夫せよ.また,そのときは以下のように表記せよ. sol : Not converge 収束しない場合は,なぜ収束しないのかをコメントとして書くこと. [3] 環境 [3.1] OS: windows [3.2]gcc [3.3] 言語: C [4] 2月6日の夜まで 期限がせまっていて申し訳ありませんが自分でできなかったためよろしくおねがいします><
319 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:27:02 ] #include <stdio.h> #include <stdlib.h> #include <string.h> char *crypt(const char *key, const char *salt); #define MAXLEN 16 #define TRIPLEN 10 #define PATH "trip.out" typedef unsigned char uchar; int get_saltc_old(uchar c){ if(c < '.' || c > 'z') return '.'; if(c >= ':' && c <= '@') return c - ':' + 'A'; // :;<=>?@ - ABCDEFG if(c >= '[' && c <= '`') return c - '[' + 'a'; // [\]^_` - abcdef return c; } int gen_trip(uchar *o, int n, uchar *w){ uchar sal[3]; uchar *t; sal[0] = get_saltc_old(n > 1 ? w[1] : 'H'); sal[1] = get_saltc_old(n > 2 ? w[2] : '.'); sal[2] = '\0'; t = crypt(w, sal); strncpy(o, t + strlen(t) - TRIPLEN, TRIPLEN); return 0; }
320 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:34:04 ] int gen_combination(uchar *o, int n, int m, uchar *pos){ int i; for(i = 0; i < n; i++) o[i] = pos[i]; for(i = n - 1; i >= 0; i--){ if(pos[i] < m - 1){ pos[i]++; return 1; }else{ pos[i] = 0; } } return 0; } int gen_word_list(uchar *w, int n, int m, uchar *s){ static uchar *pos = NULL; int i; if(!pos){ pos = (uchar *)malloc(sizeof(uchar) * n); for(i = 0; i < n; i++) pos[i] = 0; } if(gen_combination(w, n, m, pos)){ for(i = 0; i < n; i++) w[i] = s[w[i]]; w[n] = '\0'; return 1; } if(pos){ free(pos); pos = NULL; } w[0] = '\0'; return 0; }
321 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:34:39 ] int sout(char *path, char *s, int f){ FILE *fp; if(f) if((fp = fopen(path, "ab+")) != NULL){ fprintf(fp, "%s\n", s); fclose(fp); } fprintf(stdout, "%s\n", s); return 0; } int scantrip(int n, int m, uchar *s, uchar *f){ uchar *w, *t; char buf[4096]; w = (uchar *)malloc(sizeof(uchar) * n + 1); w[n] = '\0'; t = (uchar *)malloc(sizeof(uchar) * TRIPLEN + 1); t[TRIPLEN] = '\0'; sprintf(buf, "'%s' in len %d", f, n); sout(PATH, buf, 1); while(gen_word_list(w, n, m, s)){ gen_trip(t, n, w); int b = n - 2; if(w[n - 1] == '.' && (w[b] == '.' || w[b] == 'U')){ sprintf(buf, "%4d #%s %s %s", n, w, "----------------------------------------", t); sout(PATH, buf, 0); } if(strstr(t, f)){ sprintf(buf, "%4d #%s %s", n, w, t); sout(PATH, buf, 1); } } if(t) free(t); if(w) free(w); return 0; }
322 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:35:06 ] int main(int ac, char *av[]){ uchar *s="./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; uchar *f="Linux"; int i; for(i = 1; i < MAXLEN; i++) scantrip(i, strlen(s), s, f); return 0; }
323 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 05:07:28 ] >>318 > 二分法で用いる初期値は[a,b]= [-1,1]とせよ その間に、解が二つある気がする。 > ニュートン法で用いる初期値は2つとも0とせよ。その際,1つの関数は > 収束しない.収束しない場合は,求められないと分かった時点で計算を終了 > するように工夫せよ.また,そのときは以下のように表記せよ. > sol : Not converge > 収束しない場合は,なぜ収束しないのかをコメントとして書くこと. オレの知らないニュートン法?
324 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 05:54:45 ] >>313 をやってみたんだけど gccだと動作がおかしい VCだと正常に動く 誰か原因を教えてくれ・・・・orz gcc kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8828.c VC kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8829.txt
325 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 08:25:43 ] 8828.c をVCに掛けてみたらどうなる。
326 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 08:39:11 ] >>325 そのままかけてみたが正常に動作した gccだと標準入力を促すところまで行くが 直後のsscanfでプログラムが終了してしまう 一応OSはXPです
327 名前:318 mailto:sage [2009/02/06(金) 08:44:17 ] >>323 交差する点2つありますよね。両方とも求めるんだと思います。 二分法のアルゴリズムは Step 1 f (a) < 0 かつf (b) > 0(または, f (a) > 0 かつf (b) < 0)を満たす ような変数a, b の値を設定し,十分小さい正数ε を設定する. Step 2 c = (a + b)/2 とし, f (c) = 0 であれば,【Step 3】に移る. f (c) > 0 であれば,b をc で置き換える. f (c) < 0 であれば,a をc で置き換える. |a-b| < 2ε であれば,【Step 3】に移る. Step 3 c を解とする. という感じらしいです。ニュートン法は反復の限界値を決めて(100回くらいに) 反復回数がそれを超えたら停止してほしいのですが・・。
328 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 11:30:38 ] >>324 sscanf(buf, "%d%lf%lf%lf",&(st[i].number),&(st[i].ascore),&(st[i].bscore),&(st[i].cscore)); で "%d,%lf,%lf,%lf" に
329 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 12:48:40 ] >>327 > 二分法のアルゴリズムは つまり、1セットの初期値からは、一つの解しか見つからないし・・・ xの式、f(x)=0になるxを探すワケだけど、f(a)とf(b)の符号が逆じゃなきゃいけないんだよね。 区間に二つ解があるということは、つまり、f(1)とf(-1)の符号はおんなじなわけだけど・・・? > という感じらしいです。ニュートン法は反復の限界値を決めて(100回くらいに) > 反復回数がそれを超えたら停止してほしいのですが・・。 初期値が二つといっているのだから、解の一つごとに初期値をおくように思うが、両方0にしろと言う。 オレの知っているニュートン法ではないようだ。
330 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 13:28:17 ] にぶんほう?
331 名前:デフォルトの名無しさん [2009/02/06(金) 14:24:29 ] [1] 授業単元:アルゴリズム [2] 問題文(含コード&リンク): www.logos.ic.i.u-tokyo.ac.jp/icpc2007/jp/index.html [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 2009年2月10日13:00まで [5] その他の制限:特になし ACM国際大学対抗プログラミングコンテスト国内予選2007問題Bです 既出だったらすまん お頼みもうします
332 名前:デフォルトの名無しさん [2009/02/06(金) 14:59:00 ] [1] 授業単元: C言語プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8831.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: [3.3] 言語: C [4] 期限: ([2009年02月07日20:00まで] [5] その他の制限:
333 名前:デフォルトの名無しさん [2009/02/06(金) 15:08:21 ] [1] 授業単元: C言語プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8832.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: [3.3] 言語: C [4] 期限: ([2009年02月07日20:00まで] [5] その他の制限:
334 名前:デフォルトの名無しさん [2009/02/06(金) 15:15:00 ] [1] 授業単元:数値解析 [2] 問題文(含コード&リンク) (1)区間演算ライブラリを作れ。(加減乗除のみでもOK) (2)Gaussの消去法のプログラムを作り、それを区間演算化せよ 以上ですが、ソースコードのみでもかまいません [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限:明日20時まで [5] その他の制限: 特になし
335 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:25:11 ] >>334 > 以上ですが、ソースコードのみでもかまいません ソースコード以外だと、何が付くの?
336 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:41:34 ] >>335 それだけじゃない > [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) 『等』・・・・こいつ相当のマニアか。 開発環境が書ききれないほど。ドンと来い。 > [3.3] 言語: (C/C++/どちらでも可 のいずれか) pu-w
337 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:51:08 ] >>332 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8833.txt
338 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:58:57 ] >>337 どうしようもない時以外に、goto使う奴は どうしようもない奴だと思うぞ。 elseで全部つなげば解決じゃないですか。
339 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:13:48 ] >>331 素数を出すアルゴリズムがアレなのでめっちゃ遅いけど。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8834.c
340 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:23:22 ] >>338 >>332 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8835.txt
341 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:24:18 ] >>338 しーっ・・・
342 名前:338 mailto:sage [2009/02/06(金) 16:30:32 ] >>341 これだけは言わせてくれ。>>340 ネタ乙。
343 名前:339 mailto:sage [2009/02/06(金) 16:31:29 ] 問題勘違いした…。 アジア地区予選の問題やってたorz
344 名前:デフォルトの名無しさん [2009/02/06(金) 16:40:36 ] >>333 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8836.txt
345 名前:デフォルトの名無しさん [2009/02/06(金) 17:31:56 ] ちょっと漏れがあったようなので;; [1] 授業単元:数値解析 [2] 問題文(含コード&リンク) (1)区間演算ライブラリを作れ。(加減乗除のみでもOK) (2)Gaussの消去法のプログラムを作り、それを区間演算化せよ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:どちらでも可 [4] 期限:明日20時まで [5] その他の制限: 特になし
346 名前:313 mailto:sage [2009/02/06(金) 20:57:11 ] >>324 >>328 324さんのプログラムを328さんの言うように修正してみたところ データを読み込み、表示されるところまではいくのですが全ての数値が0になってしまいます。 どうすればいいでしょうか。。。
347 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:06:23 ] >>327 ニュートン法で100回も反復するとか時間の無駄だからな 初期値が悪くてもせいぜい10回だ
348 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:45:25 ] >>331 なんとなく、計算できているような気がする。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8838.c
349 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 04:11:05 ] >>348 関数とか要らないことに気づいたので、大分、短くなった。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8839.c
350 名前:325 mailto:sage [2009/02/07(土) 04:18:57 ] >>326 double total(Student st){ // return (st.ascore + st.bscore + st.cscore); double a = (st.ascore + st.bscore + st.cscore); return a; } >>346 // printf("%d%lf%lf%lf",&(st[i].number),&(st[i].ascore),&(st[i].bscore),&(st[i].cscore)); printf("%d%lf%lf%lf", (st[i].number), (st[i].ascore), (st[i].bscore), (st[i].cscore));
351 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 04:21:55 ] >>349 すごい短縮だな。(2階層くらいで関数化したら、もっと打ちやすかったんじゃ) でも、元ファイルc++だろ? >>331 はC指定かかってるよ。
352 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 04:33:39 ] >>351 C++ではないよ。-std=c99つけないとコンパイルできないけど。
353 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 04:48:34 ] >>352 「-std=c99つければ、gccでもコンパイルできるよ」かな?
354 名前:325 mailto:sage [2009/02/07(土) 04:54:11 ] >>326 double a; do{ while((a=total(st[pl])) > x) pl++; while((a=total(st[pr])) < x) pr--; >>346 悪い、間違えた。君の言うとおりだ。
355 名前:325 mailto:sage [2009/02/07(土) 05:01:10 ] >>326 double a; do{ pc = (pl + pr) / 2; if((a=total(st[pc])) == key) return pc; else if((a=total(st[pc])) > key)
356 名前:デフォルトの名無しさん [2009/02/07(土) 13:01:57 ] >>339 >>343 >>348 >>349 >>351->>353 有難うございます アジア地区のもやってみたかったので助かりました なんかテストいけそうな気がする
357 名前:デフォルトの名無しさん [2009/02/07(土) 13:17:05 ] wwwwwwwwwwwwwwwwww
358 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 13:24:44 ] >>356 > なんかテストいけそうな気がする ありえねー・・・
359 名前:325 mailto:sage [2009/02/07(土) 14:50:36 ] >>326 gcc -O3 8828.c -o 8828.exe
360 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:34:38 ] >>356 あるとおもいます。
361 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 16:48:39 ] ??
362 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:06:55 ] 説明しよう! >起 >>356 いけそうな気が! >承 >>358 ありえねー・・ >転 >>360 あると思います。 >結 >>361 ?? ??に入る言葉を(ry
363 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:11:40 ] 詩吟?
364 名前:326 mailto:sage [2009/02/07(土) 18:31:45 ] >>325 ありがとうございます。 Rankingの表示が出ないんですが簡単に治せますでしょうか。
365 名前:326 mailto:sage [2009/02/07(土) 18:42:21 ] return plにしたらできました!ありがとうございます。
366 名前:325 mailto:sage [2009/02/07(土) 18:55:07 ] え?return pl; って、何行目?参考までに。