Pages

Sabtu, 05 Januari 2013

BAB 1C : Perulangan - Pola 3

Solusi BAB 1C : Perulangan - Pola 3



PROGRAM pola3;
var n,i,k : byte;
begin
     readln(n,k);
     for i:=1 to n-1 do
     begin
          if (i mod k = 0) then
          write('*')
          else
          write(i);
          write(#32);
     end;
     if ((n mod k) = 0) then
        write('*')
        else
        writeln(n);
end.

9 komentar:

  1. mengapa anda melakukan looping hanya sampai n-1? mengapa tidak sekalian saja i:=1 to N, lalu perintah antara "END;" dan "END." dihilangkan?. bukannya sama saja?

    BalasHapus
  2. mengapa anda melakukan looping hanya sampai n-1?
    >itu karena kalo langsung output terakhir akan ada spasi {write(#32)}, nah cara mengatasinya pake n-1, lalu proses lagi sekali tanpa spasi, gitu...

    lalu perintah antara "END;" dan "END." dihilangkan?
    >END. dan END; itu beda! END. hanya untuk penutup program, artinya hanya pada akhir
    >END; untuk penutup perintah
    >END; dihilangkan karena tidak ada BEGIN setelah IF THEN, maka akan otomatis ditutup oleh ";"
    contoh:
    if ((n mod k) = 0) then
    write('*')
    else
    writeln(n);
    atau
    if ((n mod k) = 0) then begin
    write('*');
    end else begin
    writeln(n);
    end;

    sudah faham?

    BalasHapus
  3. ini punya saya

    program pattern;
    var a,b,c:integer;
    begin
    readln(a,b);
    for c:=1 to a do
    if(c mod b=0)then write('* ')
    else if(a=c)then write(c) else write(c,' ');
    writeln();
    end.

    BalasHapus
  4. @ara :
    karena pada saat loping terakhir (ketika i=n-1) akan tercetak spasi terakhir , lalu pada baris ke 13, 14, 15, dan 16 akan dieksekusi nilai i yang terakhir, jika i habis dibagi dengan k maka yang tercetak "*" tetapi jika tidak habis maka yang tercetak adalah i(angka terakhir) dan setelah ini tidak ada lagi spasi yang tercetak.


    @Alivan : terima kasih atas masukan nya, saya telah paham dengan program yang anda berikan dan lebih efektif dibanding dengan algoritma saya.

    BalasHapus
  5. kok punya saya pas saya masukkan ke toki, jawabannya wrong answer ya? mohon bantuannya T_T

    var
    x,y,i:integer;
    begin
    readln(x,y);
    for i:= 1 to x do
    begin
    if (i mod y = 0) then
    write('* ');
    if (i mod y <> 0) and (i <> x) then
    write(i,' ');
    if (i = x) then
    write (i);
    end;
    end.

    thanks:)

    BalasHapus
    Balasan
    1. karena pada program anda jika (i=x) sudah pasti dicetak bilangan, sementara
      ada kemungkinan keluaran digit terakhirnya bintang,
      jadi di seleksi dulu kayak programnya si rio

      Hapus
  6. mohon bantuannya kenapa punya sya error:

    program pola3;
    var
    i,a,b : byte;
    begin
    read (a,b);
    for i := 1 to a do
    begin
    if (i mod b <> 0) then
    write (i) else
    write (*);
    if (i <> a) then write (' ');
    end;
    end.

    keteranggan:

    Compilation error time: 0 memory: 0 signal:0
    prog.pas(13,4) Fatal: Unexpected end of file
    Fatal: Compilation aborted
    Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)

    BalasHapus
    Balasan
    1. kesalahannya ada di write(*); seharusnya write('*')

      Hapus