עבור לתוכן

++C רישום תור

Featured Replies

פורסם

אני צריכה ליצור תכנית שעורכת תור במשרד הפנים במשך ארבע שעות.

כל דקה נכנסים n אנשים לתור ->מספר האנשים הנכנסים אינו מוגבל.

ישנן 5 עמדות.

כל אדם שנכנס מקליד את שמו, ומספר הפכולה שברצונו לבצע שהיא מספר הדקות שהוא צריך לשהות בעמדה.

בכל דקה, צריך להופיע פלט- מי נמצא באיזו עמדה.

הבעיה שלי: הפלטו שמופיע, מחשיב רק את האנשים החדשים שהכנסתי לתור ואל את האנשים שנמצאים כרגע בעמדות

אשמח לעזרה.

הערה: ישנו קובץ מחלקה של תור בו מוגדרות שהפעולות שינתן לבצע עליו והן:

1. בדיקה האם התור ריק.

2. הכנסת אדם לסוף התור.

3.הוצאת האדם הראשון מהתור.

4. הצצה לפרטיו של האדם הראשון שבתור.

זהו התכנית שרשמתי:


#include <iostream>
#include <conio.h>
#include "queue.h"
#include "queueList.h"
using namespace std;
struct MAN
{
char name[15];
int ection;
};
void main()
{

queueList<MAN>Tor;
int i=0, n, j=0, k;
int time=8, daka=0;
MAN emda[5]={0};
MAN man;


while(time<12)
{daka=0;

while(daka<60)
{if(daka<10)
{
cout<<"\n\nTime is: "<<time<<":0"<<daka;
}
else
{
cout<<"\nTime is: "<<time<<":"<<daka;
}
cout<<"\nEnter how many pepole enter to the Tor?";
cin>>n;
i=0;
while(i<n)
{
cout<<"\nWhat are your name?";
cin>>man.name;
cout<<"What are you want to do?";
cin>>man.ection;

while((man.ection>5)||(man.ection<1))
{
cout<<"What are you want to do?";
cin>>man.ection;
}
Tor.Enqueue(man);
i++;
}
for(k=0; k<5; k++)
{
if(Tor.IsEmpty())
{
cout<<"\nIn emda "<<k+1<<" no kayam man";
}
else
{
cout<<"\nIn emda "<<k+1<<" kayam man who called:"<<Tor.Front().name;
emda[k].ection=Tor.Front().ection;
Tor.Dequeue();
}
emda[k].ection--;
}
daka++;
}

time++;
}

cout<<"\nIt is unable to enter more pepole to the Tor";


getche();
}

פורסם

תבדקי אם ההכנסה לתור באמת מוסיפה לסוף התור ולא לתחילתו.

פורסם
  • מחבר

התור עובד כמו שצריך.

הבעיה שלי היא בלולאה הזו:

for(k=0; k<5; k++)

{

if(Tor.IsEmpty())

{

cout<<"\nIn emda "<<k+1<<" no kayam man";

}

else

{

cout<<"\nIn emda "<<k+1<<" kayam man who called:"<<Tor.Front().name;

emda[k].ection=Tor.Front().ection;

Tor.Dequeue();

}

emda[k].ection--;

}

הלולאה עוברת על כל העמדות מאחת עד חמש ורושמת מי נמצא בעמדה.

ניקח לדוגמא את הכנסת האנשים בפעם הראשון לעמדות בדקה הראשונה (בשעה 8:00)

הכנסתי איש לעמדה הראשונה, ע"מ להכניס את האיש הבאה לעמדה הבאה אני צריכה למחוק את האיש מהתור- כי יש לי גישה רק לאיש הראשון, ואני רוצה לרשום את פרטיו של השני, וגם את השני נמחוק ע"מ להכניס את האדם הבא לעמדה הבאה,

ולכן-בדקה הבאה, כשאני מכניסה אנשים חדשים לתור, אם בנגלה הראשונה של האנשים (ומן הסתם) לא כולם נכנסו לתור לדקה אחת(int ection) בשעה 8:01 אני צריכה לרשום מי נמצא בכל עמדה, ויש לי אנשים מהדקה הקודמת, איך אני שומרת אותם בעמדה שלהם עד אשר ection יהיה שווה אפס(עד שיעברו מספר הדקות שהם היו צריכים להיות בעמדה)

אשמח לתשובה!

פורסם

אה... עכשיו ראיתי מה הבעיה...

לא יצרת 5 תורים(או תורות DAMN U GINDIS).

פורסם
  • מחבר

לא.

אין פתרון באמצעות לולאה לעשות את זה (לשנות את אחד התנאים)????

פורסם

אם ישנן 5 עמודות את לא צריכה חמישה תורים - אחד לכל עמדה?

(או שלא הבנתי לגמרי את השאלה...)

פורסם
  • מחבר

טוב נכנעתי.

איך אני מממשת את התור התכנית עם חמישה תורים?

פורסם

מערך של תורים.

אם ביקשו להכניס לתור הראשון,

תכניסי לאיבר ה- 0,

אם ביקשו לשני תכניסי לאיבר ה- 1 וכו.

אחר כך את יכולה לעבור בלולאה על כל האיברים במערך ולעשות מה שאת רוצה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים