Desember 23, 2010

Program Persegi Tanpa Double Looping

Kalau di post sebelum KuraKura membahas code yang segitiga, sekarang saat nya untuk yang persegi. Walaupun program persegi double looping lebih mudah daripada yang segitiga nya, tapi program segitiga tanpa double looping lebih susah ketimbang yang segitiga nya. Karena kita tidak akan meng-solve problem tersebut dengan hanya single looping. Jadi bagaimana caranya?


Ide awalnya tetap menggunakan string, namun sejauh ini KuraKura hanya menemukan algoritma dengan O(2N) alias dengan 2 looping (bukan double looping yang nested; jika dobule looping nested memiliki O(N^2)). Looping pertama digunakan untuk membentuk string kemudian looping kedua digunakan untuk menulis string sebanyak baris.


Sebelum melihat code dengan 2 looping yang tidak nested, mari kita lihat yang normal terlebih dahulu.


program persegi_normal;
var
  n,i,j:longint;
begin
  readln(n);
  for i:=1 to n do
  begin
    for j:=1 to n do
      write('x');
    writeln;
  end;
end.


Terlihat bahwa yang normal menggunakan double looping secara nested. mari kita gunakan algoritma O(2N) pada program persegi. berikut code nya:


program persegi_non_nested;
var
  n,i:longint;
  s:string;
begin
  readln(n);
  for i:=1 to n do
    s:s+'x';
  for i:=1 to n do
    writeln(s);
end.


Kurang lebih codenya seperti itu. Namun itu hanya berlaku pada segi empat sama sisi, jadi kalau persegi panjang gimana? kita tinggal menambahkan variable nya aja sih. tapi supaya lebih yakin, lihat code dibawah ini:


program persegi_panjang_non_nested;
var
  p,l,i:longint; {p adalah panjang, l adalah lebar}
  s:string;
begin
  readln(p,l); {input di pisahkan oleh sebuah spasi}
  for i:=1 to p do
    s:=s+'x';
  for i:=1 to l do
    writeln(x);
end.


Example input:
5 3
Example output:
xxxxx
xxxxx
xxxxx


Sekian dari KuraKura, KuraKura menyarankan agar kalian untuk mencoba code tersebut dan mempelajarinya, maknai code itu setiap barisnya agar kalian benar-benar memahaminya. Jika ada code di atas tidak dapat dijalankan ataupun ada pertanyaan tentang code diatas, silahkan comment di post ini juga. thanks udah membaca KuraKura Programmer :)




Bye! Salam KuraKura :)

Tidak ada komentar:

Posting Komentar