[Music kucheza] Rob BOWDEN: Hi. Mimi nina Rob. Na hebu kupata tamaa. Hivyo jambo la kwanza sisi haja ya kufanya ni kuuliza user hasa jinsi mabadiliko mengi ni deni. Hivyo hapa, tunaona tuna kufanya / kitanzi wakati. Na sisi ni kuweka dola sawa na GetFloat. GetFloat ni nini? Ni moja ya kazi katika CS50 maktaba kwamba anapata kuelea kutoka kwa mtumiaji. Kumbuka, ili kutumia kazi hiyo, tunahitaji hash ni pamoja na CS50.h juu. Hivyo mara tuna thamani kwamba kutoka user, sisi pia haja ya kuwa na uhakika kwamba ni thamani halali. Hatuwezi zikidai pesa hasi. Na hiyo ilikuwa madhumuni ya kufanya hii / kitanzi wakati. Tunaendelea wanaoendesha wakati dola ni chini ya sifuri. Na kufanya / kitanzi wakati ni jambo la haki kutumia hapa, tangu sisi haja ya kuuliza user angalau mara moja kwa jinsi fedha nyingi ni deni. Hivyo mara tuna kuwa idadi ya dola, tunaona hapa tuna senti int sawa na pande zote za Kimarekani mara CENTS_PER_DOLLAR. Saa ya juu, tunaona kwamba CENTS_PER_DOLLAR ni sensibly hufafanuliwa kama 100. Hivyo ni nini mstari huu kufanya? Naam, kama unakumbuka, floating hatua maadili ni si sahihi kabisa. Tofauti na integers, sisi hawezi kuwakilisha maadili yaliyo hatua hasa. Kuna daima aina fulani ya kutokuwa sahihi. Hivyo sisi wanapendelea kufanya kazi na integers tu katika tatizo hili. Na hapa, kama mtumiaji aliingia $ 3.42, sisi ni kuwabadili kwamba senti 342 na rounding, tu kujikwamua yoyote ya kuwa kutokuwa sahihi. Hivyo mara sisi kuwa na idadi ya senti katika integer, tunaweza kuendelea na wengine wa mpango. Tunaona hapa kwamba sisi ni kutangaza integer sarafu ambayo tuko tu kwa kutumia kuweka wimbo wa jumla idadi ya sarafu. Hapa, tuna wakati wetu wa kwanza kitanzi. Tunaona wakati senti ni kubwa zaidi kuliko au sawa na robo, ambayo hapo juu, ni hash hufafanuliwa kama 25, wakati kwamba ni kweli, sisi wanataka nyongeza idadi yetu ya sarafu na senti decrement kwa robo. Kumbuka kwamba syntax hii ni sawa na senti sawa na senti minus robo. Wale ni sawa. Hivyo ni nini kitanzi hii wakati akifanya? Wazo hapa ni kwamba, kama mimi najua $ 3.42 zinadaiwa, siwezi kuendelea kutoa robo mpaka siwezi kutoa robo yoyote zaidi. Siwezi kutoa robo yoyote zaidi, mara moja nimekuwa kupewa $ 3.25. Hivyo basi, mara moja hiyo kesi, tutaweza kuvunja nje ya kitanzi hii wakati. Senti ataachwa senti 17. Na tutaweza kuendelea chini ijayo kitanzi wakati ambapo tunasema, wakati senti ni kubwa zaidi kuliko au sawa na dime. Na sasa sisi ni kufanya exact kitu sisi alivyofanya katika kesi robo, ila kwa dimes. Hivyo, pamoja na $ 0.17, tutaweza kitanzi mpaka tunaweza tena kutoa dime, ambayo ni hasa mara moja. Na kisha tutaweza kuwa na kushoto na senti 7. Kisha tutaweza kuendelea na nickels, ambayo itakuwa kitanzi mpaka sisi hawawezi kutoa nickels yoyote zaidi, ambayo itakuwa kuondoka sisi na senti mbili. Na kisha, chini chini, tuna pennies, ambayo itakuwa kitanzi na mapenzi hatimaye kuondoka sisi na senti zero. Kisha mwishoni, sisi tu haja ya magazeti nje idadi yetu ya sarafu. Hivyo mpango huu ni sahihi kabisa. Lakini sisi kweli anaweza kufanya kidogo bora. Sasa kama mimi kusema kwamba mimi deni wewe $ 10,000, unapaswa haja ya kwenda hapa ni moja robo, robo mbili, robo tatu. Unapaswa kujua mara moja kwamba Mimi deni wewe 40,000 robo. Sasa hebu tuangalie mpango huo Hushughulikia kidogo bora. Katika toleo huu wa mambo, bado tunahitaji kuuliza user kwa kiasi cha kubadili kwamba wanataka katika hasa njia hiyo sisi alifanya kabla ya. Tunahitaji kwa pande zote ni hasa njia ya sisi alifanya kabla ya. Na bado tuna sarafu yetu integer alitangaza sawa kama kabla. Hivyo hapa ni ambapo mambo kupata tofauti kidogo. Sisi ni kufanya sarafu pamoja na usawa senti kugawanywa na robo ambapo robo ni 25. Nini hii ni kusema ni, kuchukua kama wengi robo kama unaweza kwenda katika senti na kuongeza kwamba sarafu. Hivyo kama senti ni 142, 142 kugawanywa kwa 25 inatupa 5. Kumbuka kwamba mgawanyiko integer moja kwa moja truncates. Hivyo sisi ni kufanya sarafu pamoja na sawa na 5. Mara baada ya hii, sisi ni kusema senti senti sawa robo mod. Kumbuka kwamba operator mod inatoa sisi salio baada ya mgawanyiko. Hivyo 142 mod robo, kwamba nitakupa ni 142 minus 125, ambayo ni 17. Hiyo ni salio baada ya kufanya 142 kugawanywa na 25. Hivyo sasa senti ni sawa na 17. Na sisi kufanya exact kitu kwa dimes. 17 kugawanywa na 10 itatupa 1. Na sisi kuongeza kwamba kwa sarafu. Na kisha sisi update senti kuwa 17 mod 10, ambayo ni 7. Na kisha moja kwa ajili ya nickels. 7 kugawanywa na 5 ni 1. Kuongeza kwamba kwa sarafu. Na kisha 7 mod 5 ni 2. Na kwamba ni senti yetu. Na kisha, kwa pennies, hakuna halisi hatua katika kugawa au modding, kwa kuwa, kama tuna $ 0.2 kushoto juu, tunaweza tu mara moja kuongeza kwamba kwa idadi yetu ya sarafu. Na hatimaye, tunahitaji magazeti nje yetu idadi ya sarafu na, kwa hiari, kurudi 0 mwishoni mwa mpango wetu kwa ishara ya kila kitu kazi. Jina langu ni Rob. Na hii ilikuwa tamaa. [Music kucheza]