情報:IT
高校生
解決済み

図4のi、j、kが何を表しているか分からないです
教えてください🙇🏻‍♀️

問2 次の文章を読み, 空欄 キ ~ コ に入れるのに最も適当なものを, 次ページのそれぞれの解答群のうちから一つずつ選び、 空欄サシに当ては まる数字をマークせよ。 文字列の記憶に配列を用いる。例えば,「じ しょ」 という文字列は,配列に図3のように 記憶される。 文字同士は= キ によって, A[1] A[2] A[3] じし 図3 文字列の記憶方法 等しい, 等しくないの判断ができる。 配列』が記憶している文字列を,配列名を使って「文字列」,あるいは単に 「A」 のように呼ぶ。 (01) bBun の文字数 Tango の文字数 (02) (03) iを1から キ まで1ずつ増やしながら、 j1, k0 (04) (05) ク の間, (06) もし Tango [j]キBun [ ケ ならばkk+1 (07) jj+1 (08) を繰り返す (09) もしk = 0 ならば, (10) 「先頭位置は」 と コ を印刷する (11) を実行する (12)を繰り返す 図4 処理手順1
図4は,文字列 Bun をテキスト, 文字列 Tango をパターンとして図1の処 理を実現する処理手順である。 処理が行 (09) に達したとき, 変数は rango の文字と Bun の文字とが不一致だった箇所の個数, つまり図1の各回での× の個数を表す。 したがって, k=0であれば Tango が見付かったことになる。 Tango が見付かった場合には, 「先頭位置は3」のように, Tango が見付かっ た先頭位置を印刷する。 図1の最終回の処理が終わったところで実行は終了す る。 Bun が 「かいかんじかん」, Tango が 「かんじ」 の場合に図4の処理手順を実 行すると,行(06)の文字比較はサシ 回実行される。 キ の解答群 ① b-1 ②b-t ③ b-t-1 ④b+1 ク の解答群 0k=0 ①j<t ② j≦t ③ i+j<b ④ itj≦b ケ • コ |の解答群 i ① i1 ② i+1 ③ij ④ i+j-1 ⑤ j ⑥ j-1 ⑦ j+1 ⑧i-j ⑨ i++1
プログラミング

回答

✨ ベストアンサー ✨

以下の様になってます

i:Bun(="かいかんじん")の左からi文字目の位置(比較開始(先頭)位置)
j:tango(="かんじ")の左からj文字目の位置
k:tangoの文字(1~t)とBunの文字(i~i+t-1)を比較して不一致となった文字数
ーーーーー
処理概要(説明)

i:Bunの文字の比較開始文字位置として、1からb-t+1まで処理する
b-t+2以上から比較開始すると、Bunの残りの比較文字がt-1以下で、tangoの文字数tより少なくなるため比較処理できなくなるため(Bunの比較する残りの文字が足りない)、b-t+1までとする

j:tangoの文字(数)すべてを処理(t以下の間は処理を行う)
不一致処理数をカウントするため、不一致が途中で判明してもtangoの最後まで繰り返す
i+j-1:Bunのi文字目とtangoの1文字目から比較を開始して、Bunのj回目比較(i+j-1文字目)を意味

k=0の場合、bunの比較先頭位置iを印刷する

ーーーーー
実行概要(分かりやすいように編集部分あり)

b=6:Bun="かいかんじん"
t=3:tango="かんじ"

i=1:j=1:k=0
 j=1:tango(j:1)="か"、Bun(i+j-1:1)="か”
 j=2:tango(j:2)="ん"、Bun(i+j-1:2)="い”:k←k+1=1
 j=3:tango(j:3)="じ"、Bun(i+j-1:3)="か”:k←k+1=2

i=2:j=1:k=0
 j=1:tango(j:1)="か"、Bun(i+j-1:2)="い”:k←k+1=1
 j=2:tango(j:2)="ん"、Bun(i+j-1:3)="か”:k←k+1=2
 j=3:tango(j:3)="じ"、Bun(i+j-1:4)="ん”:k←k+1=3

i=3:j=1:k=0
 j=1:tango(j:1)="か"、Bun(i+j-1:3)="か”:
 j=2:tango(j:2)="ん"、Bun(i+j-1:4)="ん”:
 j=3:tango(j:3)="じ"、Bun(i+j-1:5)="じ”:

i=4:j=1:k=0
 j=1:tango(j:1)="か"、Bun(i+j-1:4)="ん”:k←k+1=1
 j=2:tango(j:2)="ん"、Bun(i+j-1:5)="じ”:k←k+1=2
 j=3:tango(j:3)="じ"、Bun(i+j-1:6)="ん”:k←k+1=3

i=4(b-t+1=6+3-1)までなので、終了
文字比較は12回実行された

L

ありがとうございます🙇🏻‍♀️

GDO

1行忘れてました🙇‍♂️
下記の「k=0なので、先頭位置は3(i=3)を印刷する」

・・
i=3:j=1:k=0
 j=1:tango(j:1)="か"、Bun(i+j-1:3)="か”:
 j=2:tango(j:2)="ん"、Bun(i+j-1:4)="ん”:
 j=3:tango(j:3)="じ"、Bun(i+j-1:5)="じ”:

 k=0なので、先頭位置は3(i=3)を印刷する

i=4:j=1:k=0
・・・

この回答にコメントする
疑問は解決しましたか?