Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // LINK SOAL : https://www.dropbox.com/sh/wussgfrqrmazf9g/AADnp_e-zKkHZWXyAFDQ5yJFa?dl=0
- // LINK TEMPLATE : http://pastebin.com/Rc7A08xG
- #include <stdio.h>
- #include <sys/ipc.h>
- #include <sys/types.h>
- #include <sys/sem.h>
- #include <sys/shm.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include <ctype.h>
- struct data{
- char nama[25];
- char cc[17];
- float sale;
- };
- 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);
- struct data *card=(struct data *)shmat(h,NULL,0666);
- int i,flag=0;
- printf("/=================================\\\n");
- printf("|Blue Jack Card Processing System |\n");
- printf("\\=================================/\n\n");
- printf("Client\n------\n");
- do{
- do{
- flag=0;
- printf("Input cardholder name [5..20][starts with Mr /Ms ]['exit' to quit'] : ");
- scanf("%[^\n]",card->nama);getchar();fflush(stdin);
- if(strstr(card->nama,"Mr")!=0||strstr(card->nama,"Ms")!=0)
- flag=1;
- if(strcasecmp(card->nama,"exit")==0)
- break;
- //printf("%s",strstr(card->nama,"Mr"));
- }while(flag==0);
- if(strcasecmp(card->nama,"exit")!=0){
- do{
- flag=0;
- printf("Input card number[16 digits|must be number] : ");
- scanf("%[^\n]",card->cc);getchar();fflush(stdin);
- for(i=0;i<strlen(card->cc);i++){
- if(!isdigit(card->cc[i]))
- flag=1;
- }
- if(strlen(card->cc)!=16)
- flag=1;
- }while(flag==1);
- do{
- flag=0;
- printf("Input sale amount [100...7500] : $");
- scanf("%f",&card->sale);getchar();fflush(stdin);
- if(card->sale>=100&&card->sale<=7500)
- flag=1;
- }while(flag==0);
- }
- s.sem_num=0;
- s.sem_op=1;
- s.sem_flg=0;
- semop(e,&s,1);
- printf("Confirm Order, Press Enter\n");
- getchar();
- }while(strcasecmp(card->nama,"exit")!=0);
- shmdt(&s);
- shmctl(h,IPC_RMID,0);
- semctl(e,0,IPC_RMID);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement