#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int minimal(int seed);
int main (void)//random=countpassenger;
{
int check=0, tempEarnings, ctr4, info[17][31],ctr3,capacity=0, ctr, ctr2,denomination[6]={1,5,10,20,50,100}, x[6],seed, random=0, loose=0,y[17]={0}, a, change, money, passenger=0, destination, station, pay, payment, n ,km, earnings, out[17]={0};
int passengerlimit[17]={0,30,15,10,10,15,20,10,10,20,5,20,15,10,10,5,0};
printf("Hello, Good day!\nWelcome to our bus! Just seat back and relax.\n\n");
printf("Please enter the seed: ");
scanf("%d", &seed);
for(ctr=0;ctr<=5;ctr++)
{
printf("No. of %d: ", denomination[ctr]);
scanf("%d", &x[ctr]);
loose=loose+denomination[ctr];
}
if(seed<=0)
{ return 0;
}
for(station=1;station<=16;station++)
{
random=1+minimal(seed)%30;
passenger+=random;
printf("%d passengers entered the bus.\n", random);
printf(" Passengers that exited: %d\n",out[station]);
capacity=capacity-out[station];
if((station==1)||(station==5)||(station==6)||(station==9)||(station==11)||(station==12)||(station==13))
{
y[station]=(minimal(seed)%passengerlimit[station])+1;
seed=minimal(seed);/*?*/
} else
{
y[station]=(minimal(seed)%(passengerlimit[station]+1));
}
if((capacity+y[station])>=60)
{
y[station]=60-capacity;/*for the no of passengers to not exceed 60*/
}
printf("\nCurrent Passenger Count: %d\n", passenger);
capacity=capacity+y[station];
passenger+=y[station];
printf("\tPassenger Destination Please pay Payment / Change\n");
for(ctr3=1;ctr3<=random;ctr3++)//ctr3 is the variable for passenger being accomodated. Example: ctr3rd passenger. let ctr3=7, therefore, 7th passenger.
{
info[station][ctr3]=(minimal(seed)%(16-station))+station+1;
seed=minimal(seed);
out[info[station][ctr3]]++;
km=abs(destination-station);// pwede alisin ung abs
if(km<=4){payment=10;}else if(km==5){payment=12;}else if(km==6){payment=14;}
else if(km==7){payment=16;}else if(km==8){payment=18;}else if(km==9){payment=20;}
else if(km==10){payment=22;}else if(km==11){payment=24;}else if(km==12){payment=26;}
else if(km==13){payment=28;}else if(km==14){payment=30;}else if(km==15){payment=32;}
a=1+minimal(seed)%98;
if (a<=40)
{//printf("%d\n", a);
n=payment;
//printf("Exact Amount.");
}
if(a>40&&a<=70)
{//printf("%d\n", a); code is not necessary since it just display the chance of the customer's payment.
if(payment>20)
{n=50;}
else{n=20;}
}
else if(a>70&&a<=90)
{//printf("%d\n", a); code is not necessary since it just display the chance of the customer's payment.
n= 50;}
else if(a>90&&a<=100){n=100;}
for(ctr=7;ctr>=1;ctr--)
{
while(n>=denomination[ctr])
{
x[station]++;
n=n-denomination[ctr];
}
}
tempEarnings=tempEarnings+payment;
change=n-payment;
for(ctr=6;ctr>=1;ctr--)
{
if(change>=denomination[ctr])
{
if((x[ctr]==0)&&(ctr!=1))
{continue;}
else
{
change-=denomination[ctr];
--x[ctr];
++ctr;
}
}
if (x[ctr]<0)
{
check=1;
break;
}
else
{ check=0;}
printf("\t\t%d / %d / %d / %d / %d\n",ctr,info[station][ctr],payment,n ,change);
if(check==1)
{
break;
}
if(check==1)
{
break;
}
printf(" current number of passengers in bus: %d\n",capacity);
printf(" current number of loose change: \n");
for(ctr=1;ctr<=6;ctr++)/*j-> counter no.*/
printf("\tP%d: %d\n",denomination[ctr],x[ctr]);
}}}
if(check==1)
{
printf("\n\nInsufficient loose change...\n");
printf("Loose Change remaining:\n");
for(ctr=1;ctr<=6;ctr++)
printf(" P%d : %d\n",denomination[ctr],x[ctr]);
}
else
{
printf("Trip Summary:\n");
printf("Total number of passengers that entered: %d\n",passenger);
}
scanf("%d",&a);
return 0;
}
int minimal(int seed)
{int s1;
double temp;
temp=seed*48271.0;
temp=fmod(temp, 2147483647);
s1=(int) temp;
return (s1);
}
Ieako 0 Newbie Poster
WaltP 2,905 Posting Sage w/ dash of thyme Team Colleague
Grn Xtrm 84 Posting Pro in Training
al john 0 Newbie Poster
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.