Docstoc

Procedure Pemrograman Bahasa C

Document Sample
Procedure Pemrograman Bahasa C Powered By Docstoc
					    Buatlah procedure untuk membalik urutan isi queue dinamis Q.
----------------------------------------------- tidak make stack
while qfront <> nil
begin
new(p)
dequeue(qfront,data);
p^.isi:=data;
if (pfront = nil)
begin
         pfront := p;
         prear := p;
end;
else
begin
         p^.next = front;
         pfront =p;
end
-------------------------------------------------- pake stack
while q<> nil do
begin
         dequeue(q,data)
         push(s,data);
end;
while s<> nil do
begin
         pop(s,data)
         enqueue(q,data);
end;
    Diketahui Queue dinamis Q dan Stack dinamis S, yg keduanya mempunyai elemen berupa karakter,
       Buatlah procedure untuk mengubah queue Q menjadi stack SQ, dimana elemen top dari SQ
       adalah elemen paling depan dari Q, dan mengubah stack S menjadi queue QS, dimana elemen
       paling depan dari QS adalah elemen top dari S.

  N:=1;
  while q<> nil do
  begin
     dequeue(q,data[n]);inc(n);
  end;
  for a:= n downto 1 do
  begin
          push(sq,data[n]);
  end;

  while s <> nil do
  begin
    pop(s,x);
    endqueue(qs,x)
  end;
//2009
         Buatlah procedure untuk mengubah harga semua (find&replaceAll) data barang dengan kode
         tertentu (kd) dari data barang pada linked list L. (harga baru boleh diinputkan langsung atau
         ditentukan berdasar harga lama dengan memberi kenaikan x%)

procedure ubahharga(L:list,kode:string);
var x,pil: byte;
begin
 while (L<>nil) do begin
  if L^.kode = kode then
       begin
       write(' 1. input harga baru');
       write(' 2. kenaikan x persen ');
       write('masukkan pilihan : 1 / 2 ');readln (pil);
       case pil of
       1 : begin
               write('masukkan harga baru : ');readln(L^.harga);
           end;
       2 : begin
               write('ingin naik berapa perser');readln(x);
               L^.harga := L^.harga + (L^.harga *(x /100))
            end;
       end;
       end;
  L:=L^.next;
 end;
end;

//2006
Diketahui struktur data linked list sbb:
       Type Llist = ^Node;
               Node = record
                       Kode_Barang       : string[10];
                       Harga             : real;
                       Next              : Llist;
               End;
       Var X : Llist;
       Buatlah procedure untuk menaikkan harga semua barang sebesar 2½ % dari data barang pada
       linked list X.
Procedure gantisemua(var x:Llist;)
var bantu:Llist;
begin
bantu:=x;
        while bantu.next <> nil do
        begin
                bantu^.harga := bantu^.harga + (bantu^.harga * 2.5/100)
                bantu:= bantu^.next
        end;
end;
// 2010
Diketahui struktur data linked list sbb:
       Type List = ^Node;
             Node = record
                               Data : record
                                    Kode : string[5];
                                          Harga : real;
                                        end;
                       Next : List;
                     end;
       Var L : List;
       Buatlah procedure untuk menghapus semua (DeleteAll) data barang dengan kode tertentu (kd)
       dari data barang pada linked list L.

procedure deleteall(var L:list; kd:string);
var baru,bantu:list;
begin
   if data = L^.kode then
   begin
       new(baru);
       baru:=L;
       L:=L^.next;
       dispose(baru);
   end
   else
   begin
       new(bantu);
       bantu:=p;
       repeat
        if (bantu^.next^.next = nil) and (data = bantu^.next^.kode)then
        begin
           dispose(bantu^.next);
           bantu^.next :=nil;
        end
        else if (data = bantu^.next^kode) then
        begin
            new(baru);
            baru:= bantu^.next^.next;
            dispose(bantu^.next);
            bantu^.next:=baru;
        end
        else
           bantu:=bantu^.next;
   until bantu^.next = nil
   end;
end;
Diketahui struktur data linked list sbb:
      Type List = ^Node;
              Node = record
                       Kode_Barang            : string[10];
                       Harga                  : real;
                 Next                 : List;
              End;
      Var X : List;
      Buatlah procedure untuk menghapus semua data barang yang harganya > 1 juta dari data barang
      pada linked list X.

Procedure deleteall(var L:list; kd:string);
var baru,bantu:list;
begin
   if L^.harga > 1000000 then
   begin
      new(baru);
      baru:=L;
      L:=L^.next;
      dispose(baru);
   end
   else
   begin
      new(bantu);
      bantu:=p;
      repeat
       if (bantu^.next^.next = nil) and (bantu^.next^.harga > 1000000 )then
       begin
          dispose(bantu^.next);
          bantu^.next :=nil;
       end
       else if (data = bantu^.next^kode) then
       begin
           new(baru);
           baru:= bantu^.next^.next;
           dispose(bantu^.next);
           bantu^.next:=baru;
       end
       else
          bantu:=bantu^.next;
   until bantu^.next = nil
   end;
end;
Diketahui struktur data linked list sbb:
      Type List = ^Node;
              Node = record
                        Data : Real;
                 Next        : List;
              End;
      Var L,p,q : List;
      Buatlah procedure untuk menggabung 2 linked list p dan q menjadi satu linked list L,
      dimana posisi yang didepan adalah linked list yang banyak datanya lebih besar. Jadi L
      merupakan linked list p yang digabung dengan q jika banyak data di p lebih besar atau
      sama dengan banyak data di q dan L merupakan linked list q yang digabung dengan p
      jika banyak data di q lebih besar dengan banyak data di p.

Procedure gabung(l,p,q :list)
bantu:list;
begin
cek(p,n1); cek(q,n2);
if n1 >= n2 then
begin
       bantu:= p;
       while bantu^.next <> nil then
              bantu:=bantu^.next
       bantu^.next := q;
L:=p;
end
else
begin
       bantu:= q;
       while bantu^.next <> nil then
              bantu:=bantu^.next
       bantu^.next := p;
L:=q;
end;
end;

procedure cek(p:list;var n:real)
var bantu : list;
begin
n:=0;
bantu:=p;
      while bantu^.next <> nil do
      n:= n + 1;
end;
procedure cetak(P:list);
bantu:list;
begin
bantu:=P
   while bantu^.next <> nil do
   begin
            write(bantu^.data)
            bantu:=bantu^.next;
   end;
end;




Diketahui Queue dinamis Q dan Stack dinamis S, yg keduanya mempunyai elemen berupa karakter,
  Buatlah procedure untuk mengubah queue Q menjadi stack SQ, dimana elemen top dari SQ
  adalah elemen paling depan dari Q, dan mengubah stack S menjadi queue QS, dimana elemen
  paling depan dari QS adalah elemen top dari S.

                 Jadi Input : queue dinamis Q dan stack dinamis S
                 Output     : stack dinamis SQ dan queue dinamis QS
Buatlah procedure/algoritma untuk membalik urutan isi queue dinamis Q tanpa menggunakan stack,
procedure standar untuk queue dianggap sudah ada ( tinggal panggil ).

Berikan contoh permasalahan (selain membalik kalimat) yang menggunakan stack dan jelaskan pula
  dalam permasalah tersebut sebaiknya menggunakan stack statis atau dinamis? Berikan juga
  contoh permasalahan (selain radix sort) yang menggunakan queue dan jelaskan pula dalam
  permasalah tersebut sebaiknya menggunakan queue statis atau dinamis?
        JAWABAN SOAL BAYANGAN ALGO & SD PRA S2 ILKOM UGM 2011/2012

1. a. Pengertian struktur data statis dan struktur data dinamis

     • Struktur data statis

         Pengertian

           Struktur data yang kebutuhan memorinya tetap selama program dijalankan (tidak
           fleksibel)

         Kelebihan

           a) Programnya relatif murah

           b) Bentuk programnya praktis

           c) Bentuk pemrogramannya sederhana

         Kekurangan

           a) Kebutuhan memorinya tidak fleksibel

           b) Kebutuhan memorinya terbatas sesuai definisi larik (baris)

     • Struktur data dinamis

         Pengertian

           Struktur data yang kebutuhan memorinya bersifat dinamis data bisa berubah-ubah
           selama program berjalan

         Kelebihan

           a) Kebutuhan memori lebih efisien dibanding struktur data statis

           b) Kebutuhan memori fleksibel

         Kekurangan

           a) Pemrograman relatif rumit

           b) Pemrograman tidak praktis

       Contoh struktur data linear          : stack,queue,linear linked-list
       Contoh struktur data non-linear      : tree, multiple linked-list, graph
     b. 21, 4, 100, 85, 30, 23, 75, 26, 10, 40, 20, 72, 3, 77
     Bentuk Merge Sort dengan urutan ascending

             21, 4, 100, 85, 30, 23, 75, 26, 10, 40, 20, 72, 3, 77

              4, 21       85, 100    23, 30             10, 26       20, 40   3, 72               1+1+1+1+1+1=6

               4, 21, 85, 100        23, 30, 75         10, 20, 26, 40            3, 72, 77       2+2+3+2=9

               4, 21, 23, 30, 75, 85,100                 3, 10, 20, 26, 40, 72, 77                5+5=10

                          3, 4, 10, 20, 21, 23, 26, 30, 40, 72, 75, 77, 85, 100                   12

        Best case 14 data= 25
        Worst case 14 data= 41
        Hasilnya = 6+9+10+12
                 = 37 jadi deretan data di atas merupakan average case
2.

3. a.


             In           L     M        Y    U         O        S       A    E       I       V   C
             Pre          A     Y        L    M         O        U       S    E       V       I   C


     LVR

     VLR


                                                    A



                                     Y                               E



                      L                         O                             V




                           M             U               S               I            C
       Post (LRV) : M,L,U,S,O,Y,I,C,V,E,A

       Pohon di atas bukan termasuk pohon yang tidak seimbang (non AVL) di node E mempunyai kaki
       yang tidak seimbang.

       b.       21, 4, 100, 85, 30, 23, 75, 26, 10, 40, 20, 72, 3, 77
            terdapat 14 data, sehingga dibuat memori baru sejumlah bilangan prima yang >= panjang
            data (14). Maka didapat memori 17 karena bilangan prima yang >=14 adalah 17
            Dilakukan fungsi hashing : (data mod 17) + 1
            21 mod 17 + 1= 4 + 1
                           =5       menunjuk index memory 5

      1     2    3    4     5     6       7    8      9       10   11   12   13   14   15    16    17
Lv1   85              20    21            23   75             26   10             30         100

Lv2                     3    4        2   40              3   77              4

                                                                         9

Lv3                         72                                                          11



Rata2 pencarian Metode linked : (9x1) + (4x2) + (1x3) = 9+8+3 = 20 = 1,428
                                        14                14    14

Rata2 pencarian Metode open addressing : 9+2+3+4+9+11 = 38 = 2,714
                                              14        14
2. a. typedef struct node
       { struct
                { char kode[5];
                float harga;} data;
                struct node *next;
       } list;
       list *L;

       procedure untuk mengubah harga semua (find&replaceAll) data barang dengan kode tertentu
       (misalkan kd) dari data barang pada linked list L. (harga baru ditentukan berdasar harga lama
       dengan memberi kenaikan sebesar 2.5%)
       Jawaban

       void ubahSemua (struct node *L, float ganti)
{

         struct node *P;

         P=L;

         while (P)

         {

                 P -> harga = P -> harga(ganti*P -> harga);

                 P = P -> next;

         }

}

main()

{

         ubahSemua(root,0.025);

}

				
DOCUMENT INFO
Shared By:
Categories:
Stats:
views:102
posted:8/23/2012
language:Unknown
pages:11
Description: Procedure Pemrograman Bahasa C