Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- SOAL
- =====================================================================================================================
- Input
- (child)
- Nama pemesan boleh spasi(5-20 character ga ada angka, Diawali dengan Huruf Besar)
- pilih tempat asal[bandung/jakarta/surabaya](ga case sensitive)
- pilihan tujuan[bandung/jakarta/surabaya](ga case sensitive)
- jumlah penumpang(harus angka)
- output
- (parent)
- 1. nama pemesan
- 2. no order, random 2 Kata pertama dari nama(sudah di kapitalkan)+kodeAsal(bandung=01 || jakarta=02 || surabaya= 03)+kodetujuan(bandung=11 || jakarta=12 || surabaya= 13)+random2digit
- 3. tiket perorangan harga dari :
- jakarta ke -> bandung 50000 || surabya 100000
- bandung ke -> jakarta 40000 || surbaya 60000
- surabya ke ->jakarta 120000 || bandung 70000
- (^ Harga diatas persatuan orang)
- 4. Harga Total sebelum diskon
- 5. diskon dalam rupiah Jika penumpang 1, harga normal
- penumpang 2-5 diskon 12.5 % dari harga total(ati2 ada koma 5)
- penumpang >5 orang diskon 17.5% dari harga total
- 6. harga total setelah diskon
- Contoh :
- input
- Nama : Alexander kevin
- Tempat Asal : JakaRTa
- Tempat Tujuan : BaNduNg
- Jumlah Penumpang : 4
- Output
- Nama : Alexander kevin
- No Order : AL021124
- Harga Satuan : 50000
- Harga Total : 200000
- Diskon : 25000
- Sub Total : 175000
- penjelasana :
- Order AL021124 (AL dari ALexander,02 dari jakarta,11 ke bandung, 24 Random angka)
- Harga Total dari 50000*4
- Diskon dari 200000*0.175
- *12.5%=0.125
- Sub Total dari 200000-25000
- */
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- #include <time.h>
- #include <stdlib.h>
- #include <unistd.h>
- struct data{
- char nama[25];
- char asal[10];
- char tujuan[10];
- int jumlah;
- int tHarga;
- int diskon;
- };
- int main(){
- pid_t forking;
- int pipes[2];
- struct data penumpang;
- int flag,i;
- if(pipe(pipes)<0)
- printf("Error");
- forking=fork();
- if(forking==0){
- printf("\nChild PROCESS\n====================\n");
- do{
- flag=0;
- printf("Masukan Nama Lengkap Anda[5..20][Huruf Depan Besar] :");
- scanf("%[^\n]s",penumpang.nama);getchar();
- if(strlen(penumpang.nama)<5||strlen(penumpang.nama)>20)
- flag=1;
- if(penumpang.nama[0]!=toupper(penumpang.nama[0]))
- flag=1;
- }while(flag==1);
- do{
- flag=0;
- printf("Masukan Tempat Asal[Bandung/Jakarta/Surabaya] :");
- scanf("%s",penumpang.asal);getchar();
- if(strcasecmp(penumpang.asal,"bandung")!=0&&strcasecmp(penumpang.asal,"jakarta")&&strcasecmp(penumpang.asal,"surabaya"))
- flag=1;
- }while(flag==1);
- do{
- flag=0;
- printf("Masukan Tempat tujuan[Bandung/Jakarta/Surabaya] :");
- scanf("%s",penumpang.tujuan);getchar();
- if(strcasecmp(penumpang.tujuan,"bandung")!=0&&strcasecmp(penumpang.tujuan,"jakarta")&&strcasecmp(penumpang.asal,"surabaya"))
- flag=1;
- if(strcasecmp(penumpang.tujuan,penumpang.asal)==0)
- flag=0;
- }while(flag==1);
- do{
- flag=0;
- printf("Masukan Jumlah Penumpang [1..100]:");
- scanf("%d",&penumpang.jumlah);getchar();
- if(penumpang.jumlah<1||penumpang.jumlah>100)
- flag=1;
- }while(flag==1);
- close(pipes[0]);
- write(pipes[1],(struct data*)&penumpang,sizeof(penumpang));
- }
- else if(forking>0){
- close(pipes[1]);
- read(pipes[0],(struct data*)&penumpang,sizeof(penumpang));
- printf("\nParent PROCESS\n====================\n");
- printf("Nama Pemesan : %s\n",penumpang.nama);
- int kodeAsal;
- int kodeTujuan;
- if(strcasecmp(penumpang.asal,"bandung")==0)
- kodeAsal=1;
- else if(strcasecmp(penumpang.asal,"Jakarta")==0)
- kodeAsal=2;
- else if(strcasecmp(penumpang.asal,"surabaya")==0)
- kodeAsal=3;
- if(strcasecmp(penumpang.tujuan,"bandung")==0)
- kodeTujuan=1;
- else if(strcasecmp(penumpang.tujuan,"Jakarta")==0)
- kodeTujuan=2;
- else if(strcasecmp(penumpang.tujuan,"surabaya")==0)
- kodeTujuan=3;
- srand(time(NULL));
- printf("No Order : %c%c0%d1%d%d\n",penumpang.nama[0],toupper(penumpang.nama[1]),
- kodeAsal,kodeTujuan,rand()%91+10);
- if(strcasecmp(penumpang.asal,"jakarta")==0){
- if(strcasecmp(penumpang.tujuan,"bandung")==0){
- penumpang.tHarga=penumpang.jumlah*50000;
- printf("Harga Tiket perorang : Rp. 50000,00\n");
- }
- else {
- penumpang.tHarga=penumpang.jumlah*100000;
- printf("Harga Tiket perorang : Rp. 100000,00\n");
- }
- }
- else if(strcasecmp(penumpang.asal,"bandung")==0){
- if(strcasecmp(penumpang.tujuan,"jakarta")==0){
- penumpang.tHarga=penumpang.jumlah*40000;
- printf("Harga Tiket perorang : Rp. 100000,00\n");
- }
- else{
- penumpang.tHarga=penumpang.jumlah*60000;
- printf("Harga Tiket perorang : Rp. 100000,00\n");
- }
- }
- else {
- if(strcasecmp(penumpang.tujuan,"bandung")==0){
- penumpang.tHarga=penumpang.jumlah*70000;
- printf("Harga Tiket perorang : Rp. 100000,00\n");
- }
- else{
- penumpang.tHarga=penumpang.jumlah*120000;
- printf("Harga Tiket perorang : Rp. 100000,00\n");
- }
- }
- printf("Harga Total : Rp. %d,00\n",penumpang.tHarga);
- if(penumpang.jumlah>=2&&penumpang.jumlah<=5)
- penumpang.diskon=penumpang.tHarga*0.125;
- else if(penumpang.jumlah >3)
- penumpang.diskon=penumpang.tHarga*0.175;
- printf("Diskon : Rp. %d,00\n",penumpang.diskon);
- printf("SubTotal : Rp. %d,00\n",penumpang.tHarga-penumpang.diskon);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement