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/
477 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:04:56 ] >>453 アンカー付けろ テンプレ使え 数字は半角(まぁ全角でも困らないけどさ)
478 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:08:55 ] >>471 3割引だったら7倍してから10で割ってみてはどうだろう。 teika * 7 / 10
479 名前:デフォルトの名無しさん [2008/06/23(月) 18:12:32 ] >>415 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7027.txt 宿題っぽくしてみた。 入力されたデーターが不正な場合は飛ぶので、それがダメなら適当に直して
480 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:18:20 ] >>471 1円どっちにずれてる? 割る前に2円足すか1円引けばいいんじゃね?
481 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:20:06 ] >>480 定価を入力してからENTERを押してください。 1000 1割引だと 900円 2割引だと 800円 3割引だと 699円 4割引だと 599円 5割引だと 500円 6割引だと 400円 7割引だと 299円 8割引だと 200円 9割引だと 100円
482 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:22:46 ] >>481 round ceil floor のいずれを使ってもピッタリの数値になるのに キャスト(int)による型変換のときだけ1円ずれる めんどくせー
483 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:36:31 ] どなたか>>90 お願いします
484 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:46:59 ] >>478 なるほど。 そういう風にすればいいのですね。 ありがとう。 >>480 >>481 の通りです。 >>482 めんどいっすねw でも宿題じゃなくてなんとなく答えも見えたんでおkです! 皆様ありがとう。
485 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:51:51 ] >>446 いくらなんでも簡単すぎだろ。 丸投げしすぎ。
486 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 19:03:05 ] >>456 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7028.txt
487 名前:446 [2008/06/23(月) 19:07:34 ] >>485 そうですか。反省します。
488 名前:451 [2008/06/23(月) 19:09:41 ] >>470 サンクス
489 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 19:41:33 ] >>483 >>90 〜省略〜 BITREE_TYPE sumValue(BITREE_NODE *p){ BITREE_TYPE total = 0; if(p->left) total += sumValue(p->left); if(p->right) total += sumValue(p->right); total += p->value; return total; } int main(int args, char **argv){ BITREE_NODE *p; int end=0; if(args < 2) return 1; p = inputBITree(argv+1, args-1, &end); printf("合計は %d です\n", sumValue(p)); printf("左部分木の合計は %d です\n", sumValue(p->left)); printf("右部分木の合計は %d です\n", sumValue(p->right)); destroyBITree(p); return 0; }
490 名前:デフォルトの名無しさん [2008/06/23(月) 19:55:16 ] [1]プログラミング言語C [2]@3より大きく、入力された上限の数未満の全ての自然数かつ非素数に ついて、3で割り切れるものは無視し、3で割った余りが1のものは加算 し、余りが2のものは減算して合計を求めよ。 A次のように表示する Input Upper Limit : 11 [Enter] Answer is : 6 B配列、平方根は使ってはならない。 [3]@windows vista Agcc BC言語 [4]2008/6/23/21:00まで [5]今年の春から始めたので、まだ基礎のほうです。 よろしくお願いします。
491 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 20:38:26 ] [1] 授業単元: 課題 [2] 問題文 h ttp://www.elc.ees.saitama-u.ac.jp/ProgrammingI/kadai/kadai1.pdf h ttp://www.elc.ees.saitama-u.ac.jp/ProgrammingI/No07-6.pdf [3] 環境 [3.1] OS : windows vista [3.2] コンパイラ名とバージョン: Borland C++Compiler Version 2.31 [3.3] 言語: C [4] 期限: 6月26日(印刷の必要があるため) [5] その他の制限: 特になし 身を晒す事になりますが、お願いします。
492 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 20:46:24 ] >>490 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7029.txt
493 名前:491 mailto:sage [2008/06/23(月) 20:52:41 ] h ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7030.txt πの計算のコンパイルが通るところまで作りました。 Cはじめて2ヶ月で出た課題です。 ほとんど回答は載せてあるからこのレベルらしいですが、 正直見直しても全く分からないです。
494 名前:491 mailto:sage [2008/06/23(月) 20:55:59 ] h ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7030.txt πの計算のコンパイルが通るところまで作りました。 Cはじめて2ヶ月で出た課題です。 ほとんど回答は載せてあるからこのレベルらしいですが、 正直見直しても全く分からないです。
495 名前:デフォルトの名無しさん [2008/06/23(月) 20:58:38 ] >>492 マヂ助かった!!ありがとう!!
496 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:03:23 ] >>413 8x8の解がいくつあるのか試してみて欲しいな
497 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:08:47 ] >>490 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7031.c
498 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:14:04 ] >>490 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7032.c
499 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:20:12 ] >>489 ありがとうございます。 ./a.out [ 6 [ 8 1 5 ] [ 3 _ 9 ] ]と入力すると $ ./a.out [ 6 [ 8 1 5 ] [ 3 _ 9 ] ] 合計は 29 です 左部分木の合計は 14 です 右部分木の合計は 9 です という風に出て、実効例どおりに行かないのですが、どこがおかしいのでしょうか? 省略と書いてあるところには、kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6978.txt の ・2分木の基本的な操作関数をそのまま貼り付けただけです
500 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:28:06 ] 比較的簡単な問題が出るとここぞとばかりに回答が提示されるよね
501 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:29:24 ] 簡単な問題解いてなんの意味があるって感じだよな
502 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:31:25 ] 肩慣らし
503 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:32:29 ] 簡単な問題をだらだらと置いておいても意味ないし
504 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:33:01 ] >>500 だから何?お前基準で簡単とか言われても基準が曖昧なんだが。 お前が簡単だと思っているだけで、実際にお前が解いてもミスだらけなんじゃね?
505 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:33:13 ] >>501 それが解けない奴の為のスレだw
506 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:33:21 ] 【回答テンプレ】 [1] 回答レベル:ノーチェック/コンパイル済/テスト済/清書済 [2] 回答 短いものは、直接記入可 もしくはリンク [3] 開発環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイル/テストに使用した コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4]コメント なーんてね
507 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:45:21 ] >>504 ひとつの問題に対して複数者から解答が上がったら概ね平易 ひとつの問題に対して複数者が議論を始めたら面白みのある問題 ミスだらけかもね
508 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:51:39 ] 誰かの解答に対して議論が始まることもあるけどなー
509 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:53:40 ] >>507 うん、だから お前基準 ほど 難易度 として当てにならないっつってんだが? 一言居士はうざいって意味が分からない?四の五の言わずにてめぇレスしろよw
510 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:55:56 ] >>492 はなぜ (i+1) やら、i=0からスタートしているのかと? >>490 > 入力された上限の数未満 おかげで未満じゃなくなってるし・・・
511 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:58:41 ] なんという自己参照定義 循環論証
512 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:07:59 ] >>509 もうお前一言居士ってコテハンにしろよ
513 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:10:56 ] ってか>>507 が自分基準で難易度の話をしているように読めるのなら文盲だな あ、文盲って言葉も使っていいよ。自分が知らない他人を批判する言葉とか大好きそうw
514 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:12:27 ] すいません、この問題をおねがいします。 [1] 授業単元: Cプログラミング演習 [2] 問題文(含コード&リンク) 2以上32767以下の素数を求める。 整数nが素数かどうかは、2から√nまでの素数で割り切れるかどうか判定して、 そのすべてで割り切れなければnは素数となる。また、2以外の偶数は素数にならないから、 3以上の整数については奇数だけを対象にして求めればよい。 余力があれば、long型を対象にして2から2^31-1までの素数を求めてみよ。 [3] 環境 [3.1] OS: (Windows vista) [3.2] コンパイラ名とバージョン: (visual studio 2005 ) [3.3] 言語: (C言語) [4] 期限:今週中 [5] その他の制限: (自分のレベルはかなり低いので難しい関数はなしでお願いします・・・)
515 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:21:31 ] すみませんがこの問題をお願いします。 変数(int型 または double型 または 両方),入出力(scanf関数,printf関数),条件分岐(if else文)をすべて用いて, 各自自由なプログラムを作成する. 課題提出のメールには,必ずそのプログラムの仕様の説明文をつけること (そのプログラムが何をするものなのかを説明すること).
516 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:24:08 ] >>515 なんという独創的なw
517 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:27:08 ] >>515 楽しすぎるwww 大まかに、どんなの作りたいかとか買いてけよw テストの点数とか、体重の判定とかなんでもいいからよw
518 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:31:31 ] HDDをクラッシュさせるプログラムはどうかな? 成績表を破壊するプログラムとか
519 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:32:52 ] >>515 このスレの解答を適当に拾えばおk
520 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:41:15 ] むしろwikiの回答例でも持って池。
521 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:41:37 ] >>515 int scanf printf if else でググると良い
522 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:44:02 ] >>515 wikiのマスターマインド(Hit&Blow)がいいんじゃない?
523 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:46:24 ] 流れ的にサウンドノベルしかないだろ
524 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:49:44 ] CG曲シナリオシステム全部1人でか
525 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:50:07 ] むしろなんかシューティング系を(ry
526 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:52:50 ] >>523 が言ってるのは>>438 だな
527 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 23:04:07 ] >>514 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7033.c
528 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 23:07:53 ] >>514 > long型を対象にして2から2^31-1までの素数を求めてみよ。 PCの性能にもよるけど、物理的に時間が掛かるんで却下。
529 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 23:12:20 ] >>526 yes
530 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 23:22:56 ] >>499 BITREE_NODE *inputBITree(char *str[], int len, int *end){ 〜〜省略〜〜 *end = i + i; return p; } *end = i + i; を *end = i + 1; に変更
531 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 23:41:29 ] >>522 >wikiのマスターマインド(Hit&Blow) 実行してみたんですが、どうやって終わらせるんですか?
532 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 23:42:56 ] Ctrl と c 同時押しすれば終わるんじゃない
533 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 23:47:29 ] >>528 70.3秒かかったよ これって長すぎる? アルゴリズムはエラトステネスの篩使用
534 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 23:54:44 ] >>533 >>514 の条件はエラトステネスの篩じゃないだろ
535 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 23:58:59 ] エラトステネスの篩じゃね?
536 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:00:12 ] 全然違う
537 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:00:27 ] ふるいじゃないよ
538 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:11:13 ] >>530 ありがとうございます。数字はしっかりでました! 実行例にある 入力データ [ 6 [ 8 [ 1 _ _ ] 5 _ _ ] ] [3 _ [ 9 _ _ ] ] ] というのはどうやって出せばいいのでしょうか?
539 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:13:27 ] [1] 授業単元:C言語実習 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7035.txt [3] 環境 [3.1] OS: WinXP [3.2] コンパイラ名とバージョン: Borland C++Compiler V2.31 [3.3] 言語: C [4] 期限: 08年6月25日(水曜日・明日) [5] その他の制限: 特に無し 就活で浦島状態です、助けてください
540 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:14:54 ] >>539 浦島状態って。 C#ならまだしも、いつの時代の人?
541 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:34:36 ] >>538 printBITree(p, 0, 0); 値の間にスペース入れたいならprintSubtreeの中をいじくる
542 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:37:42 ] >>539 #include <stdio.h> int main(void) { char str[110], *p[10], temp[11]; int i, j, cnt[10] = {0}, n = 0; p[0] = str; for(i=0; i<10; i++) { printf("入力文字列==>"); fgets(temp, sizeof temp, stdin); for(j=0; temp[j]; j++) if(temp[j] == '\n') temp[j] = '\0'; if(strcmp(temp, "end")==0 || strcmp(temp, "END")==0) break; for(j=0; j<n; j++) { if(strcmp(p[j], temp)==0) { cnt[j]++; break; } } if(j==n) { char *dst = p[n], *src = temp; while(*dst++=*src++); p[n+1] = dst; cnt[n]++; n++; } } printf("*** 集計結果 ***\n"); for(i=0; i<n; i++) printf("%s : %d\n", p[i], cnt[i]); return 0; }
543 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:52:47 ] #include <string.h>忘れてた
544 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:55:44 ] strcmp関数は作ってしまえ
545 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:09:56 ] [1] 授業単元:計算機 [2] 問題文(含コード&リンク): 8パズルを解く上で、状態の重複をチェックするにはどのようなプログラムを加えればよいか考えよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: [3.3] 言語:C [4] 期限: 明日 どなたかよろしくお願いします。
546 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:14:14 ] [1] 授業単元: アルゴリズム [2] 問題文(含コード&リンク): ポインタの課題で、数値の大小を判別するプログラムです。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7036.txt [3] 環境 [3.1] OS: VineLinux [3.2] コンパイラ名とバージョン: GNOME gcc [3.3] 言語: C言語 [4] 期限:6/25 PM:2時
547 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:17:08 ] >>506 よろしく
548 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:18:30 ] 8パズルとやらをググってみたけど >状態の重複 ってどんな状況だ? こんなんか? bool bCheckOverlap(int x, int y){ if(puzzle[x][y]>0){ return false; } return true; }
549 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:22:59 ] 動かしたとき同じ状態に戻らないようにするためのチェックじゃない?
550 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:25:05 ] >>546 A void func(int *a, int *b); B void func(int *a, int *b) { if(*a < *b) { int temp = *a: *a = *b; *b = temp; } }
551 名前:545 mailto:sage [2008/06/24(火) 01:26:32 ] >>549 さんの仰るとおり、過去と同じ状態になっていないかチェックして無駄な処理をしないようにというものです。 言葉足らずで申し訳ありません。
552 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:32:44 ] >>550 ありがとうございます。 「void func(int *a, int *b);」こうやって宣言するんですね、この段階で自分はつまづいてました。 またこちらもお願いできますでしょうか?これで課題がすべて終わるのでお願いします。 [1] 授業単元: アルゴリズム [2] 問題文(含コード&リンク): 関数は戻り値をひとつしか返せないが、ポインタを使うと複数の値を呼び出し側に 返すことができる。秒数を与えると、それが何時間何分何秒にあたるかを計算する 関数void calctime(int sec, int *hp, int *mp, int *sp);を作成せよ。 たとえば、calctime(3725, &h, &m, &s); として呼び出すとh=1, m=2, s=5となる (1時間2分5秒は3725秒) (解説) main関数側で各関数を用意し、計算する関数を呼び出す。 結果の表示は関数の呼び出しが終わった後、main関数側で行えばよい。 秒→時間、分、秒の計算は単純に割り算の商と余りを用いればよい。 [3] 環境 [3.1] OS: VineLinux [3.2] コンパイラ名とバージョン: GNOME gcc [3.3] 言語: C言語 [4] 期限:6/25 PM:2時
553 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:39:25 ] >>545 1 2 3 4 5 6 7 8 - という状態なら123456780という数字を覚えておくとか。 3 4 2 1 7 - 8 5 6 という状態なら342170856という数字 こういうのをソートされた線形リストにいれておけばまあ悪くないのでは?
554 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:42:38 ] >>552 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7038.c
555 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:46:55 ] >>545 [1]回答レベル:ヒント [2]コード:なし [3]環境:省略 [4]コメント: つ9進数
556 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:49:16 ] >>554 本当に回答がお早いです。自分もそれくらいになりたいですorz なにはともあれ、ありがとうございます。 本当に助かりました。
557 名前:553 mailto:sage [2008/06/24(火) 02:01:26 ] >>553 線形リストじゃ手が長くなった場合の探索コストが大きいかな。メモリも食うし。 静的に9^9Byte≒370MB確保しておくのもなんだかアレだしなんか良い案あるかしら
558 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 02:04:30 ] [1] 授業単元: C言語演習U [2] 問題文(含コード&リンク): n個の文字列C0, C1, C2, ... ,Cn-1を読み込んだ後、C0, C1, C2, ... ,Cn-1を アルファベット順に並び替える関数を作成し、main関数でこの関数を呼び出すようにせよ。 ここでいうアルファベット順とは、例えば"Report Ha Dase"と入力すると、 " aaDeeHoprRst"のように大文字と小文字がある場合は小文字が先にくるように アルファベットの並べ替えを行なう。 (ヒント) 文字列を読み込んで、アスキーコード順に並び替えを行なう。 ただし、大文字と小文字が混在するので、そこは各自テクニックが必要。 なお、入力文字列中の「空白」は並び替え後、先頭にくる。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語: C言語 [4] 期限:2008.6.24 午後6時までの急ぎでお願いします。m(_ _)m
559 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 04:14:08 ] >>558 空白、アルファベット以外は出現順 #include <stdio.h> #include <string.h> void alphabetsort(char *dst, const char *src) { int count[256] = {0}, idx, i; char *p, label[256] = " aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"; idx = strlen(label); for( ; *src != '\0'; src++){ p = strchr(label, *src); if(p) count[p - label]++; else{ label[idx] = *src; count[idx] = 1; idx++; } } for(i = 0; i < 256; i++) while(count[i]-- > 0){ *dst = label[i]; dst++; } *dst = '\0'; } int main(void) { char buf[100], dst[100], *p; fgets(buf, sizeof(buf), stdin); p = strchr(buf, '\n'); if(p) *p = '\0'; alphabetsort(dst, buf); printf("%s\n", dst); return 0; }
560 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 04:15:24 ] >>558 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7039.c
561 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 04:30:18 ] >>559 >>560 両方、ありがとうございます。 どちらもせっかく作ってもらったので、両方使いたいところですが 今回は>>560 さんのコードを使わせていただきます。 コード中の説明やコードの作りが分かりやすかったので >>559 さんのコードもアスキーコード使用が基本的で良かったのですが、 文字列の並び替え部分が若干難しかったので、今回はごめんなさい。
562 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 05:40:13 ] 文字列を並び替える関数であって、並び替えた文字列を表示する関数じゃないと思うんだが。
563 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 05:43:49 ] それなら、順番に表示する部分を配列に格納すりゃ良い
564 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 05:49:39 ] n個の文字列って指定からガン無視してるソースに突っ込むなんてw
565 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 05:58:18 ] でたよ、ソースを書きもせず、自分のアイデアも提示せずに 批判しかしない基地外。
566 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 05:59:34 ] >>561 本人?が良しとした時点で後からいちゃもんつけてもなぁ・・・ 後は本人が出来るなら、適当にやるだろうし。
567 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 06:11:23 ] 並び替えならバブルソートだ! void swap(char *a, char *b) { char temp = *a; *a = *b; *b = temp; } void sort(char *str) { int i, j, len = strlen(str); for(i=len-1; i>0; i--) { for(j=0; j<i; j++) { if(tolower(str[j]) > tolower(str[j+1])) swap(str + j, str + j + 1); else if(tolower(str[j])==tolower(str[j+1])) { if(isupper(str[j]) && islower(str[j+1])) swap(str + j, str + j + 1); } } }
568 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 06:13:02 ] ソースを書かずに口出しする奴の方がどうかとw
569 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 06:14:08 ] >>561 が>>567 のコードを使ったら、>>559 ,>>560 両方から殴られることを 覚悟したほうがいい。w
570 名前:質問者のマナー遵守のお願い mailto:sage [2008/06/24(火) 06:40:52 ] 宿題を片付けるという趣旨とは言えども、回答テンプレに沿っていない すなわち、コードの品質に対する明示が無かったり、コメントが一切 無くコードそのものやコードへのリンクだけの場合は、参考に留める だけに留め、あくまでも独力でトライすることをおすすめします。 多くのコードは良心的で真面目ですが、中には>>438 のような悪辣 なコードもありますので、参考以上の扱いをすると災難に合う場合も あります。 なお、小さなプログラムコードの場合、簡単にその優劣は判断出来ま せん。コードは数学の問題と異なり、一度解いてしまえばおしまい というわけではなく、何度も実行されて書き直されて真価が評価され るものです。 宿題を自力で解けないレベルの人がその優劣の判断を出来ると は到底思えません。 複数の回答が出た場合でも、それに優劣を付けていると取られかね ない言動を取ることは質問者は絶対に避けて下さい。
571 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 06:44:23 ] 自分のソースにミスがあった場合、ソース書かなくても突っ込んでくれると有難いがな。
572 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 08:56:20 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6983.txt ヒント:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7040.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:CPad for Borland C++Compiler [3.3] 言語:C言語 [4] 期限:水曜まで [5] その他の制限:ポインタまで習いました ヒントをくれました。それでもわからないのでよろしくお願いします
573 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 09:41:26 ] [1] 授業単元:プログラミング [2] 問題文 3×3の行列の掛け算を行う関数を作り、標準入力から入力した行列を掛け算するプログラムを書け (ヒント 2重配列が必要。 double matrix[3][3];を使用) [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 6月26日まで [5] その他の制限: おねがいします><
574 名前:491 mailto:sage [2008/06/24(火) 10:00:41 ] 自己解決しますた いないかもしれないけど、協力して下さった方々 どうもです
575 名前:456 mailto:sage [2008/06/24(火) 10:54:36 ] >>486 わかりやすい回答ありがとうございます! 次からは自分でもできるよう参考してがんばります。
576 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 12:08:56 ] >>573 環境: 2005 Express + SDK #include <stdio.h> int main() { int i, j, k; double matrix1[3][3], matrix2[3][3],matrix3[3][3]; for(i=0;i<3;i++) { printf("INPUT 3 numbers. (%d of 3):", (i%3)+1 ); scanf("%lf%lf%lf", &(matrix1[i][0]), &(matrix1[i][1]), &(matrix1[i][2])); } for(i=0;i<3;i++) { printf("INPUT 3 numbers. (%d of 3):", (i%3)+1 ); scanf("%lf%lf%lf", &matrix2[i][0], &matrix2[i][1], &matrix2[i][2]); } for(i=0;i<3;i++) printf("%lf\t%lf\t%lf\n", matrix1[i][0], matrix1[i][1], matrix1[i][2]); putchar('\n'); for(i=0;i<3;i++) printf("%lf\t%lf\t%lf\n", matrix2[i][0], matrix2[i][1], matrix2[i][2]); puts(""); // A(i,k) * B(k,j) = C(i,j) for(i=0;i<3;i++) for(j=0;j<3;j++) { matrix3[i][j] = 0.0f; for(k=0;k<3;k++) matrix3[i][j] += matrix1[i][k] * matrix2[k][j]; } for(i=0;i<3;i++) printf("%lf\t%lf\t%lf\n", matrix3[i][0], matrix3[i][1], matrix3[i][2]); }
577 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 12:16:06 ] >>408 いろいろ試してみたが、AMDのプロセッサ(AthlonX2)はL1 Data Cacheが2Way-Set AssosiativeのためにCore 2 Duoのような 8Way-Set Assosiativeのマシンに特定の場面で大幅に負ける事がある。 データ・テーブルも今回は2個だがこれが10個〜20個と増えてくると AMDとIntelではあまり差がなくなってくるだろう。