Friday, 11 January 2013

STACK


Stack adalah suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Contoh dalam kehidupan sehari-hari adalah tumpukan piring di sebuah restoran yang tumpukannya dapat ditambah pada bagian paling atas dan jika mengambilnya pun dari bagian paling atas pula.

Pendeklarasian stack yang menggunakan array
Suatu stack memiliki beberapa bagian yaitu :  
  • ·         top yang menunjuk posisi data terakhir (top)
  • ·         elemen yang berisi data yang ada dalam stack. Bagian ini lah yang  berbentuk array.
  • ·         MAKS_elemen yaitu variable yang menunjuk maksimal banyaknya elemen dalam stack. 

Source code program: 
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
#define MAXSTACK 999
typedef int itemType;

typedef struct {
     float item[MAXSTACK];
   int jml;
} Stack;

void init(Stack *s){
     s->jml=0;
}

int kosong(Stack *s){
     return (s->jml==0);
}

int penuh(Stack *s){
     return (s->jml==MAXSTACK);
}

void isi(itemType y, Stack *s){
     clrscr();
     if(penuh(s)){
           clrscr();
           printf("\n\tMaaf.! data sudah penuh\n");
           }
     else{
           s->item[s->jml]=y;
      ++(s->jml);
   }
}

void ambil(Stack *s, itemType *x){
     if(kosong(s))
           printf("\n\tMaaf data masih kosong\n");
     else{
    --(s->jml);
      *x=s->item[s->jml];
      s->item[s->jml]=0;
           printf("\n\tData %i berhasil diambil\n",*x);
      }
}

void hapus(Stack *s){
     s->jml=0;
     printf("\n\tSemua data berhasil dihapus\n");
}

void tampil(Stack *s){
     int x=s->jml;
     if(kosong(s)){
           printf("\n\tMaaf.! Data masih kosong\n");
     }
     else
{
     printf("\n");
     printf("Data yang dimasukkan berjumlah : %d\n",x);
     printf("=======================================\n");
     for(int i=s->jml-1; i>=0; i--){
           printf("\tData ke[%d]\t: %.0f\n",i,s->item[i]);
     }
     printf("\n=======================================\n");
     }
}
void main(){
   int pil;
   char lagi;
   Stack tumpukan;
   itemType data;
   init(&tumpukan);
           back:
           clrscr();
   printf(“==========================\n”);
   printf(“UBAIDILLAH\n”);
   printf(“1412110052\n”);
   printf(“==========================\n”);
           printf("\t===============================\n");
           printf("\t____________MENU_____________\n");
           printf("\n\t1. Isi[PUSH]");
           printf("\n\t2. Lihat[PRINT]");
           printf("\n\t3. Ambil[POP]");
           printf("\n\t4. Hapus[CLEAR]");
           printf("\n\t5. Keluar[EXIT]\n");
           printf("\t=============================");
           printf("\n\n\tMasukkan pilihan: ");
           scanf("%i",&pil);
switch(pil){
case 1:
     ok:
     clrscr();
     tampil(&tumpukan);
printf("\n\tMasukkan data: ");
scanf("%i",&data);
     isi(data,&tumpukan);
     tampil(&tumpukan);
     printf ("\n\n\tIsi Data Lagi [Y/T]? : ");
     ulang:
     lagi = getchar();
     if(lagi=='T' || lagi=='t'){
     goto back;;
     }else if(lagi=='Y' || lagi=='y'){
     goto ok;
     }
     else if(lagi!='T' || lagi!='t'||lagi!='Y' ||lagi!='y')
{
           goto ulang;
     }
     break;
     case 2:
           clrscr();
           tampil(&tumpukan);
           printf("\n\n\tPress any key to continue..");
           getch();
           goto back;
           break;
           case 3:
           ambil(&tumpukan,&data);
           printf("\n\n\tPress any key to continue..");
           getch();
           goto back;
           break;
     case 4:
           hapus(&tumpukan);
           printf("\n\tPress any key to continue..");
           getch();
           goto back;
           break;
     case 5:
           clrscr();
     gotoxy(21,5);printf("Terima Kasih telah menggunakan Program ini");
           exit(0);
           break;
     default:
           clrscr();
           printf("\tPilihan Tidak tersedi.!");
           printf("\n\n\tPress any key to continue..");
           getch();
           goto back;
           break;
           }
}

Hasil percobaan:



STACK
fungsi dan penggunaan elemen elemen c++
membuat program faktorial menggunakan prototype dan rekursif
membuat segitiga pascal menggunakan bahasa c
menghitung nilai rata-rata mahasiswa menggunakan array
membuat segitiga samasisi menggunakan looping/perulangan
membuat segitiga angka menggunakan looping/perulangan
membuat algoritma sederhana menggunakan bahasa c
menghitung sisi miring segitiga menggunakan bahasa c
menghitung luas dan keliling lingkaran menggunakan bahasa c
definisi pemrograman bahasa c

FUNGSI DAN PENGGUNAAN ELEMEN-ELEMEN C++

Source code:
#include<iostream.h>
main()
{
           long int A[8];
           int i;
cout<<”\nMenampilkan array satu dimensi \n ”
cout<<”UBAIDILLAH \n ”
cout<<”1412110052 \n ”
cout<<”################################”;
           for(i=0; i<5; i++)
           {
                cout<<"\n"<<&A[i];
           }
}

Hasil Percobaan:




Penambahan matriks menggunakan array dua dimensi:


Source code program :
#include<stdio.h>
void main()
{
   int A[2][2], B[2][2], C[2][2];
   int i,j;
printf("\nMENGHITUNG NILAI MATRIKS\n");
        printf("UBAIDILLAH\n");
        printf("1412110052\n");
        printf("#############################\n\n");
   printf("Masukkan nilai matriks A\n");
   printf("Masukkan nilai matriks A\n");
   for(i=0;i<2;i++)
     for(j=0;j<2;j++)
     {
           printf(" A[%d][%d]:",i,j); scanf("%d",&A[i][j]);
     }
     printf("Masukkan nilai matriks B\n");
     for(i=0;i<2;i++)
     for(j=0;j<2;j++)
     {
           printf(" B[%d][%d]:",i,j); scanf("%d",&B[i][j]);
     }
     printf("\n");
     printf("A=[%d %d]\n",A[0][0],A[0][1]);
     printf("  [%d %d]\n",A[1][0],A[1][1]);
     printf("\n");
     printf("B=[%d %d]\n",B[0][0],B[0][1]);
     printf("  [%d %d]\n",B[1][0],B[1][1]);
     printf("Penjumlahan A+B = C\n");
         printf("C[%d+%d] [%d+%d]\n",A[0][0],B[0][0], A[0][1],  B[0][1]);
   printf(" [%d+%d] [%d+%d]\n",A[1][0],B[1][0], A[1][1],B[1][1]);
    printf("C=[%d\t%d]\n",A[0][0]+B[0][0],A[0][1]+B[0][1]);
   printf("  [%d\t%d]\n", A[1][0]+B[1][0], A[1][1]+  B[1][1]);
}

Hasil percobaan:



Keterangan program :        
Pada matriks di atas dapat dilihat bahwa dihasil dari penambahan Dapat dilihat pula bahwa hasil perkalian matriks mempunya panjang baris dan kolom 2x2 yang merupakan 'panjang baris A + 'panjang kolom B'. Maka dari itu dalam pembuatan program nanti diperlukan adanya loop / perulangan untuk membuat baris dan kolom. Dan tidak ketinggalan pula array 2 dimensi untuk menyimpan nilai pada tiap baris dan kolom. Contoh :
int A[2][2], B[2][2], C[2][2];
 Mendeklarasikan array 2 dimensi dengan nama variable A,B dan C dan masing masing variable mempunyai 2 element bertipe integer.

Menampilkan nilai dan rangking secara acak:

Source code program:

#include <stdio.h>
#define nil 9
main(){
int nilai[]={56, 78, 43, 96, 67, 83, 51, 74, 32};
int rangking[nil];
int a,b;
     for (a=0;a<nil;a++)
{
           rangking[a]=1;
           for (b=0; b<nil; b++)
{  
                if (nilai[a]>nilai[b])
                rangking[a]++;
           }
     }
printf(“\n menghitung nilai secara acak\n”);
printf(“ ubaidillah\n”);
printf(“ 1412110052\n”);
printf(“=================================\n”);
     printf("\n\t Nilai Ujian \t\tRangking\n");
     for (a=0; a<nil; a++)
           printf("\t\t%d \t\t %d\n",nilai[a], rangking[a]);
     }
}

Hasil percobaan:










STACK
fungsi dan penggunaan elemen elemen c++
membuat program faktorial menggunakan prototype dan rekursif
membuat segitiga pascal menggunakan bahasa c
menghitung nilai rata-rata mahasiswa menggunakan array
membuat segitiga samasisi menggunakan looping/perulangan
membuat segitiga angka menggunakan looping/perulangan
membuat algoritma sederhana menggunakan bahasa c
menghitung sisi miring segitiga menggunakan bahasa c
menghitung luas dan keliling lingkaran menggunakan bahasa c
definisi pemrograman bahasa c