Advertisement
akevintg

(ALT 2) QUIZ II Operating System (CLIENT)

Jan 6th, 2016
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.92 KB | None | 0 0
  1. // LINK SOAL : https://www.dropbox.com/sh/wussgfrqrmazf9g/AADnp_e-zKkHZWXyAFDQ5yJFa?dl=0
  2. // LINK TEMPLATE : http://pastebin.com/Rc7A08xG
  3.  
  4. #include <stdio.h>
  5. #include <sys/ipc.h>
  6. #include <sys/types.h>
  7. #include <sys/sem.h>
  8. #include <sys/shm.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <time.h>
  12. #include <ctype.h>
  13.  
  14. struct data{
  15.     char nama[25];
  16.     char cc[17];
  17.     float sale;
  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.     struct data *card=(struct data *)shmat(h,NULL,0666);
  26.     int i,flag=0;
  27.     printf("/=================================\\\n");
  28.     printf("|Blue Jack Card Processing System |\n");
  29.     printf("\\=================================/\n\n");
  30.     printf("Client\n------\n");
  31.     do{
  32.         do{
  33.             flag=0;
  34.             printf("Input cardholder name [5..20][starts with Mr /Ms ]['exit' to quit'] : ");
  35.             scanf("%[^\n]",card->nama);getchar();fflush(stdin);
  36.             if(strstr(card->nama,"Mr")!=0||strstr(card->nama,"Ms")!=0)
  37.                 flag=1;
  38.             if(strcasecmp(card->nama,"exit")==0)
  39.                 break;
  40.             //printf("%s",strstr(card->nama,"Mr"));
  41.         }while(flag==0);
  42.         if(strcasecmp(card->nama,"exit")!=0){
  43.             do{
  44.                 flag=0;
  45.                 printf("Input card number[16 digits|must be number] : ");
  46.                 scanf("%[^\n]",card->cc);getchar();fflush(stdin);
  47.                 for(i=0;i<strlen(card->cc);i++){
  48.                     if(!isdigit(card->cc[i]))
  49.                         flag=1;
  50.                 }
  51.                 if(strlen(card->cc)!=16)
  52.                     flag=1;
  53.             }while(flag==1);
  54.             do{
  55.                 flag=0;
  56.                 printf("Input sale amount [100...7500] : $");
  57.                 scanf("%f",&card->sale);getchar();fflush(stdin);
  58.                 if(card->sale>=100&&card->sale<=7500)
  59.                     flag=1;
  60.             }while(flag==0);
  61.         }
  62.         s.sem_num=0;
  63.         s.sem_op=1;
  64.         s.sem_flg=0;
  65.         semop(e,&s,1);
  66.         printf("Confirm Order, Press Enter\n");
  67.         getchar();
  68.     }while(strcasecmp(card->nama,"exit")!=0);
  69.     shmdt(&s);
  70.     shmctl(h,IPC_RMID,0);
  71.     semctl(e,0,IPC_RMID);
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement