Pages

  • Home
  • Contact

Mel's Stories

    • Home
    • Travel
    • Review & Recommendation
    • _Beauty
    • Mind
    • Knowledge Sharing
    • Miscellaneous
    Langsung saja, ini saya share source code bahasa C buat program menghitung gaji pegawai berdasarkan lamanya waktu pegawai bekerja (Jam Pulang-Jam Datang).
    Program ini dibuat dalam satu project yaa :) 
    So, compile directly on your compiler guyss! <If you need it>  ^_^

     Untuk drivernya <main.c>
    #include <stdio.h>
    #include <stdlib.h>
    #include "upah.h"
    #include "boolean.h"

    int main()
    {
      /*Kamus*/
      int N,i;
     
     
      printf("Masukan jumlah pegawai: ");
      scanf("%d",&N);
      int NIP[N];
      Jam Datang[N];
      Jam Pulang[N];
      Jam SelisihJam[N];
      int Upah[N];
      int TotalUpah;
     
      for(i=0;i<N;i++)
      {
       printf("\n\nMasukan NIP Pegawai ke [%d]: ",i);
       scanf("%d",&NIP[i]);
       do{
          printf("\n\tMasukan jam Datang [%d] <HH:MM:SS>: ",i);
          bacaJam(&Datang[i]);
          printf("\tMasukan jam pulang [%d] <HH:MM:SS>: ",i);
          bacaJam(&Pulang[i]);
          }while(JLT(Datang[i],Pulang[i])==0);
      
        SelisihJam[i]=JMinus(Pulang[i],Datang[i]);
        Upah[i]=getHour(SelisihJam[i])*5000;
        TotalUpah= TotalUpah+ Upah[i];
      }
     
      for(i=0;i<N;i++)
      {
         printf("\n\nNIP pegawai [%d] ", NIP[i]);
         printf("\nJam Datang: "); tulisJam(Datang[i]);
         printf("\nJam Pulang: "); tulisJam(Pulang[i]);
         printf("\nUpah Pegawai= %d", Upah[i]);
      }
      printf("\n\nTotal Gaji= %d", TotalUpah);
      getch();   
      return 0;
    }

    Untuk  Upah.c:
    #ifndef _Jam_H
    #define _Jam_H
    #include <stdio.h>
    #include "boolean.h"

    typedef struct{
        int HH;
        int MM;
        int SS;
    }Jam;

    Jam JPlus(Jam J1, Jam J2);

    Jam JMinus(Jam J1, Jam J2);


    boolean isJValid(int H, int M, int S){
        return ((H<24)&&(M<60)&&(S<60)&&(H>=0)&&(M>=0)&&(S>=0)); }


    Jam makeJam(int HH, int MM, int SS){
        Jam JTemp;
        if (isJValid){
            JTemp.HH=HH;
            JTemp.MM=MM;
            JTemp.SS=SS;
            return JTemp; } }

    int getHour(Jam J){
        return J.HH; }
    int getMinute(Jam J){
        return J.MM; }
    int getSecond(Jam J){
        return J.SS; }
    void setHour(Jam *J, int HH){
        if (HH<24){
            (*J).HH=HH; } }
    void setMinute(Jam *J, int MM){
        if (MM<60){
            (*J).MM=MM; } }
    void setSecond(Jam *J, int SS){
        if (SS<60){
            (*J).SS=SS; } }

    void bacaJam(Jam *J){
        scanf("%d:%d:%d",&(*J).HH,&(*J).MM,&(*J).SS);
        }
    void tulisJam(Jam J){
        printf("%d:%d:%d",J.HH,J.MM,J.SS); }
    long jamToDetik(Jam J){
        return (((J.HH)*3600)+(J.SS)+((J.MM)*60)); }
    Jam detikToJam(long Detik){
        Jam JTemp;
        if (Detik<60){
            return makeJam(0,0,Detik); }
        else if (Detik<3600){
            return makeJam(0,(Detik/60),(Detik%60)); }
        else{
            return makeJam(Detik/3600,(Detik%3600)/60,(Detik%3600)%60); } }
           
    Jam nextDetik(Jam J){
        if (J.SS==59){
            if (J.MM==59){
                if (J.HH==23){
                    J=makeJam(0,0,0); }
                else{
                    J=makeJam((J.HH+1),0,0); } }
            else{
                J=makeJam((J.HH),(J.MM+1),(0)); } }
        else{
            J.SS=J.SS+1; }
        return J; }
       
    Jam nextNDetik(Jam J, int N){
        return JPlus(J,(detikToJam(N))); }
       
    Jam prevDetik(Jam J){
        if (J.SS==0){
            if (J.MM==0){
                J=makeJam((J.HH-1),59,59); }
            else{
            J=makeJam(J.HH,(J.MM-1),59); } }
        else{
            J.SS=J.SS-1;}
        return J;}
       
    Jam prevNDetik(Jam J, int N){
        return JMinus(J,(detikToJam(N))); }
       
       boolean JEQ(Jam J1, Jam J2){
        return ((J1.HH==J2.HH)&&(J1.MM==J2.MM)&&(J1.SS==J2.SS)); }
       

    boolean JNEQ(Jam J1, Jam J2){
        return !JEQ(J1,J2); }

    boolean JLT(Jam J1, Jam J2){
        if (J1.HH<J2.HH){
            return true; }
        else if (J1.MM<J2.MM){
            return true; }
        else if (J1.SS<J2.SS){
            return true; }
        else {
            return false; } }

    boolean JGT(Jam J1, Jam J2){
        if (JNEQ(J1,J2)){
            return !JLT(J1,J2); } }

    long durasi(Jam Jaw, Jam Jakh){
        return ((jamToDetik(Jakh))-(jamToDetik(Jaw))); }

    Jam JPlus(Jam J1, Jam J2){
        return (detikToJam((jamToDetik(J1))+(jamToDetik(J2)))); }

    Jam JMinus(Jam J1, Jam J2){
        return detikToJam((jamToDetik(J1))-(jamToDetik(J2))); }
    #endif

    Untuk Upah.h:
    /*File: Jam.h*/
    /*Prototype ADT Jam*/
    #ifndef _Jam_H
    #define _Jam_H

    #include "boolean.h"

    typedef struct{
        int HH; /*Jam*/
        int MM; /*Menit*/
        int SS; /*Detik*/
    }Jam;

    boolean isJValid(int H, int M, int S);
    Jam makeJam(int HH, int MM, int SS);
    int getHour(Jam J);
    int getMinute(Jam J);
    int getSecond(Jam J);
    void setHour(Jam *J, int HH);
    void setMinute(Jam *J, int MM);
    void setSecond(Jam *J, int SS);
    void bacaJam(Jam *J);
    void tulisJam(Jam J);
    long jamToDetik(Jam J);
    Jam detikToJam(long Detik);
    Jam nextDetik(Jam J);
    Jam nextNDetik(Jam J, int N);
    Jam prevDetik(Jam J);
    Jam prevNDetik(Jam J, int N);
    boolean JEQ(Jam J1, Jam J2);
    boolean JNEQ(Jam J1, Jam J2);
    boolean JLT(Jam J1, Jam J2);
    boolean JGT(Jam J1, Jam J2);
    long durasi(Jam Jaw, Jam Jakh);
    Jam JPlus(Jam J1, Jam J2);
    Jam JMinus(Jam J1, Jam J2);
    #endif











    Untuk boolean.h:
    #ifndef _Boolean_H
    #define _Boolean_H
    #define true 1
    #define false 0
    #define boolean unsigned char
    #endif
     
    Continue Reading
    Newer
    Stories
    Older
    Stories

    About me

    Photo Profile
    Melyana Sari Fransisca You can call me Mels.

    Im Bataknese, Catholic, Ugly, Sarcasm is my language, Meme is my life. Read More

    Instagram

    @melyanandp

    Twittwit

    Tweets by @melyanasarii

    recent posts

    Labels

    Beauty Competition Knowledge Mind Recommendation Review Sharing Travel

    Blog Archive

    • Agustus 2020 (1)
    • Mei 2020 (1)
    • Juli 2019 (1)
    • Maret 2019 (2)
    • Agustus 2018 (2)
    • Mei 2018 (1)
    • April 2018 (1)
    • Maret 2018 (7)
    • Februari 2018 (1)
    • Desember 2016 (2)
    • Juli 2016 (1)
    • Januari 2016 (1)
    • November 2015 (1)
    • Oktober 2015 (1)
    • Agustus 2015 (1)
    • September 2013 (2)
    • Juni 2013 (1)
    • April 2013 (3)
    • Maret 2013 (1)
    • Februari 2013 (8)
    • Januari 2013 (1)
    • Desember 2012 (17)
    • November 2012 (12)

    Popular Posts

    • Cetaphil Gentle Skin Cleanser [Review]
    • Apa itu Resting Bitch Face?
    facebook Twitter instagram google plus

    Created with by BeautyTemplates | Modified By Me :)

    Back to top