Advertisement
akevintg

MATERI UAP II (SERVER)

Jan 20th, 2016
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.24 KB | None | 0 0
  1. // LINK SOAL : https://www.dropbox.com/s/s148os0ispnnpb3/S__5021795.jpg?dl=0
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <time.h>
  7. #include <ctype.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 provider[16];
  15.     int speed;
  16.     int price;
  17.     char area[100];
  18.     char tgl[100];//tambahan di soal ga ada
  19. };
  20.  
  21. int main(){
  22.     struct sembuf s;
  23.     int h=shmget(123456,sizeof(struct data),IPC_CREAT|0666);
  24.     int e=semget(123456,1,IPC_CREAT|0666);
  25.     semctl(e,0,SETVAL,0);
  26.     struct data *internet=(struct data*)shmat(h,NULL,0666);
  27.     int flag,i;
  28.     //biar ga boleh sama
  29.     char list_nama_yang_udah [100][100];
  30.     int jumlah=0;
  31.     printf("\n\n====================================\nPROGRAM REGISTRASI INTERNET - CLIENT\n====================================\n\n");
  32.     do{
  33.         printf("\nWaiting for Input\n");
  34.         s.sem_num=0;
  35.         s.sem_op=-1;
  36.         s.sem_flg=0;
  37.         semop(e,&s,1);
  38.         flag=0;//kondisi ga ada yg sama
  39.         for(i=0;i<jumlah;i++){
  40.             if(strcmp(list_nama_yang_udah[i],internet->provider)==0){
  41.                 flag=1;//kalo pas di cek ada yg sama
  42.                 printf("\nNama Provide sudah terdaftar\n");
  43.                 break;
  44.             }
  45.         }
  46.         if(strcasecmp("exit",internet->provider)!=0&&flag==0){
  47.             printf("\nNama Provide : %s\n",internet->provider);
  48.             strcpy(list_nama_yang_udah[jumlah],internet->provider);
  49.             jumlah++;//jumlah data udah nambah;
  50.             printf("Speed Internet : %d Mbps\n",internet->speed);
  51.             if(internet->speed>50)
  52.                 printf("Internet Category : Fast\n");
  53.             else if(internet->speed>25)
  54.                 printf("Internet Category : Standart\n");
  55.             else if(internet->speed>0)
  56.                 printf("Internet Category : Low\n");
  57.             printf("Internet Raw Price : Rp. %d,00\n",internet->price);
  58.             if(internet->price>=6000)
  59.                 printf("Internet Service : Premium\n");
  60.             if(internet->price>=1000)
  61.                 printf("Internet Service : Standart\n");
  62.             printf("Area Jangkauan : %s\n",internet->area);
  63.             int total;
  64.             total=internet->speed*internet->price;
  65.             printf("Internet Total : Rp. %d,00\n",total);
  66.         }
  67.         else if(flag!=1)//kalo dia bener2 exit bukan karena kenda data sama
  68.             printf("\nExiting Program...\n");
  69.     }while(strcasecmp("exit",internet->provider)!=0);
  70.     shmdt(&internet);
  71.     shmctl(h,IPC_RMID,0);
  72.     semctl(e,0,IPC_RMID);
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement