Selasa, 03 Mei 2011

Pascal: Konversi Bilangan ke Desimal

uses crt;
var bilangan:String[10];

procedure satuan(i:integer);
begin
if (bilangan[i] = '1') then
  write('satu')
else
  if (bilangan[i] = '2') then
    write('dua')
  else
    if (bilangan[i] = '3') then
      write('tiga')
    else
      if (bilangan[i] = '4') then
        write('empat')
      else
        if (bilangan[i] = '5') then
          write('lima')
        else
          if (bilangan[i] = '6') then
            write('enam')
          else
            if (bilangan[i] = '7') then
              write('tujuh')
            else
              if (bilangan[i] = '8') then
                write('delapan')
              else
                if (bilangan[i] = '9') then
                  write('sembilan');
end;

procedure puluhan(i:integer);
begin
if (bilangan[i-1] = '1') then
  begin
  if (bilangan[i] = '0') then
    write('sepuluh')
  else
    if (bilangan[i] = '1') then
      write('sebelas')
    else
      if (bilangan[i] = '2') then
        write('duabelas')
      else
        if (bilangan[i] = '3') then
          write('tigabelas')
        else
          if (bilangan[i] = '4') then
            write('empatbelas')
          else
            if (bilangan[i] = '5') then
              write('limabelas')
            else
              if (bilangan[i] = '6') then
                write('enambelas')
              else
                if (bilangan[i] = '7') then
                  write('tujuhbelas')
                else
                  if (bilangan[i] = '8') then
                    write('delapanbelas')
                  else
                    if (bilangan[i] = '9') then
                      write('sembilanbelas');
  end
else
  begin
  satuan(i-1);
  write(' puluh ');
  satuan(i);
  end;
end;

procedure ratusan(i:integer);
begin
if (bilangan[i-2] = '1') then
  begin
  write('seratus ');
  if (bilangan[i-1] = '0') then
    satuan(i)
  else
    puluhan(i);
  end
else
  begin
  satuan(i-2);
  write(' ratus ');
  if (bilangan[i-1] = '0') then
    satuan(i)
  else
    puluhan(i);
  end;
end;

procedure ribuan(i:integer);
begin
if (bilangan[i-3] = '1') then
  begin
  write('seribu ');
  if (bilangan[i-2] = '0') then
    if (bilangan[i-1] = '0') then
      satuan(i)
    else
      puluhan(i)
  else
    ratusan(i);
  end
else
  begin
  satuan(i-3);
  write(' ribu ');
  if (bilangan[i-2] = '0') then
    if (bilangan[i-1] = '0') then
      satuan(i)
    else
      puluhan(i)
  else
    ratusan(i);
  end;
end;

procedure puluhribu(i:integer);
begin
puluhan(i-3);
write(' ribu ');
if (bilangan[i-2] = '0') then
  if (bilangan[i-1] = '0') then
    satuan(i)
  else
    puluhan(i)
else
  ratusan(i);
end;

procedure ratusribu(i:integer);
begin
ratusan(i-3);
write(' ribu ');
if (bilangan[i-2] = '0') then
  if (bilangan[i-1] = '0') then
    satuan(i)
  else
    puluhan(i)
else
  ratusan(i);
end;

procedure juta(i:integer);
begin
satuan(i-6);
write(' juta ');
if (bilangan[i-5] = '0') then
  if (bilangan[i-4] = '0') then
    if (bilangan[i-3] = '0') then
      if (bilangan[i-2] = '0') then
        if (bilangan [i-1] = '0') then
          satuan(i)
        else
          puluhan(i)
      else
        ratusan(i)
    else
      ribuan(i)
  else
    puluhribu(i)
else
  ratusribu(i);
end;

procedure puluhjuta(i:integer);
begin
puluhan(i-6);
write(' juta ');
if (bilangan[i-5] = '0') then
  if (bilangan[i-4] = '0') then
    if (bilangan[i-3] = '0') then
      if (bilangan[i-2] = '0') then
        if (bilangan [i-1] = '0') then
          satuan(i)
        else
          puluhan(i)
      else
        ratusan(i)
    else
      ribuan(i)
  else
    puluhribu(i)
else
  ratusribu(i);
end;

procedure ratusjuta(i:integer);
begin
ratusan(i-6);
write(' juta ');
if (bilangan[i-5] = '0') then
  if (bilangan[i-4] = '0') then
    if (bilangan[i-3] = '0') then
      if (bilangan[i-2] = '0') then
        if (bilangan [i-1] = '0') then
          satuan(i)
        else
          puluhan(i)
      else
        ratusan(i)
    else
      ribuan(i)
  else
    puluhribu(i)
else
  ratusribu(i);
end;

procedure milyar(i:integer);
begin
satuan(i-9);
write(' milyar ');
if (bilangan[i-8] = '0') then
  if (bilangan[i-7] = '0') then
    if (bilangan[i-6] = '0') then
      if (bilangan[i-5] = '0') then
        if (bilangan [i-4] = '0') then
          if (bilangan[i-3] =  '0') then
            if (bilangan[i-2] = '0') then
              if (bilangan[i-1] = '0') then
                satuan(i)
              else
                puluhan(i)
            else
              ratusan(i)
          else
            ribuan(i)
        else
          puluhribu(i)
      else
        ratusribu(i)
    else
      juta(i)
  else
    puluhjuta(i)
else
  ratusjuta(i);
end;

var digit,i,j:integer;

begin
clrscr;
write('digit bilangan    : ');readln(digit);
write('Masukkan bilangan : ');readln(bilangan);
case (digit) of
  1:satuan(digit);
  2:puluhan(digit);
  3:ratusan(digit);
  4:ribuan(digit);
  5:puluhribu(digit);
  6:ratusribu(digit);
  7:juta(digit);
  8:puluhjuta(digit);
  9:ratusjuta(digit);
  10:milyar(digit);
end;
readkey;
end.



thanks for Aly Yasser Pranajaya
atas bantuannya :)

Pascal: Konversi Bilangan ke Desimal Rating: 4.5 Diposkan Oleh: Mohammad Iqbal Al Ghifari

0 komentar: