[השמעת מוסיקה] ROB אודן: זה אני, רוב. בואו ללכת דרך איך ליישם מריו. אז הדבר הראשון שאנחנו צריכים לעשות הוא לבקש מהמשתמש הקלט. אנחנו צריכים לשאול אותם בדיוק איך גבוהה הפירמידה צריכה להיות. אז הנה, אנחנו רואים שאנחנו עושים גובה = GetInt. וזכור כי פונקצית GetInt מיושם בCS50 ספרייה, כך למעלה, אנחנו צריכים זכור # כולל cs50.h. אז למה יש לנו את זה עטוף בלולאה עשה בזמן? ובכן, אנחנו גם צריכים לזכור כי הקלט של המשתמש צריך להיות בתוקף. מהו קלט לא חוקי? ובכן מפרט pset אומר במפורש כי גובה פחות מ 0 או גדול מ -23 אינם חוקיים. אז עד כאן, אנחנו רואים שאנחנו מגדירים קבוע הנקרא MAX_HEIGHT עם ערך של 23. עשה תוך לולאה זו תימשך בזמן גובה הוא פחות מ 0 או MAX_HEIGHT הוא פחות מגובה, מה שאומר ש 23 הוא פחות מהגובה. אז אם גובה הוא 24 או גדולים, אנחנו הולך להמשיך לולאה. זכור כי עשה תוך לולאות הן די מועיל בכל פעם שאנחנו רוצים להגיע קלט משתמש ולאחר מכן לאמת את זה, שכן אנו בהכרח צריכים לשאול את המשתמש ב לפחות פעם אחת עבור הערך שהם רוצים. אז ברגע שיש לנו הקלט שלהם, אנחנו החברה יכול לבנות את הפירמידה. אחד הטריקים של בעיה זו היא להגדיר שאנחנו צריכים להתחיל בחלק העליון של הפירמידה. אתה לא יכול printf תחתית פירמידה ולאחר מכן לבנות את הדרך שלך. אז בואו נסתכל על הדוגמא ממפרט pset. אנו רואים כאן שכאשר אנו נכנסים לגובה של 8, התחתית פירמידה מדפיסה תשעה אלגוריתמים Hash. רמה אחת למעלה שמדפסים חלל אחד ושמונה אלגוריתמים Hash. רמה אחת למעלה מזה הוא שני חללים ו שבעה אלגוריתמים Hash, כל הדרך עד ש להגיע לראש הפירמידה, שהוא שמונה רמות למעלה, שמדפיסה שבעה חללים ושני אלגוריתמים Hash. אז לזכור שיש לנו כדי לעשות את זה ברמה העליונה ראשון. כאן אנחנו iterating מ ברמה העליונה, שורה 8, בהמשך עד השורה מגיעה 0. רווחים אז כמה שאנחנו צריכים להדפיס שבשורה עליונה? הדפסנו שבעה חללים ושני אלגוריתמים Hash. אז מספר המקומות שאנחנו רוצים הוא השורה שהיו ב -1 במינוס. אם בשורה העליונה היא 8, מינוס 8 1 נותן לנו שבעה חללים. אז יש לנו לולאה שתודפס את כל אחד מהם המקום בכל פעם. לכן, כאשר רווחים הוא 7, לולאה זו שבע פעמים, הדפסה שבעה מקומות בודדים. אז עכשיו אנחנו צריכים להדפיס hashes אלה בסופו של הפירמידה. אז הנה, אנחנו צריכים לחשב המספר של Hash. אנחנו רואים שאנחנו עושים גובה שורת מינוס פלוס 2. אז איך מקבל את זה? זכור כי ראש הפירמידה הוא שורה 8, והגובה הוא 8. ואנחנו עדיין מודפסים שני אלגוריתמים Hash. אז לכל הפחות, 8 מינוס 8 בתוספת 2 נותן לנו את התשובה הנכונה. ולאחר מכן לשקול את התחתית של הפירמידה, שורת 1. שורת מינוס גובה תיתן לנו 7, ו לאחר מכן בתוספת 2 נותן לנו תשעה אלגוריתמים Hash, וזה בדיוק את המספר של Hash שאנחנו מודפסים. אז זו הנוסחה שאנחנו רוצים להשתמש בו כדי לחשב את המספר hashes בכל שורה. שימוש במספר זה, אז יש לנו עוד ללולאה, דומה מאוד ל ללולאה שמשמשות לחללים, כי מספר סובב פעמים hashes הדפסת חשיש אחת בכל פעם. בשורה העליונה, שיהיה להדפיס שני אלגוריתמים Hash. בשורה התחתונה, שיהיה להדפיס תשעה אלגוריתמים Hash. וכל שורה אחרת תודפס כל מספר של Hash שביניהם. ואז ממש בסוף, אנחנו צריכים להדפיס הקו החדש שלנו ללכת למקום הבא לחתור בפירמידה. לבסוף, אנחנו צריכים להדפיס את הקו החדש בסוף השורה כדי תמשיך הבא שורה של הפירמידה. ובסופו של התכנית שלנו, יש לנו את התשואה 0. לפי מפרט pset, התשואה 0 הוא לא הכרחי. אבל זה מסמן שעיקרי נעשה. השם שלי הוא רוב, וזה היה מריו. [השמעת מוסיקה]