akevintg

(ALT) QUIZ II Operating System (SERVER)

Jan 6th, 2016
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.56 KB | None | 0 0
  1. // LINK SOAL https://www.dropbox.com/sh/qaih86hmdsadrrh/AAARgvRLhdMbFfQj4TuFLNRna?dl=0
  2. // LINK TEMPLATE : http://pastebin.com/Rc7A08xG
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <time.h>
  8. #include <sys/ipc.h>
  9. #include <sys/types.h>
  10. #include <sys/sem.h>
  11. #include <sys/shm.h>
  12.  
  13. struct data{
  14.     char nama[21];
  15.     char nat[10];
  16.     char gender[10];
  17.     int j_pen;
  18.     int j_adl;
  19.     int j_chl;
  20.     char destination[10];
  21. };
  22.  
  23. int main(){
  24.     struct sembuf s;
  25.     int h=shmget(121212, sizeof(struct data), IPC_CREAT|0666);
  26.     int e=semget(121212, 1, IPC_CREAT|0666);
  27.     struct data *book=(struct data *)shmat(h,NULL,0666);
  28.     semctl(e,0,SETVAL,0);
  29.     printf("BOOKING - SERVER\n==============================\n\n");
  30.     int r1,r2,r3,r4;
  31.     do{
  32.         s.sem_num=0;
  33.         s.sem_op=-1;
  34.         s.sem_flg=0;
  35.         semop(e,&s,1);
  36.         if(strcasecmp(book->nama,"exit")!=0){
  37.             srand(time(NULL));
  38.             r1=rand()%5+2;//random 2-6
  39.             r2=rand()%9+71;//random G-O
  40.             r3=rand()%5;//random 0-4
  41.             r4=rand()%4+99;//random c-f
  42.             if(strcasecmp(book->nat,"Local")==0){  
  43.                 printf("=========================\n");
  44.                 printf("BOOKING CODE : LC%d%c%d%c\n",r1,r2,r3,r4);//print satu-satu
  45.                 printf("=========================\n\n");
  46.             }
  47.             else if(strcasecmp(book->nat,"Tourist")==0){       
  48.                 printf("=========================\n");
  49.                 printf("BOOKING CODE : TS%d%c%d%c\n",r1,r2,r3,r4);
  50.                 printf("=========================\n\n");
  51.             }
  52.             if(strcasecmp(book->gender,"Male")==0)     
  53.                 printf("Name \t\t: Mr. %s\n",book->nama);//bisa pake sprintf
  54.             else {
  55.                 char temp[50];
  56.                 sprintf(temp,"Mrs. %s",book->nama);//pake cara sprintf
  57.                 printf("Name \t\t: %s\n",temp);
  58.             }
  59.             printf("Nationality \t: %s\n",book->nat);
  60.             printf("Adult \t\t: %d\n",book->j_adl);
  61.             printf("Child \t\t: %d\n",book->j_chl);
  62.             printf("Destination \t: %s\n",book->destination);
  63.             int tujuan;
  64.             float pajak,total;
  65.             if(strcasecmp(book->destination,"Jakarta")==0)
  66.                 tujuan=1000000;
  67.             else if(strcasecmp(book->destination,"Bandung")==0)
  68.                 tujuan=1500000;
  69.             else if(strcasecmp(book->destination,"Malang")==0)
  70.                 tujuan=2500000;
  71.             if(strcasecmp(book->nat,"Local")==0){  
  72.                 pajak=0.1;//10% itu 0.1
  73.             }
  74.             else if(strcasecmp(book->nat,"Tourist")==0){
  75.                 pajak=0.25;//25% itu 0.25
  76.             }
  77.             total=(tujuan*(1+pajak)*book->j_adl)+(tujuan*(1+pajak)*book->j_chl*0.5);//ati2 tanda kurungnya
  78.             printf("Total Cost\t: Rp %.2f\n",total);
  79.             printf("THANK YOU, HAVE A NICE TRIP\n=========================\n\n\n");
  80.         }
  81.     }while(strcasecmp(book->nama,"exit")!=0);
  82.     shmdt(&book);
  83.     shmctl(h,IPC_RMID,0);
  84.     semctl(e,0,IPC_RMID);
  85. }
Advertisement
Add Comment
Please, Sign In to add comment