Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // LINK SOAL https://www.dropbox.com/sh/qaih86hmdsadrrh/AAARgvRLhdMbFfQj4TuFLNRna?dl=0
- // LINK TEMPLATE : http://pastebin.com/Rc7A08xG
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include <sys/ipc.h>
- #include <sys/types.h>
- #include <sys/sem.h>
- #include <sys/shm.h>
- struct data{
- char nama[21];
- char nat[10];
- char gender[10];
- int j_pen;
- int j_adl;
- int j_chl;
- char destination[10];
- };
- int main(){
- struct sembuf s;
- int h=shmget(121212, sizeof(struct data), IPC_CREAT|0666);
- int e=semget(121212, 1, IPC_CREAT|0666);
- struct data *book=(struct data *)shmat(h,NULL,0666);
- semctl(e,0,SETVAL,0);
- printf("BOOKING - CLIENT\n==============================\n\n");
- int flag=0,i;
- do{
- do{
- flag=0;
- printf("Input Your Name [5..20] : ");
- scanf("%[^\n]",book->nama);getchar();
- if(strlen(book->nama)>=5&&strlen(book->nama)<=20)
- flag=1;
- else if(strcasecmp(book->nama,"exit")==0)
- break;
- }while(flag==0);
- if(strcasecmp(book->nama,"exit")!=0){
- do{
- flag=0;
- printf("Input Your Nationality [Local | Tourist] : ");
- scanf("%[^\n]",book->nat);getchar();
- if(strcasecmp(book->nat,"Local")==0||strcasecmp(book->nat,"Tourist")==0)
- flag=1;
- }while(flag==0);
- do{
- flag=0;
- printf("Input Your Gender [Male | Female] : ");
- scanf("%[^\n]",book->gender);getchar();
- if(strcmp(book->gender,"Male")==0||strcmp(book->gender,"Female")==0)
- flag=1;
- }while(flag==0);
- do{
- flag=0;
- printf("Passenger [1...10] : ");
- scanf("%d",&book->j_pen);getchar();fflush(stdin);
- if(book->j_pen>0&&book->j_pen<=10)
- flag=1;
- }while(flag==0);
- do{
- flag=0;
- char answer;
- printf("Any Child[Y|N] ");
- scanf("%c",&answer);getchar();fflush(stdin);
- if(answer=='Y'){
- do{
- flag=0;
- printf("Adults : ");
- scanf("%d",&book->j_adl);getchar();fflush(stdin);
- if(book->j_adl>0&&book->j_adl<=book->j_pen){//validasiin harus jumlah adul<=jumlah penumpang
- flag=1;
- book->j_chl=book->j_pen-book->j_adl;//kalo udah itung childnya berapa
- }
- }while(flag==0);
- flag=1;
- }
- else if(answer=='N'){//kalo ga ada child
- book->j_adl=book->j_pen;//langsung masukin semua penumpang ke adult
- book->j_chl=0;//childnya 0
- flag=1;
- }
- }while(flag==0);
- do{
- flag=0;
- printf("Destination [Jakarta | Bandung | Malang] : ");
- scanf("%[^\n]",book->destination);getchar();
- if(strcmp(book->destination,"Jakarta")==0||strcmp(book->destination,"Malang")==0||strcmp(book->destination,"Bandung")==0)
- flag=1;
- }while(flag==0);
- }
- s.sem_num=0;
- s.sem_op=1;
- s.sem_flg=0;
- semop(e,&s,1);
- printf("Input Data, Press Enter\n\n");
- getchar();
- }while(strcasecmp(book->nama,"exit")!=0);
- shmdt(&book);
- shmctl(h,IPC_RMID,0);
- semctl(e,0,IPC_RMID);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement