נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: אני צריכה עזרה

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
קרין
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 18 December 2008 בשעה 22:53 | IP רשוּם
ציטוט קרין

קיבלתי את התרגיל הזה , אני פשוט לא יודעת איך להתחיל אותו אם אפשר לעזור לי ברעיון באלגוריתם ואהיה ממש ממש מודה:

בעיר חדשה רוצים לבנות מערכת בנקאית שתענה על השאילתות הבאות. להלן רשימת השאילתות בהם תומך המבנה:

Init():
אתחול בזמן קבוע, לא מדפיס כלום.

NewBank( bank_no, initial_budget)
קליטת בנק חדש למערכת. bank_no הוא מספר יחידי שלם, המזהה בנק. אם הפעולה הצליחה ,יש להדפיס את ההודעה ""Bank bank_no Established.במקרה שיש כזה מספר בנק ,תודפס ההודעה
"Bank bank_no already exist ".
סיבוכיות זמן O(log( #banks)).

NewCitizenWithoutAccount(id_no )
הצטרפות אזרח חדש לעיר,ללא פתיחת חשבון בשום בנק. אם הפעולה הצליחה ,יש להדפיס את ההודעה ""Citizen id_no arrived.אחרת ,תודפס ההודעה "Citizen id_no already exists ".
סיבוכיות זמן O(log( #people)).

NewAccount( id_no,bank_no, account_no)
פתיחת חשבון חדש עם סכום התחלתי בחשבון - 0. account_no הוא מספר יחידי שלם, המזהה חשבון.
יש לבדוק האם הפעולה הצליחה או לא,ולהדפיס הודעה מתאימה,בדומה לנעשה בשתי הפעולות הקודמות.
סיבוכיות זמן O(log( #banks)+log(#accounts)+log(#pe ople)).

AmountModification(bank_no, account_no,ammount)
שינוי היתרה(הוספת/ הוצאת סכום כלשהו ammount) בחשבון קיים.בסיום הפעולה היתרה בחשבון אמורה להיות מספר שלם אי-שלילי.
יש לבדוק האם הפעולה הצליחה או לא,ולהדפיס הודעה מתאימה.
סיבוכיות זמן O(log( #banks)+log(#accounts)+log(#pe ople)).

BalancedBank()
הדפסת bank_no של הבנק הכי מאוזן.
נגדיר:תקציב הבנק.תקציב הבנק כולל את התקציב ההתחלתי הניתן לבנק ברגע פתיחתו+סכום היתרות בכל החשבונות הקיימים באותו הבנק.יש להדפיס את bank_no של הבנק המהווה חציון מבין כל הבנקים לפי התקציב. במקרה שלשני בנקים יש בדיוק אותו התקציב ,יש להתייחס לבנק עם bank_no הקטן ביותר.
החציון מחושב הצורה הבאה:
נסתכל על סדרת מספרים הממויינת בסדר לא יורד:
אם כמות הנתונים בסדרה היא אי-זוגית,ז"א a1,a2,....,an,a(n+1).....,a(2n ),a2n+1 החציון הוא an+1
אם כמות הנתונים בסדרה היא זוגית,ז"א a1,a2,....,an,a(n+1).....,a2n החציון הוא an
סיבוכיות זמן O(1).

TopClient()
הפקודה הזו תדפיס את id_no של הלקוח הכי עשיר - עם סכום היתרות בכל השבונות המקסימלי מבין כל לקוחות הבנקים. במקרה שלשני לקוחות יש בדיוק אותה יתרה ,יש להתייחס ללקוח עם id_no הקטן ביותר.
סיבוכיות זמן O(1).

End
משחרר את כל המבנים ולא מדפיס כלום.
סיבוכיות זמן O(#accounts + #banks + #people).

הערות:
1. סיבוכיות המקום של המבנה הינה O(#accounts + #banks + #people).
2. בן אדם יכול לפתוח כמה חשבונות ,אבל כל חשבון בבנק אחר.לא ניתן לפתוח כמה חשבונות באותו הבנק.

3.לא ניתן להניח שתקציב הבנקים שונה זה מזה.
חזרה לתחילת העמוד הצג את כרטיס החבר של קרין חפש הודעות אחרות של קרין בקר בדף הבית של קרין
 
ראלף
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 25 December 2008 בשעה 20:00 | IP רשוּם
ציטוט ראלף

את יכולה להשתמש בעץ סטוכסטי המכיל 8 מצביעים לעצי דרגה 2-3 אבסטרקטים הממוינים לפי החציון המינימלי ומשתנה ביניים סטטי סופי.

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

בבקשה ושיהיה לך בהצלחה

ראלף

חזרה לתחילת העמוד הצג את כרטיס החבר של ראלף חפש הודעות אחרות של ראלף בקר בדף הבית של ראלף
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה