OSP 2013

Potongan program berikut ini akan digunakan pada soal 30 dan 31
var
    s:string;
    cl,cr:integer;

procedure right(l, r : integer);
forward;
    
procedure swap(l, r : integer);
var
    c : char;
begin
    if (l>=1) and (r<=length(s)) then
    begin
        c:=s[l];
        s[l]:=s[r];
        s[r]:=c;
    end;
end;

procedure left(l, r : integer);
begin
    inc(cl);
    swap(l,r);
    if (r<length(s)) then
        right(l,r+1);
end;

procedure right(l, r : integer);
begin
    inc(cr);
    swap(l,r);
    if (l>1) then
        left(l-1,r);
end;

begin
    s:='gogetgold';
    left(9,1);
    writeln(s);
    writeln(cl,',',cr);
end.
  1. Apakah yang akan tercetak dari hasil pemanggilan perintah writeln(cl,’,’,cr)?

  2. Jika perintah left(9,1) diganti dengan left(5,5), apakah yang akan tercetak dari hasil pemanggilan perintah writeln(s)?


    Prosedur swap akan menukar posisi dua kata pada s.
    Prosedur left dan right akan menukar posisi index l dengan r, namun pemanggilan left akan menambah nilai r sedangkan pemanggilan right akan mengurangi nilai l. Kemudian cl dan cr akan bertambah setiap pemanggilan left (untuk cl) dan right (untuk cr).

  1. Pemanggilan pertama menggunakan left(9,1) sehingga cl akan bernilai 1. kemudian prosedur left akan dipanggil oleh prosedur right selama l > 1, sedangkan prosedur right akan dipanggil selama nilai r < 9. Sehingga nilai cl akan bertambah sebanyak l0 – 1 sedangkan cr akan bertambah sebanyak length(s) – rawal.

    Karena cl awal bernilai 1 (dari pemanggilan pertama), maka cl = 1 + (9-1) = 9.
    cr = length(s) – 1 = 9 – 1 = 8.
    Dengan demikian yang tercetak dari perintah tersebut adalah 9,8.

  2. Jika perintah diubah menjadi left(5,5), maka penukaran yang terjadi adalah:
    (5,5), (5,6), (4,6), (4,7), (3,7), (3,8), (2,8), (2,9), (1,9)
    gogetgold
    gogegtold
    gogtgeold
    gogogetld
    gotogegld
    gologegtd
    gtlogegod
    gdlogegot
    tdlogegog

    Dengan demikian kata yang tercetak adalah tdlogegog.

Share Now:

5 2 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

Langganan

Subscribe To Our Newsletter

0
Would love your thoughts, please comment.x
()
x

Follow TikTok Kami @cahinfor

Pembahasan soal tahun 2023 sudah tersedia di TikTok Kami loh!