Advertisement
akevintg

(ALT) QUIZ II Operating System (CLIENT)

Jan 6th, 2016
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.85 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 - CLIENT\n==============================\n\n");
  30.     int flag=0,i;
  31.     do{
  32.         do{
  33.             flag=0;
  34.             printf("Input Your Name [5..20] : ");
  35.             scanf("%[^\n]",book->nama);getchar();
  36.             if(strlen(book->nama)>=5&&strlen(book->nama)<=20)
  37.                 flag=1;
  38.             else if(strcasecmp(book->nama,"exit")==0)
  39.                 break;
  40.         }while(flag==0);
  41.         if(strcasecmp(book->nama,"exit")!=0){
  42.             do{
  43.                 flag=0;
  44.                 printf("Input Your Nationality [Local | Tourist] : ");
  45.                 scanf("%[^\n]",book->nat);getchar();
  46.                 if(strcasecmp(book->nat,"Local")==0||strcasecmp(book->nat,"Tourist")==0)
  47.                     flag=1;
  48.             }while(flag==0);
  49.             do{
  50.                 flag=0;
  51.                 printf("Input Your Gender [Male | Female] : ");
  52.                 scanf("%[^\n]",book->gender);getchar();
  53.                 if(strcmp(book->gender,"Male")==0||strcmp(book->gender,"Female")==0)
  54.                     flag=1;
  55.             }while(flag==0);
  56.             do{
  57.                 flag=0;
  58.                 printf("Passenger [1...10] : ");
  59.                 scanf("%d",&book->j_pen);getchar();fflush(stdin);
  60.                 if(book->j_pen>0&&book->j_pen<=10)
  61.                     flag=1;
  62.             }while(flag==0);
  63.             do{
  64.                 flag=0;
  65.                 char answer;
  66.                 printf("Any Child[Y|N] ");
  67.                 scanf("%c",&answer);getchar();fflush(stdin);
  68.                 if(answer=='Y'){
  69.                     do{
  70.                         flag=0;
  71.                         printf("Adults : ");
  72.                         scanf("%d",&book->j_adl);getchar();fflush(stdin);
  73.                         if(book->j_adl>0&&book->j_adl<=book->j_pen){//validasiin harus jumlah adul<=jumlah penumpang
  74.                             flag=1;
  75.                             book->j_chl=book->j_pen-book->j_adl;//kalo udah itung childnya berapa
  76.                         }
  77.                     }while(flag==0);
  78.                     flag=1;
  79.                 }
  80.                 else if(answer=='N'){//kalo ga ada child
  81.                     book->j_adl=book->j_pen;//langsung masukin semua penumpang ke adult
  82.                     book->j_chl=0;//childnya 0
  83.                     flag=1;
  84.                 }
  85.             }while(flag==0);
  86.             do{
  87.                 flag=0;
  88.                 printf("Destination [Jakarta | Bandung | Malang] : ");
  89.                 scanf("%[^\n]",book->destination);getchar();
  90.                 if(strcmp(book->destination,"Jakarta")==0||strcmp(book->destination,"Malang")==0||strcmp(book->destination,"Bandung")==0)
  91.                     flag=1;
  92.             }while(flag==0);
  93.         }
  94.         s.sem_num=0;
  95.         s.sem_op=1;
  96.         s.sem_flg=0;
  97.         semop(e,&s,1);
  98.         printf("Input Data, Press Enter\n\n");
  99.         getchar();
  100.     }while(strcasecmp(book->nama,"exit")!=0);
  101.     shmdt(&book);
  102.     shmctl(h,IPC_RMID,0);
  103.     semctl(e,0,IPC_RMID);
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement