Advertisement
akevintg

MATERI UAP I (CLIENT)

Jan 19th, 2016
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.95 KB | None | 0 0
  1. //LINK SOAL : https://www.dropbox.com/s/s0qki5su9pdoj8d/Screen%20Shot%202016-01-19%20at%208.07.24%20PM.png?dl=0
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <time.h>
  7. #include <sys/ipc.h>
  8. #include <sys/sem.h>
  9. #include <sys/shm.h>
  10. #include <sys/types.h>
  11.  
  12. struct data{
  13.     char namaUser[100];
  14.     char namaUserDepan[100];
  15.     char namaUserBelakang[100];
  16.     char genre[100];
  17.     char title[100];
  18. };
  19.  
  20. int main(){
  21.     struct sembuf s;
  22.     int h=shmget(123456,sizeof(struct data),IPC_CREAT|0666);
  23.     int e=semget(123456,1,IPC_CREAT|0666);
  24.     semctl(e,0,SETVAL,0);
  25.     int flag,i,spasi;
  26.     struct data *buku=(struct data*)shmat(h,NULL,0666);
  27.     printf("==========================================\nE-LIBRARY\nCLIENT SIDE\n==========================================\n");
  28.     do{
  29.         do{
  30.             flag=0;
  31.             printf("Masukan Nama User[2 Kata][EXIT to close]: ");
  32.             scanf("%[^\n]",buku->namaUser);getchar();
  33.             for(i=0;i<strlen(buku->namaUser);i++){
  34.                 if(buku->namaUser[i]==' '){
  35.                     spasi=i;
  36.                     flag++;
  37.                 }
  38.             }
  39.             if(strcasecmp("Exit",buku->namaUser)==0)
  40.                 break;
  41.         }while(flag!=1);
  42.         if(strcasecmp("Exit",buku->namaUser)!=0){
  43.             //pecah dulu nama user jadi 2(depan belakang)
  44.             //masukin ke depanya dari sumber sampe spasi
  45.             for(i=0;i<spasi;i++){
  46.                 buku->namaUserDepan[i]=buku->namaUser[i];
  47.             }
  48.             //ulangin tapi masukinya ke belakang dari sumber setelah spasi sampe ais
  49.             int j=0;
  50.             for(i=spasi;i<strlen(buku->namaUser);i++){
  51.                 buku->namaUserBelakang[j]=buku->namaUser[i];
  52.                 j++;
  53.             }
  54.             do{
  55.                 flag=0;
  56.                 printf("Masukan Nama Genre[Horror | Fantasy | Science]: ");
  57.                 scanf("%[^\n]",buku->genre);getchar();
  58.                 if(strcasecmp("Horror",buku->genre)==0||strcasecmp("Science",buku->genre)==0||strcasecmp("Fantasy",buku->genre)==0)
  59.                     flag=1;
  60.             }while(flag==0);
  61.             if(strcasecmp("Horror",buku->genre)==0){
  62.                 do{
  63.                     flag=0;
  64.                     printf("Masukan Nama Title[X-FILE | Dracula]{case sensitive}: ");
  65.                     scanf("%[^\n]",buku->title);getchar();
  66.                     if(strcmp("Dracula",buku->title)==0||strcmp("X-FILE",buku->title)==0)
  67.                         flag=1;
  68.                 }while(flag==0);
  69.             }
  70.             else if(strcasecmp("Science",buku->genre)==0){
  71.                 do{
  72.                     flag=0;
  73.                     printf("Masukan Nama Title[AlgoProg | Future of Mind]{case sensitive}: ");
  74.                     scanf("%[^\n]",buku->title);getchar();
  75.                     if(strcmp("AlgoProg",buku->title)==0||strcmp("Future of Mind",buku->title)==0)
  76.                         flag=1;
  77.                 }while(flag==0);
  78.             }
  79.             else if(strcasecmp("Fantasy",buku->genre)==0){
  80.                 do{
  81.                     flag=0;
  82.                     printf("Masukan Nama Title[Harry Potter | Allegiant]{case sensitive}: ");
  83.                     scanf("%[^\n]",buku->title);getchar();
  84.                     if(strcmp("Harry Potter",buku->title)==0||strcmp("Allegiant",buku->title)==0)
  85.                         flag=1;
  86.                 }while(flag==0);
  87.             }
  88.         }
  89.         s.sem_num=0;
  90.         s.sem_op=1;
  91.         s.sem_flg=0;
  92.         semop(e,&s,1);
  93.         printf("Masukan Input\n<press ENTER>\n\n");
  94.         getchar();
  95.     }while(strcasecmp("Exit",buku->namaUser)!=0);
  96.     shmdt(&buku);
  97.     shmctl(h,IPC_RMID,0);
  98.     semctl(e,0,IPC_RMID);
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement