[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 06/02 11:28 / Filesize : 251 KB / Number-of Response : 829
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

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



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ではあまり差がなくなってくるだろう。






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

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

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