akevintg

MATERI UAP II (CLIENT)

Jan 20th, 2016
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.23 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.     printf("\n\n====================================\nPROGRAM REGISTRASI INTERNET - CLIENT\n====================================\n\n");
  29.     do{
  30.         do{
  31.             flag=0;
  32.             printf("Masukan Nama Provide [4..15][EXIT to close] : ");
  33.             scanf("%[^\n]",internet->provider);getchar();
  34.             if(strcasecmp(internet->provider,"Exit")==0)
  35.                 break;
  36.             else if(strlen(internet->provider)>=4&&strlen(internet->provider)<=15)
  37.                 flag=1;
  38.         }while(flag==0);
  39.         if(strcasecmp(internet->provider,"Exit")!=0){
  40.             do{
  41.                 flag=0;
  42.                 printf("Masukan Speed Internet[1-100]: ");
  43.                 scanf("%d",&internet->speed);getchar();
  44.                 if(internet->speed>=1&&internet->speed<=100)
  45.                     flag=1;
  46.             }while(flag==0);
  47.             do{
  48.                 flag=0;
  49.                 printf("Masukan Price[Kelipatan 1000(1000-10000)]: ");
  50.                 scanf("%d",&internet->price);getchar();
  51.                 if(internet->price>=1000&&internet->price<=10000&&internet->price%1000==0)
  52.                     flag=1;
  53.             }while(flag==0);
  54.             do{
  55.                 flag=0;
  56.                 printf("Masukan Area[Sulawesi|Kalimantan|Surabaya]: ");
  57.                 scanf("%[^\n]",internet->area);getchar();
  58.                 if(strcasecmp(internet->area,"Surabaya")==0||strcasecmp(internet->area,"Kalimantan")==0||strcasecmp(internet->area,"Sulawesi")==0)
  59.                     flag=1;
  60.             }while(flag==0);
  61.             //tambahan mulai dari sini
  62.             do{
  63.                 flag=1;//awal true kalo ada yg salah langsung 0
  64.                 printf("Masukan tgl registrasi[FORMAT :\"DD/MM/YYYY\"][Tahun 2015/2016]: ");
  65.                 scanf("%[^\n]",internet->tgl);getchar();
  66.                 if(internet->tgl[0]<'0'&&internet->tgl[0]>'3')
  67.                     flag=0;
  68.                 if(internet->tgl[1]<'0'&&internet->tgl[1]>'9')
  69.                     flag=0;
  70.                 if(internet->tgl[2]!='/')
  71.                     flag=0;
  72.                 if(internet->tgl[3]!='0'&&internet->tgl[3]!='1')
  73.                     flag=0;
  74.                 if(internet->tgl[4]<'0'&&internet->tgl[4]>'9')
  75.                     flag=0;
  76.                 if(internet->tgl[5]!='/')
  77.                     flag=0;
  78.                 if(internet->tgl[6]!='2')
  79.                     flag=0;
  80.                 if(internet->tgl[7]!='0')
  81.                     flag=0;
  82.                 if(internet->tgl[8]!='1')
  83.                     flag=0;
  84.                 if(internet->tgl[9]!='5'&&internet->tgl[9]!='6')
  85.                     flag=0;
  86.                 //khasus khusus
  87.                 if(internet->tgl[0]=='0'&&internet->tgl[1]=='0')//input dd 00
  88.                     flag=0;
  89.                 if(internet->tgl[0]=='3'&&internet->tgl[1]!='0')//input dd 31-39
  90.                     flag=0;
  91.                 if(internet->tgl[3]=='0'&&internet->tgl[4]=='0')//input mm 00
  92.                     flag=0;
  93.                 if(internet->tgl[3]=='1'&&internet->tgl[4]>'2')//input mm 13-19
  94.                     flag=0;
  95.             }while(flag==0);
  96.             //tambahan berakhir di sini
  97.         }
  98.         s.sem_num=0;
  99.         s.sem_op=1;
  100.         s.sem_flg=0;
  101.         semop(e,&s,1);
  102.         printf("Masukan Data\n<Press Enter>");
  103.         getchar();
  104.         printf("\n");
  105.     }while(strcasecmp("exit",internet->provider)!=0);
  106.     shmdt(&internet);
  107.     shmctl(h,IPC_RMID,0);
  108.     semctl(e,0,IPC_RMID);
  109. }
Add Comment
Please, Sign In to add comment