プロが教える店舗&オフィスのセキュリティ対策術

* 列結果をもとにトップ10(上位10件)を表示する。
ただし、要素数が10件以下の時は全要素を表示、
10件を超えるときは10件全て表示後、11件目以後にも
にも件目と同点のものがあれば、同点のものを全てを表示する

このアルゴリズムの流れ図をどう書いたらいいのかどうしても分かりません。
 開始
 ↓
処理:xxx
 ↓
 ・ 
 ・
 ・
フローチャートまではかけないと思うのでよければ分かる人教えてください

A 回答 (3件)

こんな風に考えましたけど、


適当なので、あまりアテにしないでくださいね。

(1)データを順位でソート
 ↓
(2)以下の処理を繰り返す
  何件目のデータなのか見る
   →10件目までならそのまま表示
   →11件目以降で、10位のデータと同じ値なら表示
   →11件目以降で、10位のデータと異なるなら(3)へ

(3)処理終了
    • good
    • 0

基本的にはただのループでしょう。


ループを中断する条件が複雑というだけの話だと思います。
フローチャートでは条件分岐のひし形の中だけに複雑な条件を書くことになります。
コードはつぎのような感じでしょう(正しいかどうかの検証はしていませんが)。

// 終了条件はない。
for (int i = 0; ; i++) {
// 1から数えて11位かそれより下位の場合(0から数えて10位かそれより下位の場合)、
// 直前の値と違っていたらループを抜ける。
if (i >= 10 && x[i - 1] != x[i]) {
break;
}
System.out.println("x[" + i + "] = " + x[i]);
}
    • good
    • 0

そういう場合は大きな流れをまず作図する



開始→データ読込→データ解析→解析結果出力→終了

今回の場合は データ解析を別の流れ図として展開する
データ解析:開始(引数:読込データ)→ソート→順位付け(順位割当用配列使用)→10位まで取り出し→データ解析:終了(返値:抽出済データ)

これでも流れ図が完成しないようなら、更に個々の処理を展開して行く事で目的の流れ図にたどり着ける筈。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!