>> [השמעת מוסיקה]
>> ROB אודן: היי.
אני רוב.
ובואו לקבל חמדן.
>> אז הדבר הראשון שאנחנו צריכים לעשות הוא לשאול את המשתמש בדיוק איך
הרבה שינוי הוא חייב.
אז הנה, אנחנו רואים שיש לנו לעשות / תוך לולאה.
ואנחנו קביעת דולרים שווה GetFloat.
מהו GetFloat?
זה אחד מהתפקידים ב ספריית CS50 שמקבלת
לצוף מהמשתמש.
זכור, על מנת להשתמש בפונקציה זו, אנחנו צריכים חשיש כוללים
CS50.h בחלק העליון.
>> אז ברגע שיש לנו ערך שמן משתמש, גם אנחנו צריכים להיות בטוחים כי
זה ערך חוקי.
אנחנו לא יכולים חייבים כסף שלילי.
ואז זה המטרה של עשה את זה / ואילו לולאה.
אנחנו ממשיכים לולאה תוך דולרים הוא פחות מאפס.
ולעשות / תוך לולאה היא דבר הנכון לשימוש כאן, שכן אנו צריכים לשאול
משתמשים לפחות פעם אחת לכמה הרבה כסף הוא חייב.
>> אז ברגע שיש לנו את המספר הזה של דולרים, אנו רואים כאן שיש לנו סנט int
שווה סיבוב על דולרי זמנים CENTS_PER_DOLLAR.
בחלק העליון, אנו רואים כי CENTS_PER_DOLLAR הוא
בתבונה מוגדרת כ100.
אז מה עושה את הקו הזה?
>> ובכן, אם אתה זוכר, נקודה צפה ערכים הם לא ממש מדויקים.
שלא כמו מספרים שלמים, אנחנו לא יכולים לייצג ערכי נקודה צפה בדיוק.
תמיד יש סוג כלשהו של חוסר דיוק.
אז אנחנו מעדיפים לעבוד רק עם מספרים שלמים לאורך כל את הבעיה הזו.
והנה, אם המשתמש נכנס 3.42 $, אנחנו המרה של342 סנט ו
עיגול, פשוט להיפטר כל חוסר דיוק ש.
>> אז ברגע שיש לנו את המספר של סנט ב שלם, אנחנו יכולים להמשיך עם
שאר התכנית.
אנו רואים כאן שאנחנו מכריזים שלמים מטבעות שאנחנו רק להשתמש
כדי לעקוב אחר סך הכל מספר המטבעות.
הנה, יש לנו בזמן שהלולאה הראשונה שלנו.
>> אנו רואים בזמן שהסנאט הוא גדול או שווה לרבעון, אשר לעיל, הוא חשיש
מוגדרים כ25, בעוד זה נכון, אנחנו רוצה להגדיל מספר המטבעות שלנו
וסנטים מפחית ברבעון.
זכור כי תחביר זה הוא שווה ערך לסנאט
שווה סנט מינוס רבעון.
אלה הם אותו הדבר.
>> אז מה הוא עושה בזמן שהמעגל הזה?
הרעיון כאן הוא שאם אני יודע 3.42 $ הוא חייב, אני יכול להמשיך ולתת
רבעים עד שאני לא יכול לתת לי רבעים יותר.
אני לא יכול לתת רבעים יותר, פעם אחת נתתי לי 3.25 $.
>> אז, ברגע שזה המקרה, אנחנו לפרוץ את הלולאה בזמן הזה.
סנט יישאר ב17 סנט.
ואנחנו נמשיך במורד למשנהו ואילו לולאה שבו אנחנו אומרים, ואילו סנט
הוא גדול או שווה לאגורה.
>> ועכשיו אנחנו עושים את אותו דבר מדויק דבר שעשינו במקרה הרבעון,
אלא במטבעות של עשרה סנאט.
אז עם 0.17 $, אנחנו לולאה עד שאנחנו יכולים כבר לא נותן אגורה, שהוא
פעם אחת בדיוק.
ואז אנחנו אשאר עם 7 סנט.
>> לאחר מכן אנו ממשיכים למטבעות, אשר יהיה לולאה עד שאנחנו לא יכולים לתת לי
עוד מטבעות, אשר יהיה משאיר אותנו עם שני סנטים.
ולאחר מכן, למטה בתחתית, יש לנו פרוטות, שתהיה לולאה ותהיה
לבסוף משאיר אותנו עם אפס סנט.
ואז בסוף, אנחנו רק צריכים להדפיס את מספר המטבעות שלנו.
>> אז תכנית זו היא נכונה באופן מושלם.
אבל אנחנו באמת יכולים לעשות קצת יותר טובים.
עכשיו, אם אני אומר שאני חייב לך $ 10,000, אתה לא צריך ללכת הנה אחד
רבעון, בשני רבעונים, שלושה רבעים.
אתה צריך לדעת באופן מיידי, כי אני חייב לך 40,000 רבעונים.
>> עכשיו בואו נסתכל על תכנית ש מטפל קצת יותר טוב בו.
בגרסה זו של דברים, אנחנו עדיין צריכים לשאול את המשתמש לכמות
לשנות את זה שהם רוצים בדיוק באותה הדרך שעשינו בעבר.
אנחנו צריכים לעגל בדיוק זה את הדרך שעשינו בעבר.
ועדיין יש לנו המטבעות שלנו שלם הוכרז בדיוק אותו הדבר כמו קודם.
>> אז הנה מקום שבו דברים לקבל קצת שונה.
אנחנו עושים את המטבעות בתוספת שווה סנט מחולק ברבעון
בי רבעון הוא 25.
מה שזה אומר זה, לקחת כמה שיותר רבעונים כיכולים להיכנס לסנאט ולהוסיף
כי למטבעות.
>> אז אם סנט הוא 142, 142 מחולקים על ידי 25 נותן לנו 5.
זכור כי חלוקה של מספרים שלמים באופן אוטומטי חותך.
אז אנחנו עושים מטבעות בתוספת שווה 5.
>> מייד אחרי זה, אנחנו אומרים סנט שווה סנט רבעון mod.
זכור כי מפעיל mod נותן שלנו השארית לאחר החלוקה.
אז 142 רבעון mod, זה ייתן לי הוא 142 מינוס 125, שהוא 17.
זה השארית לאחר עושה 142 מחולקים 25.
>> אז עכשיו סנטים שווים ל17.
ואנחנו עושים את אותו דבר דבר למטבעות.
17 מחולקים 10 ייתן לנו 1.
ואנו מוסיפים כי למטבעות.
ואז אנחנו לעדכן סנט ל להיות 17 mod 10, שהוא 7.
>> ולאחר מכן את אותו הדבר עבור פרוטות.
7 מחולקים לפי 5 הוא 1.
תוסיף, כי למטבעות.
ולאחר מכן 7 mod 5 הוא 2.
וזה סנט שלנו.
>> ואז, בפרוטות, אין אמיתי נקודה המפרידה או למשחקים, שכן,
אם יש לנו .2 $ שנשארו, אנחנו יכולים רק מייד מוסיף כי ל
המספר שלנו של מטבעות.
ולבסוף, אנחנו צריכים להדפיס אותנו מספר המטבעות, לחלופין,
להחזיר 0 בסוף התכנית שלנו כדי לסמן הכל עבד.
>> השם שלי הוא רוב.
וזה היה חמדן.
>> [השמעת מוסיקה]