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);
- printf("/=================================\\\n");
- printf("|Blue Jack Card Processing System |\n");
- printf("\\=================================/\n\n");
- printf("Server\n------\n\n");
- do{
- int i=0;
- s.sem_num=0;
- s.sem_op=-1;
- s.sem_flg=0;
- semop(e,&s,1);
- if(strcasecmp(card->nama,"exit")!=0){
- printf("Card Transaction\nBluejack Card Network\n---------------------------------\n");
- printf("Masked CC : ");
- for(i=0;i<strlen(card->cc);i++){
- if(i<6)
- printf("%c",card->cc[i]);
- else if(i<12)
- printf("*");
- else
- printf("%c",card->cc[i]);
- }
- printf("\n");
- printf("Card Holder \t: %s\n",card->nama);
- int r1,r2;
- srand(time(NULL));
- r1=rand()%26+(int)'A';
- r2=rand()%26+(int)'A';
- printf("Approval Code\t: %c%c%c%c%c%c\n",r1,r2,card->cc[12],card->cc[13],card->cc[14],card->cc[15]);
- printf("Sale Amount \t: $ %10.2f\n",card->sale);
- float pf;
- pf=0.03*card->sale+0.1;
- printf("Processing Fee \t: $ %10.2f\n",pf);
- printf("--------------------------------+\n");
- printf("Total Payment \t: $ %10.2f\n\n",pf+card->sale);
- }
- }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