
Perlを使用しまして、以下の様な評価を自動処理したいと考えていますが、良い方法がありましたら教えてください。
例えば、5人の生徒に100点満点の国語のテストを受けてもらい、その点数の上位から10段階評価を付けていくとします
ここで
生徒A:100点
生徒B:80点
生徒C:60点
生徒D:90点
生徒E:95点
として点数がバラバラの場合、生徒の名前の配列を点数で逆順ソートをして、点数の高い方から
生徒A:100点 → 評価10
生徒E:95点 → 評価9
生徒D:90点 → 評価8
生徒B:80点 → 評価7
生徒C:60点 → 評価6
という具合にしますプログラムは簡単に思いつきます
しかし、
生徒F:100点
生徒G:100点
生徒H:90点
生徒I:95点
生徒J:95点
となった場合、
生徒F:100点 → 評価10
生徒G:100点 → 同点なので評価10
生徒I:95点 → 評価10が2人いるので評価8
生徒J:95点 → 同様に評価8
生徒H:90点 → 上に4人いるので評価6
としたい場合、生徒の名前の配列のソートだけでは実現しません
ここで、何か良い関数ですとか、良い方法ですとかありましたら教えて欲しいです
配列を点数で逆順ソートした後で、配列から要素を1つ1つ取り出して、その点数の比較と同じ点数のカウント
(点数が異なったらカウントをリセット)を地道に行なっていくしかないのでしょうか…
No.1ベストアンサー
- 回答日時:
> 配列を点数で逆順ソートした後で、配列から要素を1つ1つ取り出して、その点数の比較と同じ点数のカウント
>(点数が異なったらカウントをリセット)を地道に行なっていくしかないのでしょうか…
「しかない」ってことは無いでしょうが、他に思いつかないなら、確実にできる方法を使えばいいのではないでしょうか。
SQL で同率含む順位を求めるRANKという関数があるので、Perlでもないかと思いCPANで検索すると
Sort::Rank というモジュールはあるようです。
http://search.cpan.org/~andya/Sort-Rank-v0.0.2/l …
ありがとうございます
他の質問者さんの質問&回答者さんの回答ですと、点数のみからのランク付けしかありませんで…
名前+点数からのランク付けは嬉しいです
頑張って翻訳して理解します…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlのプログラミング 部分入れ...
-
Perlでファイルの末尾から指定...
-
テキストファイルで提出とは?
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
perlをバージョンアップしたら...
-
Perlで時間の計算
-
Wallpaper Engineでおすすめの...
-
Perl言語について。
-
perlで2次元配列をサブルーチ...
-
Strawberry Perl for Windows ...
-
#!/usr/bin/perlで書きだしたCG...
-
perl の open について教えてく...
-
INDIRECT 横に再度抽出したい
-
アルファベットに付いて質問し...
-
openした後、closeしないでプロ...
-
画像が表示でnull; this.src
-
VBA変数をFunction.VLookupの戻...
-
perlのflock関数でロックをかけ...
-
Perl の外部モジュールの利用方法
-
TeraPadエディターの操作方法に...
-
bashスクリプト
-
perlの構文でカンマの意味が分...
おすすめ情報