الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أحتاج مساعده في تحويل الكود من سي بلس بلس الى جافا

مغلق
بدأه al7elwah في 8 مايو 2006 · 0 رد · 451 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم لوسمحتوا أحتاج أحول هذا الكود من سي بلس بلس الى جافا

تكفون لا تردوني ضروووووووووووووووووووووووري

الكود:

#ifndef QUEUE_H

#include "Queue.h"

#endif

#include <stdlib.h>

#include <iostream.h>

#include <stddef.h>

#define MAX_FLOOR_PASS_COUNT 5

enum dir_Type {up,down};

enum status_Type {stopped,MoveUp,MoveDown};

struct DataType

{

bool callup,calldown,deliver;

int fno;

};

struct Node

{

DataType data;

Node *prev;

Node *Next;

};

struct elevator

{

int fcount,pcount,capacity;

Node *head;

status_Type status;

};

struct requests

{

int srcFloor,destFloor,passcount;

dir_Type dir;

};

void set_status(elevator &list,status_Type st);

void insert (elevator &list,Queue<requests>& queue,requests req);

void create (elevator &list);

void remove (elevator &list,Queue<requests>& queue,int& passengercount,int floorno);

void printsrcreq(requests req);

void printdestreq(requests req);

int insert_dest (elevator &list,Queue<requests>& queue,int floorno);

void insert_src (elevator &list,Queue<requests>& queue);

void create (elevator &list)

{

Node *temp;

list.fcount=5;

list.pcount=0;

list.capacity=10;

list.head=new Node;

list.head->data.callup=false;

list.head->data.calldown=false;

list.head->data.deliver=false;

list.head->data.fno=0;

list.head->prev=NULL;

list.head->Next=NULL;

temp = list.head;

for (int i=0;i<(list.fcount-1);i++)

{

temp->Next=new Node;

temp->Next->data.callup=false;

temp->Next->data.calldown=false;

temp->Next->data.deliver=false;

temp->Next->data.fno=i+1;

temp->Next->prev=temp;

temp->Next->Next=NULL;

temp=temp->Next;

}

list.status = stopped;

return;

}

void printsrcreq(requests req)

{

cout<<"Someone called the elevator in floor "<<req.srcFloor<<" to go ";

if (req.dir==up)

cout<<"UP.\n";

else

cout<<"DOWN.\n";

}

void insert_src (elevator &list,Queue<requests>& queue)

{

requests req;

int i,d,r;

r=rand()%3;

for (i=0;i<r;i++)

{

req.destFloor=-1;

req.passcount=-1;

req.srcFloor=rand()%list.fcount;

if (req.srcFloor==0)

req.dir=up;

else if (req.srcFloor==(list.fcount-1))

req.dir=down;

else

{

d=rand()%2;

if (d==0)

req.dir=down;

else

req.dir=up;

}

printsrcreq(req);

insert(list,queue,req);

}

return;

}

void set_status(elevator &list,status_Type st, bool move)

{

switch (st)

{

case MoveUp:

if (move)

{

list.head=list.head->Next;

cout<<"Moving up to floor "<<list.head->data.fno<<"\n";

}

else

cout<<"Changing direction to move up.\n";

break;

case MoveDown:

if (move)

{

list.head=list.head->prev;

cout<<"Moving down to floor "<<list.head->data.fno<<"\n";

}

else

cout<<"Changing direction to move down.\n";

break;

case stopped:

cout<<"Stopping at floor "<<list.head->data.fno<<"\n";

break;

}

list.status=st;

}

void insert (elevator &list,Queue<requests>& queue,requests req)

{

Node *temp;

temp =list.head;

queue.enqueue(req);

while (temp->data.fno< req.srcFloor)

temp=temp->Next;

while (temp->data.fno> req.srcFloor)

temp=temp->prev;

if (req.dir==up)

temp->data.callup=true;

else

temp->data.calldown=true;

return;

}

void remove (elevator &list,Queue<requests>& queue,int& passengercount,int floorno)

{

int sum=0;

requests req;

Node *temp;

temp=list.head;

Queue<requests> *tempr;

tempr=new Queue<requests>;

while (!queue.emptyQueue())

{

queue.dequeue(req);

if (req.destFloor==floorno)

sum=sum+req.passcount;

else

tempr->enqueue(req);

}

passengercount=sum;

while (!tempr->emptyQueue())

{

tempr->dequeue(req);

queue.enqueue(req);

}

while (temp->data.fno<floorno)

temp=temp->Next;

while (temp->data.fno>floorno)

temp=temp->prev;

temp->data.deliver = false;

return;

}

void printdestreq(requests req)

{

cout<<req.passcount<<" passenger(s) entered the elevator want to go to floor "<<req.destFloor<<".\n";

}

int insert_dest(elevator &list,Queue<requests>& queue,int floorno)

{

requests req;

int f,passum=0;

Node *tlist;

Queue<requests> *temp;

temp = new Queue<requests>;

while (!queue.emptyQueue())

{

queue.dequeue(req);

if ((req.srcFloor==floorno)&&(req.destFloor==-1))

{

if (req.dir==up)

{

do {

f=rand() %(list.fcount-req.srcFloor)+(req.srcFloor);

req.destFloor=f;

} while (req.srcFloor==req.destFloor);

}

else

{

do {

f=rand()%req.srcFloor;

req.destFloor=f;

} while (req.srcFloor==req.destFloor);

}

req.passcount=(rand()%MAX_FLOOR_PASS_COUNT)+1;

if ((req.passcount+passum+list.pcount)>list.capacity)

req.passcount = list.capacity - (list.pcount+passum);

tlist=list.head;

if (tlist->data.fno<req.destFloor)

{

while (tlist->data.fno<req.destFloor)

tlist=tlist->Next;

}

else if (tlist->data.fno>req.destFloor)

{

while (tlist->data.fno>req.destFloor)

tlist=tlist->prev;

}

tlist->data.deliver=true;

printdestreq(req);

passum=passum+req.passcount;

}

temp->enqueue(req);

}

list.pcount=list.pcount+passum;

while (!temp->emptyQueue())

{

temp->dequeue(req);

insert(list,queue,req);

}

return passum;

}

int main()

{

int t=0,tinc=5,removedpass=0, passcount;

elevator ele;

bool goingup=true;

Queue<requests> *r;

r=new Queue<requests>;

rand();

create (ele);

set_status(ele,stopped,false);

insert_src(ele,*r);

while (t != 100)

{

cout<<"\n-------------------------------------------------\n";

cout<<"Time: "<<t<<" ::: ";

cout<<"Floor no. "<<ele.head->data.fno<<" ::: ";

cout<<"Passenger count = "<< ele.pcount<<"\n";

cout<<"-------------------------------------------------\n\n";

if (ele.head->data.deliver == true)

{

if (ele.status!=stopped)

set_status(ele,stopped,false);

remove (ele,*r,removedpass,ele.head->data.fno);

ele.pcount=ele.pcount-removedpass;

cout<<removedpass<<" passenger(s) has left the elevator.\n";

}

if ((ele.head->data.callup == true) && (goingup) && (ele.pcount<ele.capacity))

{

if (ele.status!=stopped)

set_status(ele,stopped,false);

passcount=insert_dest(ele,*r,ele.head->data.fno);

ele.head->data.callup == false;

}

else

{

if ((ele.head->data.calldown == true) && (!goingup) && (ele.pcount<ele.capacity))

{

if (ele.status!=stopped)

set_status(ele,stopped,false);

passcount=insert_dest(ele,*r,ele.head->data.fno);

ele.head->data.calldown == false;

}

}

if (goingup)

{

if (ele.head->Next!=NULL)

set_status(ele,MoveUp,true);

else

{

goingup=false;

set_status(ele,MoveDown,false);

}

}

else

{

if (ele.head->prev!=NULL)

set_status(ele,MoveDown,true);

else

{

goingup=true;

set_status(ele,MoveUp,false);

}

}

insert_src(ele,*r);

t=t+tinc;

}

system("pause");

return 0;

}

[/code ]

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…