学年

教科

質問の種類

情報:IT 高校生

情報:高3 [ウ]の部分がなぜ③になるのか分かりません。 iが 1〜kazu-1 になるから jは 0〜kazu-2 までは考えられたのですが、ここから kazu-2 が kazu-1-i になるのはなぜでしょうか、、教えてください🙇🏻

次の生徒 (S) と先生 (T) の会話文を読み, 空欄 解答群のうちから一つずつ選べ。 ア ~ に入れるのに最も適当なものを,後の 201 T:データを昇順または降順に並べ替えるアルゴリズムのことをソートといいます。まずはじめに,バブルソー トというアルゴリズムを考えてみましょう。 バブルソートは、配列の中の隣り合うデータの大小を比較し交 換を繰り返す方法です。 図1は、10個の要素を持つ配列 Data に対してバブルソートを行う場合の流れを 表しています。グラムの まず、配列の先頭とその次の要素を比較し, 左の方が大きければ右と交換する。 これを一つずつずらしなが ら配列の最後尾まで繰り返していき、最後尾まで繰り返したら1周目の比較が終了します。 S: つまり, 1周目の比較がすべて終了した段階で、 配列の最後尾には ア が入っているのですね。 イ T: その通りです。 2周目は、配列の を除いて1周目と同じように比較していきます。 これを繰り返 して、最後には配列が並び変わっているという具合ですね。図2はバブルソートのプログラムを表してい ます。 1071 配列 Data 77 52 89 48 97 3 18 62 33 29 1周目/ 1回目の比較 77 52 89 48 97 3 18 62 33 29 交換する 1周目/ 2回目の比較 52 77 89 48 97 3 18 62 33 29 交換しない (81) 1周目/3回目の比較 52 77 89 48 97 交換する 3 18 62 33 29 図1 配列 Data に対するバブルソートの流れ Irabid (1) (2) (Data) (3) (4) (5) Data = [77,52,89,48,97, 3,18,62,33,29] kazu = iを1から kazu 1まで1ずつ増やしながら繰り返す : を0から ウ まで1ずつ増やしながら繰り返す: もしData[j] > Data [j + 1] ならば: & FURS ipin (6) hokan = Data[j] ① Ad>(7) (8) エ _Data [j+1] = hokan 図2 バブルソートのプログラム 0000 1036 0 kouk 4-1 S図2のプログラムだと, もし仮に最初からデータが昇順に並んでいても、配列 Data の場合と同じ回数だけ 比較を繰り返さないといけないですよね? T:いいところに気が付きましたね。 最初から昇順に整列された配列をバブルソートすると、交換回数は オ だけど比較回数は |ので効率が悪いです。 それでは,データの整列が完了した段階で繰り返 しを抜けるように図1のプログラムを修正してみましょう。 まず, 変数 koukan を用意して初期化してお きます(図3の (3) 行目)。 次に, 交換が発生した場合, 変数 koukan に 「1」 を代入するようにしましょ (図3の (10) 行目)。 さて、ここで図4のプログラムを, 図3のプログラムのどこに挿入すればいいか 分かりますか? S:繰り返しが1周終わるごとに変数 koukan の値を確認する必要がありますから、 T:正解です! よくできました。 98 第3章 コンピュータとプログラミング キ だと思います。 0

解決済み 回答数: 1
情報:IT 高校生

3問とも計算方法も答えも分からず、質問させて頂きました。 教えていただけると幸いですm(_ _)m

[3]表 2.1の命令を持つSEP-E の CPU が、あるプログラムを7000番地から実行開始して 数命令動いたところで、現在は命令フェッチ前の状態にあるとする。 この時、汎用レジスタの値 は表 2-2 主記憶装置(メインメモリ)の内容は表 2-3 のようになっている。 なお、レジスタの内 容および番地はすべて16進数である。 以下の設問に答えなさい。000円 2005 LOOT 80001 表2.1 命令一覧表(一部抜粋) P-E ニモニック TVCM 動作概要 0005 NZ V C* |ADD, F:T 加算 (T+F→T)VOY * * * * |AND, F:T ビット毎の論理積 (TAF→T) 0000 ** 0- BIT,F:T ビット毎の論理積 (TAF, フラグ変化のみ) * * 0- CMP,F:T 比較 (T-F, フラグ変化のみの減算) * * * * DEC,D-:T 値を1減らす (T-1→T) * * * * |HLT, D-:D- 実行を停止する |INC, D-:T |JCY,F:D7 値を1増やす (T+1→T) |C=1のときジャンプ (F→(R7) if C=1) |JMI,F:D7 |N=1のときジャンプ (F→(R7) if N=1) |JOV,F:D7 |V=1のときジャンプ (F→(R7) ifV=1) 無条件ジャンプ(F→(R7)) |JP,F:D7 |JR,F:D7 無条件相対ジャンプ ((R7)+F→(R7)) **** --- |JRM,F:D7 |N=1のとき相対ジャンプ ((R7)+F (R7) ifN=1) JZE,F:D7 |Z=1のときジャンプ (F→(R7) if Z=1) MOV,F:T 移動 (FT) OR,F:T ビット毎の論理和(TVF→T) SLA,D-:T 左シフト (T×2→T) |SLR, D-:T 左ローテイト SRA,D-:T |右シフト(T÷2→T) |SRR, D-:T 右ローテイト |SUB, F:T 減算 (T-F→T) |XOR,F:T ビット毎の排他的論理和 (TF→T) * * 0- **0- * * * * * * 0 * * * 0 * * * 0 * * * * * **0- ※N (Negative; 負), Z (Zero; ゼロ), C (Carry; キャリー), V (Overflow; オーバーフ ロー), * 演算結果に応じて変化する, -: 変化しない, 0: 必ず0になる 5

未解決 回答数: 1
情報:IT 高校生

分からないので教えて欲しいです お願いします🙏

【課題1】次のプログラムを入力して、実行しなさい。そのあと、以下の間1~3の【ア】【ク】にあて はまる数字を答え、 【ケ】 には、 〔図4〕 から適当なものを1つ選べ。 《プログラム》 問1 プログラムにおいて、行番号 08~13の文の実行によって、〔図3] の記号が描かれるのは、Xの 値が 【ア】でYの値が 【イ】 のときである。 〔図3] 01 # 模様を描くプログラム 02 # 模様の1行目を描く 03 for X in range (1,8): 04 print("*", end="") 05 print("") 06 # 模様の2行目から6行目を描く 07 for Y in range (2, 7): for X in range (1,8): if X == 8-Y : 08 09 10 print("*" 11 else: 12 13 print("''*) これは模様を描くプログラムです 模様の1行目を描きましょう 変数Xを1から7まで順番に次のことをします 「*」を表示して、 X の値を1つ増やす 終わったら改行します 模様の2行目から6行目を描きましょう 変数Y を2から6まで順番に次のことをします 変数Xを1から7まで順番に次のことをします もし X=8-Y ならば 「*」 を表示して end="" " ) そうでなければ print(".", end="") 14 # 模様の7行目を描く 16 15 for X in range (18) print("*", end="" 17 print("") 18 19 20 「・」を表示して、 Xの値を1つ増やす Xが終わったら改行してYの値を1つ増やす 模様の7行目を描きましょう 変数Xを1から7まで順番に次のことをします 「*」 を表示して、 Xの値を1つ増やす 終わったら改行する 問2 プログラムの実行において、行番号 09のif文は、全部で 【ウエ】 回実行され、行番号 13 の print 文は全部で 【オ】 回実行される。 問3 プログラムにおいて、行番号 08 の for 文を for X in range (1, Y+1) に変更して実行する。 行番 号 07~13の文の繰り返しの中で、Yの値が5のとき、行番号 09のif文は 【カ】 回実行され、 "*" 記号が 【キ】 個、 "." 記号が 【ク】 個それぞれ表示される。 したがって、変更したプログラムの実行によって描かれる図形は、 【ケ】である。 1 ******* 2 ******* 3 ******* 4 ******* * *.. .* ・*・ ******* ******* ******* ******* 《実行結果》 ******* ******* 5 6 7 ******* *****. ******* ***** ******* ******* .* ****. *** * ** *** **• * . *****> * *** * ** *** ******* [図4]

解決済み 回答数: 1
1/6