ページ 11

振り分け問題

Posted: 2010年12月07日(火) 16:59
by みやび
はじめましてみやびです。

私はC言語に関して全くの初心者なので教えて頂けないでしょうか。

現在、学校におけるクラス編成について考えているのですが

例えば1学年で男子80人、女子80人、計160人いる生徒を4クラスに1クラス40人ずつ分けるとします。このときのプログラムがわかる方いらっしゃらないでしょうか。

条件として、

・各クラス成績がなるべく均等になるようにする。

・男女比はなるべく均等にする。

わかる方がいましたら、よろしくお願いします。

Re: 振り分け問題

Posted: 2010年12月07日(火) 17:16
by softya(ソフト屋)
どう見ても学校の課題だと思われますので、フォーラムルールに従って補足をお願いします。

Re: 振り分け問題

Posted: 2010年12月07日(火) 17:19
by non
なにをもって「わかる人」なのか。題意なら、1クラス男20名、女20名で割り振れば良いので
プログラムするまでもないのですが。

まず、学校の宿題なのか、自分で勉強している課題なのかをお知らせください。

仮に学校の課題なら、与えられた課題を正確に記述してください。
何が、固定値で何が変数として与えられるのか。また、どこまで習っているのかなどです。
フォーラムルールに従ってもらえるとアドバイスしやすいです。

Re: 振り分け問題

Posted: 2010年12月07日(火) 17:27
by non
おお、ダブった。
よく読めば、成績で均等に割り振らなければいけないと書いてあった。
となれば、配列は習っていると考えるべきか。
もちろん、ソートもすでに習っていると思われる。
男か女かという情報もきっと、必要と思われるが、習っているのは1次元配列か、
それとも多次元配列か?もしかしたら構造体か?

クラス数や、定員、男女の数は固定でしょうか?

Re: 振り分け問題

Posted: 2010年12月07日(火) 17:37
by bitter_fox
>>成績で均等に割り振らなければいけない

単純に考えると、ランダムに選んだら自然と均等に振り分けられてるのでは??と思ったのだが、違うのだろうか・・・(男女比も同様)

どうなんでしょう?

Re: 振り分け問題

Posted: 2010年12月07日(火) 20:33
by Dixq (管理人)
> みやびさん

こんにちは。
これは学校の宿題なのでしょうか?それとも本当にクラス編成を?
成績のデータはどうやって取り込みますか?ファイルから?一つずつ手入力?
後、男女比を優先するか、成績の均一さを優先するかでプログラムは変わって来そうです。
もう少し仕様を明確にしてもらえると確かな回答が集まると思いますよ。
また、もしC言語で実装しなければならない場合、何が解らないかを明確にしたり、
途中まで出来ているソースコードがあればそれを提示したりするとスムーズに情報交換が出来ると思います。

Re: 振り分け問題

Posted: 2010年12月08日(水) 15:38
by みやび
みなさんありがとうございます。

実際に中学校のクラス編成をしようとしているのですが、本当になにもわかっていない私がいきなり考えるのも無理があるので、基本的なことから考えようと思い質問させていただきました。

学校の宿題ではなく、自分で勉強しています。

クラス数や定員、男女の数は固定で、成績の均一さを優先にした場合ではどのようなプログラムになるのかを教えていただきたいです。

Re: 振り分け問題

Posted: 2010年12月08日(水) 16:01
by ookami
他の方も言われていますが、フォーラムルールに従って補足してください。
画面上部の「フォーラムルールはこちら」をクリックすると、読むことができます。

> 実際に中学校のクラス編成をしようとしている

え、学校の課題などではなく、実際にクラス分けをしようとしているということは
学校の先生ですか??

プログラムの勉強が目的でなければ、
手作業でやるのが一番早いと思います。

Re: 振り分け問題

Posted: 2010年12月08日(水) 16:04
by softya(ソフト屋)
>クラス数や定員、男女の数は固定で、成績の均一さを優先にした場合ではどのようなプログラムになるのかを教えていただきたいです。

そこで必要なのがフォーラムルールなんです。
特に指定がないと、C言語のどのレベルの文法まで使って良いのか予測がつきません。
何処まで理解されていますか?

>クラス数や定員、男女の数は固定で、成績の均一さを優先にした場合ではどのようなプログラムになるのかを教えていただきたいです。

それは、プログラム以前に仮定が矛盾しています。
男女の数を固定にしておいて、成績の均一さを優先には出来ません。男女を別々のものとみなして均一にすることは出来ますが。その場合平均的な成績は男女で差が出ると思います。
机上作業できないことをプログラムに求めてはいけませんよ。
基本的に机上作業できることを高速化するのがプログラムですので、机上作業できる方法をまず考えてください。

Re: 振り分け問題

Posted: 2010年12月08日(水) 18:20
by Dixq (管理人)
これはC言語の学習をすることを目的とする質問ではなく、単純にクラス編成をしたいという事なのでしょうか?
また、みやびさんは学校の教師でありながら趣味でプログラムの勉強をされているということでしょうか?

今までのやり取りでもおわかりかと思いますが、円滑に情報交換する事において、

・回答者が聞いたことに全て答える
・回答者が回答した事をきちんと実践する

ということが非常に重要です。

例えば「予算と納期について教えて下さい」と回答者が聞いた時、「納期は1週間です」とだけ答えるとまた、回答者は「予算はいくらですか?」と聞かなければなりません。
次に投稿される際は是非回答者が聞いている事に全て答えているか確認してみて下さい。
なお、答えられない事情があれば「答えられません」と書くことが答えになります。

私がお聞きしたい事はsoftyaさんと被るので省略します。

Re: 振り分け問題

Posted: 2010年12月08日(水) 18:51
by non
学校の課題ではなく、自分で作ってみたいのですね。それは良いことです。
他の人も言われているように、まず、コンピュータではなく、手で作業するとしたら、どうするのかを決めてください。
私なら、
まず、男と女のグループに分けて、点数の大きい順に並べます。
そして、男の1番から
1組、2組、3組、4組、4組、3組、・・・・の順番に割り振ります。
また、女の1番から
4組、3組、2組、1組、1組、2組・・・・の順番に割り振ります。
あなたならどうしますか?

Re: 振り分け問題

Posted: 2010年12月08日(水) 20:09
by dic
テレビ「ヘキサゴン」から参考にして
男での成績一覧をつくり 上から男1 男2 男3 男4・・・とします
次に女の成績一覧をつくり 上から女1 女2 女3 女4・・・とします
そして、これを交互に組み合わせます
クラス1 男1 女1 男5 女5・・・
クラス2 男2 女2 男6 女6・・・
クラス3 男3 女3 男7 女7・・・
クラス4 男4 女4 男8 女8・・・
というのはどうでしょうか?

Re: 振り分け問題

Posted: 2010年12月08日(水) 23:47
by たいちう
> ・各クラス成績がなるべく均等になるようにする。
> ・男女比はなるべく均等にする。

「なるべく」が複数あると、匙加減次第になってしまいます。
男女比は「必ず」均等にする、と条件を変更することはできますか?
男女それぞれの人数が4の倍数とは限らないので、
どのクラスの男子(女子)生徒数も2以上の差が出ないようにする、とか。


>dicさん

その方法だと、クラスの成績(例えば前回のテストの平均点)は必ず
クラス1 ≧ クラス2 ≧ クラス3 ≧ クラス4
となりますね。大きな差は付かないだろうから構わないかもしれませんが。


# 遺伝的アルゴリズムなどでは、複数の「なるべく」を扱うための評価方法を導入します。
# 興味があるならば調べてみて下さい。