Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // LINK SOAL : https://www.dropbox.com/s/s148os0ispnnpb3/S__5021795.jpg?dl=0
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include <ctype.h>
- #include <sys/ipc.h>
- #include <sys/types.h>
- #include <sys/sem.h>
- #include <sys/shm.h>
- struct data {
- char provider[16];
- int speed;
- int price;
- char area[100];
- char tgl[100];//tambahan di soal ga ada
- };
- 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 *internet=(struct data*)shmat(h,NULL,0666);
- int flag,i;
- printf("\n\n====================================\nPROGRAM REGISTRASI INTERNET - CLIENT\n====================================\n\n");
- do{
- do{
- flag=0;
- printf("Masukan Nama Provide [4..15][EXIT to close] : ");
- scanf("%[^\n]",internet->provider);getchar();
- if(strcasecmp(internet->provider,"Exit")==0)
- break;
- else if(strlen(internet->provider)>=4&&strlen(internet->provider)<=15)
- flag=1;
- }while(flag==0);
- if(strcasecmp(internet->provider,"Exit")!=0){
- do{
- flag=0;
- printf("Masukan Speed Internet[1-100]: ");
- scanf("%d",&internet->speed);getchar();
- if(internet->speed>=1&&internet->speed<=100)
- flag=1;
- }while(flag==0);
- do{
- flag=0;
- printf("Masukan Price[Kelipatan 1000(1000-10000)]: ");
- scanf("%d",&internet->price);getchar();
- if(internet->price>=1000&&internet->price<=10000&&internet->price%1000==0)
- flag=1;
- }while(flag==0);
- do{
- flag=0;
- printf("Masukan Area[Sulawesi|Kalimantan|Surabaya]: ");
- scanf("%[^\n]",internet->area);getchar();
- if(strcasecmp(internet->area,"Surabaya")==0||strcasecmp(internet->area,"Kalimantan")==0||strcasecmp(internet->area,"Sulawesi")==0)
- flag=1;
- }while(flag==0);
- //tambahan mulai dari sini
- do{
- flag=1;//awal true kalo ada yg salah langsung 0
- printf("Masukan tgl registrasi[FORMAT :\"DD/MM/YYYY\"][Tahun 2015/2016]: ");
- scanf("%[^\n]",internet->tgl);getchar();
- if(internet->tgl[0]<'0'&&internet->tgl[0]>'3')
- flag=0;
- if(internet->tgl[1]<'0'&&internet->tgl[1]>'9')
- flag=0;
- if(internet->tgl[2]!='/')
- flag=0;
- if(internet->tgl[3]!='0'&&internet->tgl[3]!='1')
- flag=0;
- if(internet->tgl[4]<'0'&&internet->tgl[4]>'9')
- flag=0;
- if(internet->tgl[5]!='/')
- flag=0;
- if(internet->tgl[6]!='2')
- flag=0;
- if(internet->tgl[7]!='0')
- flag=0;
- if(internet->tgl[8]!='1')
- flag=0;
- if(internet->tgl[9]!='5'&&internet->tgl[9]!='6')
- flag=0;
- //khasus khusus
- if(internet->tgl[0]=='0'&&internet->tgl[1]=='0')//input dd 00
- flag=0;
- if(internet->tgl[0]=='3'&&internet->tgl[1]!='0')//input dd 31-39
- flag=0;
- if(internet->tgl[3]=='0'&&internet->tgl[4]=='0')//input mm 00
- flag=0;
- if(internet->tgl[3]=='1'&&internet->tgl[4]>'2')//input mm 13-19
- flag=0;
- }while(flag==0);
- //tambahan berakhir di sini
- }
- s.sem_num=0;
- s.sem_op=1;
- s.sem_flg=0;
- semop(e,&s,1);
- printf("Masukan Data\n<Press Enter>");
- getchar();
- printf("\n");
- }while(strcasecmp("exit",internet->provider)!=0);
- shmdt(&internet);
- shmctl(h,IPC_RMID,0);
- semctl(e,0,IPC_RMID);
- }
Add Comment
Please, Sign In to add comment