【擬似言語⑪課題】重複排除 | 配列に登録済みか確認(基本情報技術者, 科目B, アルゴリズム)
このNoteでは、{1, 2, 2, 3}を{1, 2, 3}にするような「重複排除」に挑戦します。ある値が登録済みか否かを判定する感じ。名簿作りや統計分析に使えます。
事前に >【擬似言語⑪】ずらしループ(リーグ戦, 文字列比較)のNote を学習すると組み易いです。ループカウンタ(i, j)を別々に制御する手口。
テキストの基礎を生かして、プログラム的な考察/工夫を学んでいきます。基礎と実用にギャップを感じる方のために作りました。
>【FEB】擬似言語の教科書Note
ぜひ一緒に学習を進めていきましょう!
このNoteは、私がIT専門学校で授業したことを基に作成しています。IT専門学校でFEは第一目標として、カリキュラムが構築されています。何も知らずに入学しても、1年生10月にはFE合格していきますよ。実績ある教育ノウハウを詰め込んだので、少しでも信頼して頂けたら嬉しいです。
>全Noteへのリンク(FE節)
※科目Aのテーマ別/科目B/旧FE午後など沢山作りました!
下準備 | 登録済みか判定する関数
配列arrayにtargetが含まれているかを判定する関数を作ります。
関数名:isValueInArray
引数:整数型の配列array, 整数型の変数target
返り値:論理型。含まれてたらtrue, なかったらfalse
配列arrayの要素を1個ずつtargetと比較、をループするアルゴリズム。考えてみて下さいね。論理型にも慣れておきます。
私の答えは下記。
○論理型: isValueInArray(整数型の配列: array, 整数型: target)
整数型: i
整数型: length ← arrayの要素数
for (i を 1 から length まで 1 ずつ増やす)
if (array[i] と target が等しい)
return true
endif
endfor
return false処理のイメージ/データ
重複を排除したデータ列を表示する関数を作ります。
データは引数で入力される。
整数型の配列arrayで。
重複排除したデータは配列resultに記録する。
※「末尾に追加」を使って良い。resultにtargetが登録済みを確認する。
登録なかったら、resultの末尾に追加。
登録されていたら、何もしない。
isValueInArrayで登録判定できる。
簡単なデータで処理手順と変数/配列の状況をトレースします。
例えば、array={1, 2, 2, 3}の時、result={1, 2, 3}が表示される。下記が処理と結果の流れ。
isValueInArray関数で、result={}とtarget=1の時、resultに1の登録ないのでresult={1}と登録する。
result={1}とtarget=2の時、登録ないのでresult={1, 2}にする。
result={1, 2}とtarget=2の時、2は登録されてたので何もしない。
result={1, 2}とtarget=3の時、3は登録されてないのでresult={1, 2, 3}にする。
ヒントと答え | 穴埋め課題
穴埋め形式にしてみました。【埋めてね】を埋めて見てください。
自分で組みたい方は、宣言部分まで見て組んでみてくださいね。
○手続き名: removeDuplicates(整数型の配列: array)
整数型: i
整数型: length ← arrayの要素数
整数型の配列: result ← {}
for (i を 1 から 【埋めてね】 まで 1 ずつ増やす)
if (isValueInArray(【埋めてね】) が 【埋めてね】と等しい)
resultの末尾に 【埋めてね】を追加
endif
endfor
resultを表示下記が答え。
ここから先は
メンバーシップ
¥ 500 /月
学習方法・問題特集のNoteは全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ
