Pada latihan ini, program Anda harus membaca sebuah empat buah string yang kita beri nama S1, S2, S3, dan S4. Misalnya program Anda mendapat input seperti ini:
abcdehalofghi
bcd
halo
semua
Dijamin bahwa string S1 mengandung sebuah string S2 di dalamnya. Buang string S2 yang ditemukan di string S1 (dijamin ada, dan hanya satu). Kemudian sisipkan string S4 pada posisi setelah string S3 yang ditemukan di string S1 (dijamin ada, dan hanya satu). Jadi pada contoh di atas, abcdehalofghi diubah menjadi aehalofghi, lalu menjadi aehalosemuafghi. Keluarkan string hasil akhir, yang pada contoh ini adalahaehalosemuafghi.
function length(s: string): integer;
function pos(substr: string; s: string): integer;
procedure delete(var s: string; index: integer; count: integer);
procedure insert(s: string; var source: string; index: integer);
Fungsi length akan mengembalikan panjang dari s.
Jika string s mengandung string substr, fungsi pos akan mengembalikan index pertama dari kemunculan pertama substr di dalam s (karakter pertama diberi index 1). Jika tidak ada, fungsi ini akan mengembalikan 0.
Prosedur delete akan membuang sebanyak count karakter pada string s, dimulai dengan index ke-index. Misalnya, jika s pada mulanya adalah 'Halo', delete(s, 1, 2) akan mengubah isi s menjadi 'lo'.
Prosedur insert akan memasukkan string s ke dalam string source, dimulai pada posisi index ke-index.
Untuk menyelesaikan masalah awal, kita dapat membuat program sebagai berikut:
var
S1, S2, S3, S4: string;
begin
readln(S1);
readln(S2);
readln(S3);
readln(S4);
delete(S1, pos(S2, S1), length(S2));
insert(S4, S1, pos(S3, S1) + length(S3));
writeln(S1);
end.
Pada program di atas, S2 di dalam S1 akan dibuang dari S1, dan selanjutnya S4 akan dimasukkan ke dalam S1 tepat pada posisi pos(S3, S1) + length(S3), yaitu posisi karakter pertama yang tidak termasuk S3, setelah kemunculan seluruh karakter S3 di dalam S1.
Namai program tersebut dengan nama pjj0114 dan simpanlah dengan nama 'pjj0114.PAS'.
Contoh Masukan
abcdehalofghi bcd halo semua
Contoh Keluaran
aehalosemuafghi
Berikut ini adalah ringkasan dari beberapa fungsi yang mungkin berguna:
procedure str(x: integer; var s: string);
Prosedur ini akan mengubah nilai integer x menjadi string, lalu dimasukkan ke dalam variabel s. Misalnya, jika x bernilai 10, s akan menjadi bernilai '10'.
function lowerCase(s: string): string;
Fungsi ini akan menghasilkan sebuah string seperti s tetapi semua karakternya diubah ke huruf kecil.
function upCase(s: string): string;
Fungsi ini akan menghasilkan sebuah string seperti s tetapi semua karakternya diubah ke huruf besar.
function chr(b: byte): char;
Fungsi ini akan mengembalikan sebuah karakter yang memiliki kode ASCII b. Misalnya chr(65) akan mengembalikan "A".
function ord(c: char): longint;
Fungsi ini akan mengembalikan nilai bilangan bulat dari sebuah tipe ordinal. Biasanya fungsi ini digunakan untuk menentukan kode ASCII dari karakter c. Misalnya, ord("A") akan mengembalikan 65.
Kombinasi chr dan ord dapat digunakan untuk mengubah sebuah karakter dari huruf kecil menjadi huruf besar, atau sebaliknya. Misalnya,chr(ord("x") + (ord("A") - ord("a"))) akan menghasilkan "X".
function abs(l: longint): longint;
Fungsi ini akan mengembalikan nilai absolut dari l. Misalnya, abs(-3) akan mengembalikan 3, dan abs(3) juga mengembalikan 3.
procedure dec(var x: integer); procedure dec(var x: integer; decrement: integer);
Prosedur ini akan mengurangi nilai x dengan 1, atau dengan nilai decrement jika diberikan.
procedure inc(var x: integer); procedure inc(var x: integer; increment: integer);
Prosedur ini akan menambah nilai x dengan 1, atau dengan nilai increment jika diberikan.
function sqr(x: longint): longint; function sqr(x: real): real;
Fungsi ini akan mengembalikan kuadrat dari x.
function sqrt(x: real): real;
Fungsi ini akan mengembalikan akar kuadrat dari x.
function trunc(x: real): integer;
Fungsi ini akan mengembalikan bagian bilangan bulat dari sebuah bilangan real x. Misalnya, trunc(3.456) akan menghasilkan 3.
function round(x: real): integer;
Fungsi ini akan menghasilkan pembulatan dari sebuah bilangan real x. Pada Pascal, aturan pembulatan untuk 0.5 adalah ke arah bilangan genap. Jadi, round(1.5) akan menghasilkan 2, tetapi round(2.5) juga akan menghasilkan 2.
function pi: real;
Fungsi ini mengembalikan nilai pi (3.14159...).
Jawabannya adalah :