Senin, 29 Oktober 2012

TUGAS STRUKTUR DATA MEMBUAT CODING ADT



LAPORAN

MEMBUAT CODING DAN PENJELASANNYA

Dosen Pengampu :
Yulius Nugroho Putro, ST







Disusun Oleh :
ANDIKA INDRAYANA
NPM. 11.1.03.02.0043


PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS NUSANTARA PGRI KEDIRI
Jl. Achmad Dahlan 76 Telp (0354) 771 576 Mojoroto
Kota Kediri


CODING
#include
#include

typedef struct {
     int absis;
     int ordinat;
}Point;

int IsSame(Point P1, Point P2);
void PrintPoint (Point P);

int IsSame (Point P1, Point P2)
{
     if ((P1.absis==P2.absis) && (P1.ordinat==P2.ordinat))
           return 1;                            
     else
           return 0;
}

void PrintPoint(Point P)
{
     printf("(%d,%d)\n",P.absis,P.ordinat);
}

void main ()
{
     Point P1;
     Point P2;
int pilih;
do
{
     printf("MENU\n");
     printf("=======================\n");
     printf("1. Masukkan Titik\n");
    printf("2. Tampil Titik\n");
     printf("3. Cek Titik\n");
     printf("4. Keluar\n");
     printf("=======================\n");
    printf("Masukkan pilihan : ");
     scanf("%d",&pilih);
     switch(pilih)
     {
case 1:
          
     printf ("Masukkan koordinat x titik pertama : ");
     scanf("%d",&P1.absis);
      printf ("Masukkan koordinat y titik pertama : ");
     scanf("%d",&P1.ordinat);
     printf ("Masukkan koordinat x titik kedua : ");
     scanf("%d",&P2.absis);
     printf ("Masukkan koordinat y titik kedua : ");
     scanf("%d",&P2.ordinat);
     getch ();
     break;

case 2:
     printf("\nKoordinat pertama: ");
     PrintPoint(P1);
     printf("\nKoordinat kedua: ");
     PrintPoint(P2);
     getch ();
     break;

case 3:
     if (IsSame (P1,P2))
           printf ("\nKedua titik sama");
     else
           printf("\nKedua titik tidak sama");
     getch();
     break;
}
}
     while (pilih!=4);

getch();
}

Penjelasan :
scanf("%d",&P1.absis); untuk memasukkan nilai P1 absis atau x1,
scanf("%d",&P1.ordinat); untuk memasukkan nilai P1 ordinat atau Y1

PrintPoint(P1);
printf("(%d,%d)\n",P.absis,P.ordinat);
untuk menampilkan nilai koordinat (x,y)

int IsSame (Point P1, Point P2)
{
          if ((P1.absis==P2.absis) && (P1.ordinat==P2.ordinat))
                   return 1;                                                       
          else
                   return 0;
}
Jika nilai P1 absis sama dengan P2 absis dan P1 ordinat sama dengan P2 ordinat maka diberi nilai 1

          if (IsSame (P1,P2))
                   printf ("\nKedua titik sama");
          else
                   printf("\nKedua titik tidak sama");
jika nilai IsSame (P1,P2) adalah 1 maka akan menghasilkan output “kedua titik sama”, sebaliknya salah atau IsSame(P1,P2) tidak 1 maka akan menghasilkan output “Kedua titik tidak sama”.

Coding 2 :
#include
#include
#include
#define Max 21

typedef struct{
     int TI[Max-1];
     int Neff;
}TabInt;

void MakeEmpty(TabInt *T)
{
     (*T).Neff=0;
}

int LastIdx(TabInt T)
{
     return T.Neff;
}

void BacaIsi(TabInt *T)
{
     int i,N;
     printf("\n");
     printf("\nBanyaknya elemen yang akan dientri : ");
     scanf("%d",&N);
     printf("Masukkan isi :\n");

     for(i=1;i<=N;i++)
     {
          printf(">>%d>> ",i);
           scanf("%d", &((*T).TI[i]));
     }
     (*T).Neff=N;
}

void TulisIsi(TabInt T)
{
     int i;
     printf("\n");
     if(LastIdx(T)==0)
           printf("Tabel kosong");
     else
     {
           for(i=1;i<=LastIdx(T);i++)
                printf("%d\t",(T).TI[i]);
     }
     printf("\n");
}

int sumElemen(TabInt T)
{
     int i, jumlah=0;
     printf("\n");
     for(i=1;i<=LastIdx(T);i++)
     {
           jumlah+=T.TI[i];
     }
     return jumlah;

}

float averageElemen(TabInt T)
{
     int i;
     float jumlah=0, rata=0;
     printf("\n");

     for(i=1;i<=LastIdx(T);i++)
     {
           jumlah+=T.TI[i];
     }
     rata=jumlah/LastIdx(T);
     return rata;
}

int sumKelipatan2(TabInt T)
{
     int i, jumlahKelipatan2=0;
     printf("\n");
     for(i=1;i<=LastIdx(T);i++)
     {
           if(T.TI[i]%2==0)
           {
                jumlahKelipatan2+=T.TI[i];
           }
          
     }
     return jumlahKelipatan2;
}

int nilaiMAX(TabInt T)
{
     int i, nilaiMax=T.TI[1];
     printf("\n");
     for(i=1;i<=LastIdx(T);i++)
     {
           if(nilaiMax
           {
                nilaiMax=T.TI[i];
           }   
          
     }
     return nilaiMax;
}

void createArr2(TabInt *T, int N)
{
     int i,kelipatan2=2;

     for(i=1;i<=N;i++)
     {
           (*T).TI[i]=kelipatan2;
           kelipatan2+=2;
     }

     printf("\n");
     for(i=1;i<=N;i++)
     {
           printf("%d\t",(*T).TI[i]);
     }
     printf("\n");
}
void main()
{
     TabInt T;
     int N;
     char pil;
     MakeEmpty(&T);
     do
     {
           system("cls");
           printf("========MENU========");
           printf("\n1. Make Empty\n");
           printf("2. Input Element Tabel\n");
           printf("3. Lihat Tabel\n");
           printf("4. Jumlah Elemen\n");
           printf("5. Rata-Rata Elemen\n");
           printf("6. Jumlah Bilangan yang Kelipatan 2\n");
           printf("7. Nilai MAX\n");
           printf("8. Mengubah Isi Array dengan Bilangan Genap\n");
           printf("Esc untuk Keluar\n");
           printf("\nMasukkan pilihan menu : ");
           pil=getch();

           switch(pil)
           {
                case '1' :
                     MakeEmpty(&T);
                     printf("\nTabel sudah dikosongkan !");
                     getch();
                     break;
                case '2' :
                     BacaIsi(&T);
                     getch();
                     break;
                case '3' :
                     printf("\nIsi Tabel : ");
                     TulisIsi(T);
                     getch();
                     break;
                case '4' :
                     printf("\nJumlah semua nilai : %d",sumElemen(T));
                     getch();
                     break;
                case '5' :
                     printf("\nRata-rata semua nilai : %.2f",averageElemen(T));
                     getch();
                     break;
                case '6' :
                     printf("\nJumlah Bilangan yang Kelipatan 2 : %d",sumKelipatan2(T));
                     getch();
                     break;
                case '7' :
                     printf("\nNilai maksimum dalam array : %d",nilaiMAX(T));
                     getch();
                     break;
                case '8' :
                     printf("\nMasukkan jumlah elemen : ");
                     scanf("%d",&N);
                     createArr2(&T, N);
                     getch();
                     break;
           }
     }while(pil!=27);
}

Penjelasan :
void BacaIsi(TabInt *T)
{
          int i,N;
          printf("\n");
          printf("\nBanyaknya elemen yang akan dientri : ");
          scanf("%d",&N); à untuk memasukkan jumlah elemen yang dientri
          printf("Masukkan isi :\n");

          for(i=1;i<=N;i++) à perulangan untuk memasukkan nilai sebanyak N
          {
                   printf(">>%d>> ",i);
                   scanf("%d", &((*T).TI[i])); à untuk menuliskan nilai elemen yang dimasukkan
          }
          (*T).Neff=N;
}

int i;
          printf("\n");
          if(LastIdx(T)==0) à jika nilai T=0, maka tabel dinyatakan kosong
                   printf("Tabel kosong");
          else
          {
                   for(i=1;i<=LastIdx(T);i++) à jika nilai T tidak 0 maka akan terjadi perulangan yang menentukan nilai elemen tabel
                             printf("%d\t",(T).TI[i]); à memunculkan nilai yang diinputkan
          }
          printf("\n");

int sumElemen(TabInt T)
{
          int i, jumlah=0;
          printf("\n");
          for(i=1;i<=LastIdx(T);i++) à perulangan yang digunakan untuk menjumlahkan nilai elemen
          {
                   jumlah+=T.TI[i]; à penjumlahan setiap elemen
          }
          return jumlah;

}

          for(i=1;i<=LastIdx(T);i++)
          {
                   jumlah+=T.TI[i];
          }
          rata=jumlah/LastIdx(T); à untuk mengetahui rata-rata dari elemen yang diinputkan dengan cara menjumlahkan semua elemen kemudian dibagi dengan jumlah elemen (LastIdx(T))
          return rata;

          for(i=1;i<=LastIdx(T);i++)
          {
                   if(T.TI[i]%2==0) à jika nilai elemen (T.TI[i] dibagi 2 hasilnya tidak bersisa, maka akan diproses dibawah ini.
                   {
                             jumlahKelipatan2+=T.TI[i]; à untuk menjumlahkan elemen yang jika dibagi 2 hasilnya tidak bersisa.
                   }
                  
          }
          return jumlahKelipatan2;


          int i, nilaiMax=T.TI[1];à nilaiMax hanya ada 1
          for(i=1;i<=LastIdx(T);i++) à perulangan untuk mengecek setiap elemen
          {
                   if(nilaiMaxà jika nilaiMax lebih kecil dari suatu elemen (T.TI[i]) maka akan diteruskan proses di bawah ini.
                   {
                             nilaiMax=T.TI[i]; à nilaiMax diperoleh dari elemen yang paling besar
                   }       

          int i,kelipatan2=2;à elemen dimulai dari 2

          for(i=1;i<=N;i++) à perulangan untuk mendapatkan nilai elemen
          {
                   (*T).TI[i]=kelipatan2; à elemen = kelipatan2
                   kelipatan2+=2; à setiap elemen akan ditambahkan 2 sesuai rumus ini.