Elevator.cpp
/////// classes.cpp - header file for main.cpp ///////////////////
#include <iostream>
using namespace std;
int delay1;
//int delay2;
struct user;
class elevator1;
class elavator2;
void elevator_reinitializer_e1_afternoon(int req_time,int current_floor);
void merge(int* arr, int first, int mid, int last){
int b[50];
int i,j,k;
i=first;
j=mid+1;
k=first;
while(i<=mid && j<=last){
if (arr[i]<=arr[j]){
b[k++]=arr[i++];
}
else
b[k++]=arr[j++];
}
if(i>mid){
while(j<=last)
b[k++]=arr[j++];
}
else {
while(i<=mid)
b[k++]=arr[i++];
}
for (int i=first;i<=last;i++){
arr[i]=b[i];
}
}
void mergesort(int *arr, int first, int last){
int mid;
if(first<last){
mid=(first+last)/2;
mergesort(arr,first,mid);
mergesort(arr,mid+1,last);
merge(arr,first,mid,last);
}
}
class elevator1{
public:
int request_floor;
int current_floor;
bool available;
int req_time_hour;
elevator1(int request_floor,int current_floor,bool available,int req_time_hour){
this->request_floor=request_floor;
this->current_floor=current_floor;
this->available=available;
this->req_time_hour=req_time_hour;
}
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wreturn-type"
int elevator_movement(int request_floor,int current_floor,bool available,int req_time_hour ){
if(available){
available=false;
delay1=0;
//cout<<endl;
// cout<<"Elevator 1 is working"<<endl;
cout<<"{";
if(request_floor>current_floor){
for(int i=current_floor;i<request_floor;i++){
cout<<i<<",";
delay1=delay1+5;
}
delay1=delay1+5;
cout<<request_floor;
}
else if(request_floor<current_floor){
for(int i=current_floor;i>request_floor;i--){
cout<<i<<",";
delay1=delay1+5;
}
delay1=delay1+5;
cout<<request_floor;
}
//request_floor=current_floor;
current_floor=request_floor;
//cout<<request_floor<<endl;
if(request_floor==current_floor){
cout<<"}";
cout<<endl;
//cout<<endl<<"You have reached the desired floor"<<endl;
}
if(delay1>0){
return delay1-5;
}
else return 0;
}
}
};
#pragma GCC diagnostic pop
struct user{
public:
int request_floor;
int current_floor;
int req_time_hour;
user(int current_floor,int request_floor,int req_time_hour ){
this->request_floor = request_floor;
this->current_floor=current_floor;
this->req_time_hour=req_time_hour;
}
};
///////////////////// main.cpp ////////////////////////
#include <iostream>
using namespace std;
#include "classes1(floor_partition).cpp"
user u1(2,15,14);
user u2(6,12,19);
user u3(15,5,19);
user u4(13,14,19);
user u5(3,1,14);
elevator1 e1(1,1,1,1);
elevator1 e2(1,1,1,1);
const int n = 5;
int count1=1,count2=1,count3=1,count4=1,count5=1;
int count=1;
int counter=1;
int arr[n]={u1.req_time_hour,u2.req_time_hour,u3.req_time_hour,u4.req_time_hour,u5.req_time_hour};
int request_floor_array[n];
int current_floor_array[n];
int task_sorter(){
mergesort(arr, 0, n-1);
return *arr;
}
void requests_sorter(){
int count_1=1,count_2=1,count_3=1,count_4=1,count_5=1;
for(int i=0;i<n;i++){
if(u1.req_time_hour==arr[i]&&count_1==1){
request_floor_array[i]=u1.request_floor;
count_1=count_1-1;
}
else if(u2.req_time_hour==arr[i]&&count_2==1){
request_floor_array[i]=u2.request_floor;
count_2=count_2-1;
}
else if(u3.req_time_hour==arr[i]&&count_3==1){
request_floor_array[i]=u3.request_floor;
count_3=count_3-1;
}
else if(u4.req_time_hour==arr[i]&&count_4==1){
request_floor_array[i]=u4.request_floor;
count_4=count_4-1;
}
else if(u5.req_time_hour==arr[i]&&count_5==1){
request_floor_array[i]=u5.request_floor;
count_5=count_5-1;
}
}
}
void current_floor_sorter(){
int count_1=1,count_2=1,count_3=1,count_4=1,count_5=1;
for(int i=0;i<n;i++){
if(u1.req_time_hour==arr[i]&&count_1==1){
current_floor_array[i]=u1.current_floor;
count_1=count_1-1;
}
else if(u2.req_time_hour==arr[i]&&count_2==1){
current_floor_array[i]=u2.current_floor;
count_2=count_2-1;
}
else if(u3.req_time_hour==arr[i]&&count_3==1){
current_floor_array[i]=u3.current_floor;
count_3=count_3-1;
}
else if(u4.req_time_hour==arr[i]&&count_4==1){
current_floor_array[i]=u4.current_floor;
count_4=count_4-1;
}
else if(u5.req_time_hour==arr[i]&&count_5==1){
current_floor_array[i]=u5.current_floor;
count_5=count_5-1;
}
}
}
void order_decider(){
int wait_time;
int user_on_elevator_time;
int reinitialization_time;
int total_wait_time=0;
int total_user_on_elevator_time=0;
int total_reinitialization_time=0;
int total_time=0;
e1.current_floor=5;
e2.current_floor=10;
int i=0;
for(int j=0;j<n;j++){
while( current_floor_array[i]<=5&¤t_floor_array[i]>=0&&i<n){
for(;i<n-1;i++){
cout<<"Elevator 1 is working now \n Going to current floor of next user\n ";
wait_time=e1.elevator_movement(current_floor_array[i],e1.current_floor,1,arr[i]);
total_wait_time=total_wait_time+wait_time;
cout<<"user waits for "<<wait_time<<endl;
e1.current_floor=current_floor_array[i];
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e1.elevator_movement(request_floor_array[i],current_floor_array[i],1,arr[i]);
e1.current_floor=request_floor_array[i];
cout<<"User reached destination floor\n";
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
if(arr[i+1]!=arr[i]){
cout<<"No more request at this time so reinitialize at floor 5\n";
reinitialization_time=e1.elevator_movement(5,request_floor_array[i],1,arr[i]);
e1.current_floor=5;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
else if(current_floor_array[i+1]>5 && arr[i]==arr[i+1]){
cout<<"No more request at this time so reinitialize at floor 5\n";
reinitialization_time=e1.elevator_movement(5,request_floor_array[i],1,arr[i]);
e1.current_floor=5;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
break;
}
else {
if (arr[i+1]==arr[i]&&i!=n-2){
cout<<"Checking next request at the time and going to next user\n";
e1.current_floor=request_floor_array[i];
wait_time=e1.elevator_movement(current_floor_array[i+1],request_floor_array[i],1,arr[i]);
e1.current_floor=current_floor_array[i+1];
cout<<"wait time for user is "<<wait_time<<endl;
total_wait_time=total_wait_time+wait_time;
}
}
}
i++;
if(arr[n-1]==arr[n-2]&&i==n){
// cout<<i<<"hello"<<endl;
if(current_floor_array[i-1]>5){
break;
}
else {
if(current_floor_array[i-2]>=10){
e1.current_floor=5;
cout<<"Checking next request at the time and going to next user\n";
wait_time=e1.elevator_movement(current_floor_array[n-1],e1.current_floor,1,arr[n-1]);
cout<<"wait time for user is "<<wait_time<<endl;
total_wait_time=total_wait_time+wait_time;
e1.current_floor=current_floor_array[n-1];
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e1.elevator_movement(request_floor_array[n-1],current_floor_array[n-1],1,arr[n-1]);
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
e1.current_floor=request_floor_array[n-1];
cout<<"No more request so initialize at floor 5\n";
reinitialization_time=e1.elevator_movement(5,request_floor_array[n-1],1,arr[n-1]);
e1.current_floor=5;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
else{
e1.current_floor=request_floor_array[i];
cout<<"Checking next request at the time and going to next user\n";
wait_time=e1.elevator_movement(current_floor_array[n-1],request_floor_array[n-2],1,arr[n-1]);
e1.current_floor=current_floor_array[n-1];
total_wait_time=total_wait_time+wait_time;
cout<<"user waits for "<<wait_time<<endl;
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e1.elevator_movement(request_floor_array[n-1],current_floor_array[n-1],1,arr[n-1]);
e1.current_floor=request_floor_array[n-1];
cout<<"No more request so initialize at floor 5\n";
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
reinitialization_time=e1.elevator_movement(5,request_floor_array[n-1],1,arr[n-1]);
e1.current_floor=5;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
}
}
else if(i==n){
if(current_floor_array[n-1]>5){
break;
}
else {
cout<<"No more request so initialize at floor 5\n";
reinitialization_time=e1.elevator_movement(5,request_floor_array[n-2],1,arr[n-2]);
e1.current_floor=5;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
cout<<"Elevator 1 working to pick next user\n";
wait_time=e1.elevator_movement(current_floor_array[n-1],5,1,arr[n-1]);
e1.current_floor=current_floor_array[n-1];
total_wait_time=total_wait_time+wait_time;
cout<<"user waits for "<<wait_time<<endl;
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e1.elevator_movement(request_floor_array[n-1],current_floor_array[n-1],1,arr[n-1]);
e1.current_floor=request_floor_array[n-1];
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
cout<<"No more request so initialize at floor 5\n";
reinitialization_time=e1.elevator_movement(5,request_floor_array[n-1],1,arr[n-1]);
e1.current_floor=5;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
}
}
//
while( current_floor_array[i]<=15&¤t_floor_array[i]>=10&&i<n){
for(;i<n-1;i++){
cout<<"Elevator 2 is working now \n Going to current floor of next user\n ";
wait_time=e2.elevator_movement(current_floor_array[i],e2.current_floor,1,arr[i]);
total_wait_time=total_wait_time+wait_time;
cout<<"user waits for "<<wait_time<<endl;
e2.current_floor=current_floor_array[i];
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e2.elevator_movement(request_floor_array[i],current_floor_array[i],1,arr[i]);
e2.current_floor=request_floor_array[i];
cout<<"User reached destination floor\n";
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
if(arr[i+1]!=arr[i]){
cout<<"No more request at this time so reinitialize at floor 10\n";
reinitialization_time=e2.elevator_movement(10,request_floor_array[i],1,arr[i]);
e2.current_floor=10;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
if(current_floor_array[i+1]<10 && arr[i]==arr[i+1]){
cout<<"No more request at this time so reinitialize at floor 10\n";
reinitialization_time=e2.elevator_movement(10,request_floor_array[i],1,arr[i]);
e2.current_floor=10;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
break;
}
else {
if(arr[i+1]==arr[i]&&i!=n-2){
cout<<"Checking next request at the time and going to next user\n";
e2.current_floor=request_floor_array[i];
wait_time=e2.elevator_movement(current_floor_array[i+1],request_floor_array[i],1,arr[i]);
e2.current_floor=current_floor_array[i+1];
cout<<"wait time for user is "<<wait_time<<endl;
total_wait_time=total_wait_time+wait_time;
}
}
}
i++;
if(arr[n-1]==arr[n-2]&&i==n){
// cout<<i<<"hello"<<endl;
if(current_floor_array[i-1]<10){
break;
}
else {
if(current_floor_array[i-2]<=5){
e2.current_floor=10;
cout<<"Checking next request at the time and going to next user\n";
wait_time=e2.elevator_movement(current_floor_array[n-1],e2.current_floor,1,arr[n-1]);
cout<<"wait time for user is "<<wait_time<<endl;
total_wait_time=total_wait_time+wait_time;
e2.current_floor=current_floor_array[n-1];
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e2.elevator_movement(request_floor_array[n-1],current_floor_array[n-1],1,arr[n-1]);
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
e2.current_floor=request_floor_array[n-1];
cout<<"No more request so initialize at floor 10\n";
reinitialization_time=e2.elevator_movement(10,request_floor_array[n-1],1,arr[n-1]);
e2.current_floor=10;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
else{
e2.current_floor=request_floor_array[i];
cout<<"Checking next request at the time and going to next user\n";
wait_time=e2.elevator_movement(current_floor_array[n-1],request_floor_array[n-2],1,arr[n-1]);
e2.current_floor=current_floor_array[n-1];
total_wait_time=total_wait_time+wait_time;
cout<<"user waits for "<<wait_time<<endl;
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e2.elevator_movement(request_floor_array[n-1],current_floor_array[n-1],1,arr[n-1]);
e2.current_floor=request_floor_array[n-1];
cout<<"No more request so initialize at floor 10\n";
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
reinitialization_time=e2.elevator_movement(10,request_floor_array[n-1],1,arr[n-1]);
e2.current_floor=10;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
}
}
else if(i==n){
if(current_floor_array[n-1]<10){
break;
}
else {
cout<<"No more request so initialize at floor 10\n";
reinitialization_time=e2.elevator_movement(10,request_floor_array[n-2],1,arr[n-2]);
e2.current_floor=10;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
cout<<"Elevator 1 working to pick next user\n";
wait_time=e2.elevator_movement(current_floor_array[n-1],10,1,arr[n-1]);
e2.current_floor=current_floor_array[n-1];
total_wait_time=total_wait_time+wait_time;
cout<<"user waits for "<<wait_time<<endl;
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e2.elevator_movement(request_floor_array[n-1],current_floor_array[n-1],1,arr[n-1]);
e2.current_floor=request_floor_array[n-1];
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
cout<<"No more request so initialize at floor 10\n";
reinitialization_time=e2.elevator_movement(10,request_floor_array[n-1],1,arr[n-1]);
e2.current_floor=10;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
}
}
while( current_floor_array[i]<10&¤t_floor_array[i]>5&&i<n){
for(;i<n-1;i++){
if(abs(current_floor_array[i]-e1.current_floor)>abs(current_floor_array[i]-e2.current_floor)) {
/*cout<<"Elevator 2 is working now \n Going to current floor of next user\n ";
e1.elevator_movement(current_floor_array[i],e2.current_floor,1,arr[i]);
cout<<"Elevator picked up the user\n";
e1.elevator_movement(request_floor_array[i],current_floor_array[i],1,arr[i]);
cout<<"User reached destination floor\n";
if(arr[i+1]!=arr[i]){
cout<<"No more request at this time so reinitialize at floor 10\n";
e1.elevator_movement(10,request_floor_array[i],1,arr[i]);
}
if(current_floor_array[i+1]<10){
e1.elevator_movement(10,request_floor_array[i],1,arr[i]);
break;
}
else{
if(arr[i+1]==arr[i]){
cout<<"Checking next request at the time and going to next user\n";
e1.current_floor=request_floor_array[i];
e1.elevator_movement(current_floor_array[i+1],request_floor_array[i],1,arr[i]);
}
}*/
cout<<"Elevator 2 is working now \n Going to current floor of next user\n ";
wait_time=e2.elevator_movement(current_floor_array[i],e2.current_floor,1,arr[i]);
total_wait_time=total_wait_time+wait_time;
cout<<"user waits for "<<wait_time<<endl;
e2.current_floor=current_floor_array[i];
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e2.elevator_movement(request_floor_array[i],current_floor_array[i],1,arr[i]);
e2.current_floor=request_floor_array[i];
cout<<"User reached destination floor\n";
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
if(arr[i+1]!=arr[i]){
cout<<"No more request at this time so reinitialize at floor 10\n";
reinitialization_time=e2.elevator_movement(10,request_floor_array[i],1,arr[i]);
e2.current_floor=10;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
if(current_floor_array[i+1]<10){
cout<<"No more request at this time so reinitialize at floor 10\n";
reinitialization_time=e2.elevator_movement(10,request_floor_array[i],1,arr[i]);
e2.current_floor=10;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
break;
}
else {
if(arr[i+1]==arr[i]&&i!=n-2){
cout<<"Checking next request at the time and going to next user\n";
e2.current_floor=request_floor_array[i];
wait_time=e2.elevator_movement(current_floor_array[i+1],request_floor_array[i],1,arr[i]);
e2.current_floor=current_floor_array[i+1];
cout<<"wait time for user is "<<wait_time<<endl;
total_wait_time=total_wait_time+wait_time;
}
}
}
else if(abs(current_floor_array[i]-e1.current_floor)<abs(current_floor_array[i]-e2.current_floor)) {
cout<<"Elevator 1 is working now \n Going to current floor of next user\n ";
wait_time=e1.elevator_movement(current_floor_array[i],e1.current_floor,1,arr[i]);
total_wait_time=total_wait_time+wait_time;
cout<<"user waits for "<<wait_time<<endl;
e1.current_floor=current_floor_array[i];
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e1.elevator_movement(request_floor_array[i],current_floor_array[i],1,arr[i]);
e1.current_floor=request_floor_array[i];
cout<<"User reached destination floor\n";
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
if(arr[i+1]!=arr[i]){
cout<<"No more request at this time so reinitialize at floor 5\n";
reinitialization_time=e1.elevator_movement(5,request_floor_array[i],1,arr[i]);
e1.current_floor=5;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
if(current_floor_array[i+1]>5){
cout<<"No more request at this time so reinitialize at floor 5\n";
reinitialization_time=e1.elevator_movement(5,request_floor_array[i],1,arr[i]);
e1.current_floor=5;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
break;
}
else {
if(arr[i+1]==arr[i]&&i!=n-2){
cout<<"Checking next request at the time and going to next user\n";
e1.current_floor=request_floor_array[i];
wait_time=e1.elevator_movement(current_floor_array[i+1],request_floor_array[i],1,arr[i]);
e1.current_floor=current_floor_array[i+1];
cout<<"wait time for user is "<<wait_time<<endl;
total_wait_time=total_wait_time+wait_time;
}
}
}
}
i++;
if(abs(current_floor_array[i]-e1.current_floor)>abs(current_floor_array[i]-e2.current_floor)) {
if(arr[n-1]==arr[n-2]&&i==n){
if(current_floor_array[i-1]<=5){
break;
}
else {
if(current_floor_array[i-2]<=5){
e2.current_floor=10;
cout<<"Checking next request at the time and going to next user\n";
wait_time=e2.elevator_movement(current_floor_array[n-1],e2.current_floor,1,arr[n-1]);
cout<<"wait time for user is "<<wait_time<<endl;
total_wait_time=total_wait_time+wait_time;
e2.current_floor=current_floor_array[n-1];
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e2.elevator_movement(request_floor_array[n-1],current_floor_array[n-1],1,arr[n-1]);
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
e2.current_floor=request_floor_array[n-1];
cout<<"No more request so initialize at floor 10\n";
reinitialization_time=e2.elevator_movement(10,request_floor_array[n-1],1,arr[n-1]);
e2.current_floor=10;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
else{
e2.current_floor=request_floor_array[i];
cout<<"Checking next request at the time and going to next user\n";
wait_time=e2.elevator_movement(current_floor_array[n-1],request_floor_array[n-2],1,arr[n-1]);
e2.current_floor=current_floor_array[n-1];
total_wait_time=total_wait_time+wait_time;
cout<<"user waits for "<<wait_time<<endl;
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e2.elevator_movement(request_floor_array[n-1],current_floor_array[n-1],1,arr[n-1]);
e2.current_floor=request_floor_array[n-1];
cout<<"No more request so initialize at floor 10\n";
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
reinitialization_time=e2.elevator_movement(10,request_floor_array[n-1],1,arr[n-1]);
e2.current_floor=10;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
}
}
else if(i==n){
if(current_floor_array[n-1]<=5){
break;
}
else {
cout<<"No more request so initialize at floor 10\n";
reinitialization_time=e2.elevator_movement(10,request_floor_array[n-2],1,arr[n-2]);
e2.current_floor=10;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
cout<<"Elevator 1 working to pick next user\n";
wait_time=e2.elevator_movement(current_floor_array[n-1],10,1,arr[n-1]);
e2.current_floor=current_floor_array[n-1];
total_wait_time=total_wait_time+wait_time;
cout<<"user waits for "<<wait_time<<endl;
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e2.elevator_movement(request_floor_array[n-1],current_floor_array[n-1],1,arr[n-1]);
e2.current_floor=request_floor_array[n-1];
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
cout<<"No more request so initialize at floor 10\n";
reinitialization_time=e2.elevator_movement(10,request_floor_array[n-1],1,arr[n-1]);
e2.current_floor=10;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
}
}
else if(abs(current_floor_array[i]-e1.current_floor)<abs(current_floor_array[i]-e2.current_floor)){
if(arr[n-1]==arr[n-2]&&i==n){
// cout<<i<<"hello"<<endl;
if(current_floor_array[i-1]>5){
break;
}
else {
if(current_floor_array[i-2]>=10){
e1.current_floor=5;
cout<<"Checking next request at the time and going to next user\n";
wait_time=e1.elevator_movement(current_floor_array[n-1],e1.current_floor,1,arr[n-1]);
cout<<"wait time for user is "<<wait_time<<endl;
total_wait_time=total_wait_time+wait_time;
e1.current_floor=current_floor_array[n-1];
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e1.elevator_movement(request_floor_array[n-1],current_floor_array[n-1],1,arr[n-1]);
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
e1.current_floor=request_floor_array[n-1];
cout<<"No more request so initialize at floor 5\n";
reinitialization_time=e1.elevator_movement(5,request_floor_array[n-1],1,arr[n-1]);
e1.current_floor=5;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
else{
e1.current_floor=request_floor_array[i];
cout<<"Checking next request at the time and going to next user\n";
wait_time=e1.elevator_movement(current_floor_array[n-1],request_floor_array[n-2],1,arr[n-1]);
e1.current_floor=current_floor_array[n-1];
total_wait_time=total_wait_time+wait_time;
cout<<"user waits for "<<wait_time<<endl;
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e1.elevator_movement(request_floor_array[n-1],current_floor_array[n-1],1,arr[n-1]);
e1.current_floor=request_floor_array[n-1];
cout<<"No more request so initialize at floor 5\n";
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
reinitialization_time=e1.elevator_movement(5,request_floor_array[n-1],1,arr[n-1]);
e1.current_floor=5;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
}
}
else if(i==n){
if(current_floor_array[n-1]>5){
break;
}
else {
cout<<"No more request so initialize at floor 5\n";
reinitialization_time=e1.elevator_movement(5,request_floor_array[n-2],1,arr[n-2]);
e1.current_floor=5;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
cout<<"Elevator 1 working to pick next user\n";
wait_time=e1.elevator_movement(current_floor_array[n-1],5,1,arr[n-1]);
e1.current_floor=current_floor_array[n-1];
total_wait_time=total_wait_time+wait_time;
cout<<"user waits for "<<wait_time<<endl;
cout<<"Elevator picked up the user\n";
user_on_elevator_time=e1.elevator_movement(request_floor_array[n-1],current_floor_array[n-1],1,arr[n-1]);
e1.current_floor=request_floor_array[n-1];
cout<<"User used elevator for "<< user_on_elevator_time<<endl;
total_user_on_elevator_time=total_user_on_elevator_time+user_on_elevator_time;
cout<<"No more request so initialize at floor 5\n";
reinitialization_time=e1.elevator_movement(5,request_floor_array[n-1],1,arr[n-1]);
e1.current_floor=5;
cout<<"Time taken to reinitialize is "<<reinitialization_time<<endl;
total_reinitialization_time=total_reinitialization_time+reinitialization_time;
}
}
}
}
}
cout<<"Total wait time was "<<total_wait_time<<endl;
cout<<"Total time spent on elevator was "<<total_user_on_elevator_time<<endl;
cout<<"Total reinitialization time was "<<total_reinitialization_time<<endl;
total_time=total_reinitialization_time+total_user_on_elevator_time+total_wait_time;
cout<<"Total time was "<<total_time<<endl;
int power=total_time/5;
cout<<"Total power consumed was "<<power<<"mW"<<endl;
}
void display(){
for(int i=0;i<n;i++){
cout<<arr[i]<<" ";
}
}
int main() {
mergesort(arr, 0, n-1);
cout<<"sorted array : ";
for(int i=0;i<n;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
current_floor_sorter();
requests_sorter();
order_decider();
display();
// cout<<count<<" "<<arr[count];
cout<<"\n";
cout<<"Request Floor Array : ";
for(int i=0;i<n;i++){
cout<<request_floor_array[i]<<" ";
}
cout<<"\n";
cout<<"Current Floor Array : ";
for(int i=0;i<n;i++){
cout<<current_floor_array[i]<<" ";
}
cout<<"\n";
return 0;
}
Comments
Post a Comment