ADT Jam


Hello !
Jumpa lagi dengan saya ! Udah pada mandi kan ??? =P

Oke,
Berhubung engga ada yang pengen diposting, posting sekena nya aja deh nih ya,,, =P

Berhubung lagi jaman tugas, berhubung inet nya lagi kenceng, berhubung jarinya lagi gatel, berhubung mata lagi bening, berhubung badan males dimandiin, dan berhubung Sinta Jojo udah ga jaman lagi, jadilah saya melabil untuk membuat postingan tugas -________-

Dan tugas yang sangat beruntung untuk menampangkan dirinya di blog saya ini adalah,,,
Jeng jenggggg,,,

ADeTe JAM

*plok plok plok plokkkkkkk,,, :D

Selamat bermules mules menikmati file Jam.c sama Main.c hasil kodingan versi saya.
Kritik, saran, ejekan, celaan, serta makian saya terima dengan hati terbuka :D

Terimakasih wassalamualaikumwarahmatullahi wabarakatuh ^_^

/* file : jam.c */

#include "JAM.H"

/*Definisi primitif*/
/***Kelompok validasi terhadap tipe***/

int isJValid (int h, int m, int s)
/*mengirim true jika h, m, s dapat membentuk j yang valid*/

{ jam j;
int valid;
j.hour = h;
j.minute = m;
j.second = s;
if (j.hour > 23 | j.minute > 59 | j.second > 59)
valid = 1;
else
valid = 0;
return valid;
}
/*** Konstruktor ***/
/*Membentuk sebuah jam dari komponen - komponennya*/

jam makeJam (int hh, int mm, int ss)
/*Membentuk sebuah jam dari komponen-komponennya yang valid*/
/*Pre cond : hh, mm, ss valid untuk membentuk jam*/
{
jam j;
j.hour = hh;
j.minute = mm;
j.second = ss;
return j;
}
/*Operasi-operasi terhadap komponen : selektor get dan set*/
/*** Selektor ***/

int hour (jam j)
/*mengirimkan bagian hh (Hour) dari jam*/
{
return (j.hour);
}

int minute (jam j)
/*mengirimkan bagian mm (Minute) dari jam*/
{
return (j.minute);
}

int second (jam j)
/*mengirimkan bagian ss (Second) dari jam*/
{
return (j.second);
}

/*Pengubah nilai komponen*/

void setHH (jam *j, int newHH )
/*mengubah nilai komponen HH dari j*/
{
(*j).hour = newHH;
}

void setMM (jam *j, int newMM )
/*mengubah nilai komponen MM dari j*/
{
(*j).minute = newMM;
}
void setSS (jam *j, int newSS )
/*mengubah nilai komponen SS dari j*/
{
(*j).second = newSS;
}

/*** Destruktor ***/
/*tidak perlu. Akan dijelaskan kemudian*/

/***Kelompok baca/tulis***/

void bacaJam (jam *j)
/*I.S. : j tidak terdefinisi*/
/*F.S. : j terdefinisi dan merupakan jam yang valid*/
/*proses : mengulangi membaca komponen h, m, s sehingga membentuk j yang valid*/
{

printf ("masukkan jam = ");
scanf ("%ld",&((*j).hour));
printf ("masukkan menit = ");
scanf ("%ld",&((*j).minute));
printf ("masukkan detik = ");
scanf ("%ld",&((*j).second));
printf ("\n");
}

void tulisJam (jam j)
/*I.S. : j sembarang*/
/*F.S. : nilai j ditulis dg format hh:mm:ss*/
/*proses : menulis nilai ke layar*/
{

printf ("pukul = %ld:%ld:%ld",j.hour,j.minute,j.second);
}

/*** Kelompok konversi terhadap tipe ***/
long int jamToDetik (jam j)
/*diberikan sebuah jam, mengkonversi menjadi detik*/
/*rumus : detik = 3600*hour+menit*60+detik*/
/*nilai maksimum = 3600*23+59*60+59*60*/
/*hati-hati dengan representasi integer pada bahasa implementasi, kebanyakan sistem mengimplementasi integer*/
/*bernilai maksimum kurang dari nilai maksimum hasil konversi*/
{
return (j.hour*3600+j.minute*60+j.second);
}

jam detikToJam (long int n)
/*mengirim konversi detik ke jam*/
/*pada beberapa bahasa, representasi integer tidak cukup untuk menampung n*/
{
jam j;
long int sisa;

j.hour = n/3600;
sisa = n%3600;
j.minute = sisa/60;
j.second = sisa%60;
return j;
}

/*** Kelompok operasi terhadap tipe ***/
/*kelompok operator relational*/

int JEQ (jam j1, jam j2)
/*mengirimkan 1 jika j1=j2, 0 jika tidak*/
{
if (j1.hour == j2.hour && j1.minute == j2.minute && j1.second == j2.second)
return 1;
else return 0;
}

int JNEQ (jam j1, jam j2)
/*mengirimkan 1 jika j1 tidak sama dengan j2*/
{
if (j1.hour != j2.hour && j1.minute != j2.minute && j1.second != j2.second)
return 1;
else return 0;
}

int JLT (jam j1, jam j2)
/*mengirimkan 1 jika j1
{
long int d1,d2;
d1=jamToDetik(j1);
d2=jamToDetik(j2);

if (d1 <>
return 1;
else return 0;
}


int JGT (jam j1, jam j2)
/*mengirimkan 1 jika j1>j2, 0 jika tidak*/
{
long int d1,d2;
d1=jamToDetik(j1);
d2=jamToDetik(j2);

if (d1 > d2)
return 1;
else return 0;
}

jam JPlus (jam j1, jam j2)
/*menghasilkan j1+j2, dalam bentuk jam*/
{
jam jplus;
long int d1,d2,dhasil;
d1=jamToDetik(j1);
d2=jamToDetik(j2);

dhasil=d1+d2;
jplus=detikToJam(dhasil);
return jplus;
}

jam JMinus (jam j1, jam j2)
/*menghasilkan j1-j2, dalam bentuk jam*/
/*Precond : j1<=j2*/
{
jam jmin;
long int d1,d2,dhasil;
d1=jamToDetik(j1);
d2=jamToDetik(j2);

dhasil=d1-d2;

jmin=detikToJam(dhasil);
return jmin;
}

jam nextDetik (jam j)
/*mengirim 1 detik setelah j dalam bentuk jam*/
{
jam hasil;
long int a,tbh;
a=jamToDetik(j);

tbh=a+1;
hasil=detikToJam(tbh);
return hasil;
/*
if ((j.second+1)<60 div="">
j.second = j.second + 1;
else
{
j.second = 0;
if ((j.minute+1)<60 div="">
j.minute = j.minute + 1;
else
{
j.minute = 0;
if ((j.hour+1)<24 div="">
j.hour = j.hour + 1;
else
j.hour = 24;
}
}
return j;*/
}

jam nextNDetik (jam j, int n)
/*mengirim n detik setelah j dalam bentuk jam*/
{
jam hasil;
long int a,tambah;
a=jamToDetik(j);

tambah=a+n;
hasil=detikToJam(tambah);
return hasil;
/*
{
if ((j.second+n)>60)
{
j.second = (n-(60-j.second));
j.minute = j.minute+1;
if (j.minute>59)
{
j.minute = 0;
if (j.minute<59 div="">
j.hour=j.hour+1;
}
}
else
{
if ((j.second+n)==60)
{
j.second = 0;
j.minute = j.minute+1;
}
else
j.second=j.second+n;
}
return j;
} */
}

jam prevDetik (jam j)
/*mengirim 1 detik sebelum j dalam bentuk jam*/
{
jam hasil;
long int a,krg;
a=jamToDetik(j);

krg=a-1;
hasil=detikToJam(krg);
return hasil;
/*
if (((j.second)==0) && ((j.minute)==0))
{
j.second = 59;
j.minute = 59;
j.hour=j.hour-1;
}
else
if ((j.second)==0)
{
j.second = 59;
j.minute = j.minute-1;
}
else
j.second = j.second -1;
return j;
*/
}


jam prevNDetik (jam j, long int n)
/*mengirim n detik sebelum j dalam bentuk jam*/
{
jam hasil;
long int a,kurang;
a=jamToDetik(j);

kurang=a-n;
hasil=detikToJam(kurang);
return hasil;
/*
if (((j.second)==0) && ((j.minute)==0))
{
j.second = 60-n;
j.minute = 59;
j.hour = j.hour-1;
}
else
if ((j.second)==0)
{
j.second = 60-n;
j.minute = j.minute-1;
}
else
{
if (j.second
{
j.second=n-j.second;
j.minute=j.minute-1;
}
else
{
j.second = j.second -n;
}
}
return j;*/
}

long int durasi (jam jaw, jam jakh)
/*mengirim jakh-jaw dalam detik, dengan kalkulasi*/
/*hasilnya negatif jika jaw>jakh*/
{
long int dur,daw,dakh;

daw=jamToDetik(jaw);
dakh=jamToDetik(jakh);

dur=dakh - daw;
return dur;
}

/* file : MAIN.C (main program) */

#include "JAM.H"

void main()
{
jam j,j1,j2, j3, konv, kejam, jplus, jmin, jn1, jnn, jp, jpn;
int pil,hh,mm,ss,valid,sama,kurang,besar,n,det;
long int dt = 3661;
long int konversi, dur;


clrscr();

j=makeJam (10,10,10);
j1=makeJam (18,18,18);
j2=makeJam (12,12,12);
j3=makeJam (1,1,1);

do
{
clrscr();
printf ("MENU UTAMA");
printf ("\n\n 1. Buat jam"); printf (" *========================*");
printf ("\n 2. Lihat komponen j,m,s"); printf (" | |");
printf ("\n 3. Set komponen j,m,s"); printf (" | DEFAULT PUKUL 10:10:10 |");
printf ("\n 4. Next Detik"); printf (" | |");
printf ("\n 5. Next n Detik"); printf (" *========================*");
printf ("\n 6. 1 detik sebelum");
printf ("\n 7. n detik sebelum");

printf ("\n\nKONVERSI");

printf ("\n\n 8. Konversi Jam ke Detik");
printf ("\n 9. Konversi Detik ke Jam");
printf ("\n\nOPERASI");
 printf (" *========================*");printf ("\n | |");
printf ("\n10. Buat jam 1 & jam 2"); printf (" | DEFAULT |");
printf ("\n11. Bandingkan jam 1 & jam 2"); printf (" | jam 1 PUKUL 18:18:18 |");
printf ("\n12. jam 1 + jam 2"); printf (" | jam 2 PUKUL 12:12:12 |");
printf ("\n13. jam 1 - jam 2"); printf (" | |");
printf ("\n14. Durasi"); printf (" | |");
printf ("\n 0. EXIT"); printf (" *========================*");
printf ("\n\n Masukkan Pilihan = ");
scanf ("%d",&pil);
printf ("\n\n");

switch (pil)
{
case 0 :
clrscr ();
printf (".:: Tekan Sembarang Tombol untuk EXIT ::.");
break;

case 1 :
clrscr();
bacaJam (&j);
valid = isJValid (j.hour,j.minute,j.second);
if (valid == 1)
{
 j=makeJam (10,10,10);
 printf ("Maaf, input tidak valid \n");
 printf ("Mohon masukkan jam yang valid");
 break;
}
else
{
 tulisJam (j);
 break;
}
case 2 :
clrscr();
tulisJam (j);
getch();
printf ("\n\njam = %d",hour(j));
getch ();
printf ("\nmenit = %d",minute(j));
getch();
printf ("\ndetik = %d",second(j));
break;

case 3 :
clrscr();
printf ("Jam sekarang ");
tulisJam (j);
printf ("\n\nMasukkan jam baru = ");
scanf ("%d",&hh);
setHH(&j,hh);

printf ("Masukkan menit baru = ");
scanf ("%d",&mm);
setMM(&j,mm);

printf ("Masukkan detik baru = ");
scanf ("%d",&ss);
setSS(&j,ss);

valid = isJValid (j.hour,j.minute,j.second);
if (valid == 1)
{
 j = makeJam (10,10,10);
 printf ("\nMaaf, input tidak valid \n");
 printf ("Mohon masukkan jam yang valid");
 break;
}
else
{
 printf ("\nJam yang telah diupdate ");
 tulisJam (j);
 break;
}

case 4 :
clrscr();
printf ("Jam sekarang ");
tulisJam (j);
jn1=nextDetik(j);
printf ("\nJam berikutnya ");
tulisJam (jn1);
break;

case 5 :
clrscr();
tulisJam (j);
printf ("\nTambah berapa detik ? ");
scanf ("%d",&det);
jnn=nextNDetik(j,det);
printf ("Jam berikutnya ");
tulisJam (jnn);
break;

case 6 :
clrscr();
printf ("Jam sekarang ");
tulisJam (j);
jp=prevDetik(j);
printf ("\n1 detik sebelumnya ");
tulisJam (jp);
break;

case 7 :
clrscr();
tulisJam (j);
printf ("\nKurang berapa detik ? ");
scanf ("%d",&det);
jpn=prevNDetik(j,det);
printf ("detik sebelumnya ");
tulisJam (jpn);
break;

case 8 :
clrscr();
printf ("Jam yang akan dikonversi \n\n");
bacaJam (&j3);
valid = isJValid (j3.hour,j3.minute,j3.second);
if (valid == 1)
{
 j3=makeJam (1,1,1);
 printf ("Maaf, input tidak valid \n");
 printf ("Mohon masukkan jam yang valid");
 break;
}
else
{
 tulisJam (j3);
}

getch();
konversi = jamToDetik(j3);
printf ("\n\nHasil konversi = %ld detik", konversi);
break;

case 9 :
clrscr();
printf ("Masukkan detik = ");
scanf ("%d",&dt);
kejam=detikToJam(dt);
printf ("Jam hasil konversi ");
tulisJam(kejam);
break;


case 10 :
clrscr();
printf ("jam 1\n");
bacaJam (&j1);
valid = isJValid (j1.hour,j1.minute,j1.second);
if (valid == 1)
{
 j1 = makeJam (18,18,18);
 printf ("\nMaaf, input tidak valid \n");
 printf ("Mohon masukkan jam yang valid");
 break;
}
else
{
 printf ("\nJam 1 ");
 tulisJam (j1);
 getch();
}

printf ("\n\njam 2\n");
bacaJam (&j2);
valid = isJValid (j2.hour,j2.minute,j2.second);
if (valid == 1)
{
 j2 = makeJam (12,12,12);
 printf ("\nMaaf, input tidak valid \n");
 printf ("Mohon masukkan jam yang valid");
 break;
}
else
{
 printf ("\nJam 2 ");
 tulisJam (j2);
 break;
}


case 11 :
clrscr();
printf ("jam 1 ");
tulisJam (j1);
printf ("\n");
printf ("jam 2 ");
tulisJam (j2);
sama = JEQ (j1,j2);
kurang = JLT (j1,j2);
besar = JGT (j1,j2);
if (sama == 1)
printf ("\n\nkedua jam sama");
else
if (kurang == 1)
printf ("\n\njam 1 kurang dari jam 2");
else
if (besar == 1)
printf ("\n\njam 1 lebih besar dari jam 2");
break;

case 12 :
clrscr();
printf ("jam1 ");
tulisJam(j1);
printf ("\njam2 ");
tulisJam(j2);
jplus=JPlus(j1,j2);
printf("\n\nHasil penjumlahan ");
tulisJam(jplus);
break;

case 13 :
clrscr();
if (JGT(j1,j2)==1)
{
 printf ("jam1 ");
 tulisJam(j1);
 printf ("\njam2 ");
 tulisJam(j2);
 jmin=JMinus(j1,j2);
 printf("\n\nHasil pengurangan ");
 tulisJam(jmin);
 break;
}
else
{
printf ("jam 1 ");
tulisJam (j1);
printf ("\njam 2 ");
tulisJam (j2);
printf ("\n\nJam 1 kurang dari jam 2 !");
printf ("\nMohon kembali ke Menu dan masukkan jam 1 yang valid");
break;
}

case 14 :
clrscr();
printf ("jam awal ");
tulisJam(j1);
printf ("\njam akhir ");
tulisJam(j2);
dur=durasi(j1,j2);
printf("\n\nDurasi = %ld detik", dur);
break;
}
getch ();
} while (pil !=0);
}

5 blogger nyasar di sini:

  1. Ini bahasa planet mana??
    smangat smangat!
    =)

    ReplyDelete
  2. mantab.... asik banget ya bikin proghram itu... pake adt, fungsi, prosedur lagi...
    pas hari ini gue ujian dasar pemrograman lagi... thx yaa...

    ReplyDelete
  3. jam.h nya ga ada..??

    ReplyDelete
  4. kita satu kampus kakak :D

    ReplyDelete
  5. PANJANG AMAT GAN :V

    ReplyDelete

 
Mahassahasi Blog. Base design by Ipietoon edited by mahassahasi