Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //LINK SOAL : https://www.dropbox.com/s/s0qki5su9pdoj8d/Screen%20Shot%202016-01-19%20at%208.07.24%20PM.png?dl=0
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include <sys/ipc.h>
- #include <sys/sem.h>
- #include <sys/shm.h>
- #include <sys/types.h>
- struct data{
- char namaUser[100];
- char namaUserDepan[100];
- char namaUserBelakang[100];
- char genre[100];
- char title[100];
- };
- int main(){
- struct sembuf s;
- int h=shmget(123456,sizeof(struct data),IPC_CREAT|0666);
- int e=semget(123456,1,IPC_CREAT|0666);
- semctl(e,0,SETVAL,0);
- int flag,i,spasi;
- struct data *buku=(struct data*)shmat(h,NULL,0666);
- printf("==========================================\nE-LIBRARY\nCLIENT SIDE\n==========================================\n");
- do{
- do{
- flag=0;
- printf("Masukan Nama User[2 Kata][EXIT to close]: ");
- scanf("%[^\n]",buku->namaUser);getchar();
- for(i=0;i<strlen(buku->namaUser);i++){
- if(buku->namaUser[i]==' '){
- spasi=i;
- flag++;
- }
- }
- if(strcasecmp("Exit",buku->namaUser)==0)
- break;
- }while(flag!=1);
- if(strcasecmp("Exit",buku->namaUser)!=0){
- //pecah dulu nama user jadi 2(depan belakang)
- //masukin ke depanya dari sumber sampe spasi
- for(i=0;i<spasi;i++){
- buku->namaUserDepan[i]=buku->namaUser[i];
- }
- //ulangin tapi masukinya ke belakang dari sumber setelah spasi sampe ais
- int j=0;
- for(i=spasi;i<strlen(buku->namaUser);i++){
- buku->namaUserBelakang[j]=buku->namaUser[i];
- j++;
- }
- do{
- flag=0;
- printf("Masukan Nama Genre[Horror | Fantasy | Science]: ");
- scanf("%[^\n]",buku->genre);getchar();
- if(strcasecmp("Horror",buku->genre)==0||strcasecmp("Science",buku->genre)==0||strcasecmp("Fantasy",buku->genre)==0)
- flag=1;
- }while(flag==0);
- if(strcasecmp("Horror",buku->genre)==0){
- do{
- flag=0;
- printf("Masukan Nama Title[X-FILE | Dracula]{case sensitive}: ");
- scanf("%[^\n]",buku->title);getchar();
- if(strcmp("Dracula",buku->title)==0||strcmp("X-FILE",buku->title)==0)
- flag=1;
- }while(flag==0);
- }
- else if(strcasecmp("Science",buku->genre)==0){
- do{
- flag=0;
- printf("Masukan Nama Title[AlgoProg | Future of Mind]{case sensitive}: ");
- scanf("%[^\n]",buku->title);getchar();
- if(strcmp("AlgoProg",buku->title)==0||strcmp("Future of Mind",buku->title)==0)
- flag=1;
- }while(flag==0);
- }
- else if(strcasecmp("Fantasy",buku->genre)==0){
- do{
- flag=0;
- printf("Masukan Nama Title[Harry Potter | Allegiant]{case sensitive}: ");
- scanf("%[^\n]",buku->title);getchar();
- if(strcmp("Harry Potter",buku->title)==0||strcmp("Allegiant",buku->title)==0)
- flag=1;
- }while(flag==0);
- }
- }
- s.sem_num=0;
- s.sem_op=1;
- s.sem_flg=0;
- semop(e,&s,1);
- printf("Masukan Input\n<press ENTER>\n\n");
- getchar();
- }while(strcasecmp("Exit",buku->namaUser)!=0);
- shmdt(&buku);
- shmctl(h,IPC_RMID,0);
- semctl(e,0,IPC_RMID);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement