>> [Music kucheza]
>> ZAMYLA CHAN: Sasa hebu kukabiliana na tamaa.
Sema wewe ni cashier, na haja ya kutoa wateja wako a
kiasi fulani cha mabadiliko.
Naam, kama ungekuwa cashier tamaa, wewe d wanataka kushika yote
sarafu na wewe mwenyewe.
Hivyo d kutoa wateja mabadiliko yao kutumia sarafu kama machache iwezekanavyo.
>> Kazi yako kwa hii p-kuweka ni kutekeleza Tamaa, mpango huo
mahesabu ya idadi ya chini ya sarafu kutumika kufanya lolote
kutokana na kiasi cha mabadiliko.
Kabla ya kupiga mbizi katika programu dhana na C syntax kwa tamaa,
hebu majadiliano ya kwanza kwa njia tamaa mpango, na kuona kama sisi
wanaweza kutambua algorithm.
Kumbuka kwamba algorithm ni seti ya
maelekezo kwa ajili ya kutatua matatizo.
algorithm kwa tamaa ingekuwa tu kuwa seti ya sheria mantiki na hatua ambazo
tunaweza kufuata.
Na siku zote mavuno kiwango cha chini idadi ya sarafu inahitajika.
>> Jambo la kwanza d haja ya kujua ni mabadiliko ya kiasi gani
zinadaiwa na wateja.
Kwa mfano huu, hebu kusema $ 0.32.
Kuna njia nyingi za kupata nyuma $ 0.32.
Unaweza kutumia, kwa mfano, 32 pennies.
Au kama ungekuwa kidogo pupa katika kuchagua sarafu yako, unaweza kutumia
sarafu tano badala ya 32 kwa kutoa wateja tatu dimes -
$ 0.10 kila - na pennies mbili - $ 0.01 kila mmoja.
>> Lakini tunaweza kufanya vizuri zaidi kuliko sarafu tano?
Tunaweza kuwa na hata pupa?
Kabisa ikiwezekana.
>> Hebu kuendelea kutembea kwa njia ya Mpango tamaa, na kuona.
Kama mwisho lengo lako ni kutumia sarafu chache kama inawezekana, basi itakuwa zaidi
busara kutumia kubwa iwezekanavyo sarafu.
D badala ya kutoa robo moja nyuma - $ 0.25 kila -
kuliko nickels tano -
$ 0.05 kila mmoja.
Hivyo labda utawala utawala wetu kwa Tamaa inaweza kuwa daima kutumia
sarafu kubwa iwezekanavyo.
Kati ya robo, dimes, nickels, na pennies, yetu
sarafu kubwa ni robo.
Hivyo tutaweza kujaribu kutumia yao ya kwanza.
>> Nyuma kwa yetu ya dola $ 0.32.
Tunaweza kutumia robo kutoa wateja $ 0.32?
Ndiyo.
Ambayo kuondoka na sisi na $ 0.07 kushoto.
>> Tunaweza kutumia robo mwingine?
Hapana, kwa sababu 25 ni zaidi ya saba.
Hatutaki kutoa wateja yoyote zaidi ya sisi deni yao.
>> Sawa.
Sasa kwa kuwa tumekuwa nimechoka robo yetu, basi hoja juu ya ujao kubwa
sarafu, dime.
Tunaweza kutumia dime kutoa wateja wao $ 0.07 nyuma?
No, tangu 10 ni zaidi ya saba.
>> Hivyo basi sarafu ijayo kubwa kupatikana kwetu ni nickel.
Tunaweza kutumia nickel?
Ndiyo.
Na kisha tunatarajia kuwa na $ 0.02 kushoto juu.
>> Hatuwezi kutumia nickel kurudi $ 0.02.
Hivyo sisi wakiongozwa sarafu ya mwisho katika ovyo yetu - senti.
Na baada ya kutumia pennies mbili, tunatarajia kuwa na kushoto na senti zero, ambayo ina maana kwamba
tumekuwa mafanikio kulipwa user mabadiliko yao deni
kutumia sarafu nne tu -
robo moja, nickel moja, na pennies mbili.
>> Unaweza kukimbia ufumbuzi wafanyakazi ili kuona kama utawala wetu utawala na mchakato walionyesha
sisi jibu sahihi.
Kwa seti moja ya tatizo kubwa, wewe utakuwa na uwezo kuendesha ufumbuzi wafanyakazi kuona ni jinsi gani
mpango wako mwenyewe wanapaswa kufanya kazi.
Na maelekezo maalumu mapenzi kuwa katika tatizo seti specs.
>> Mara baada ya sisi kukimbia ufumbuzi wafanyakazi, ni papo kwa sisi kwa jinsi mabadiliko mengi zinadaiwa
kumbuka kwamba anauliza kwa kiasi katika dola.
Sisi pembejeo $ 0.32, 0.32.
Inatuambia kwamba sarafu nne ni deni lake, sambamba na jibu letu.
Ajabu.
>> Hivyo sasa hebu kuanza kuangalia katika utekelezaji
ya algorithm tamaa.
Tunajua mambo kadhaa.
Mmoja, kwamba tutaweza haja ya haraka user kwa kiasi cha mabadiliko.
>> Mbili, tutaweza wanataka kufuata yetu uongozi utawala wa daima kutumia
sarafu kubwa iwezekanavyo.
Na tatu, kwamba sisi haja ya kuweka wimbo ya jinsi ya sarafu nyingi sisi kutumia.
Kwa sababu mwisho, tunahitaji magazeti idadi ya sarafu kwamba sisi.
>> Kwanza, na hivyo kusababisha user kwa kiasi cha mabadiliko.
Kila kukabiliana na pembejeo user, kufanya kuhakikisha kwamba, unaweza kufikiria yote ya
mahitaji ya pembejeo, na tu kukubali pembejeo kwamba hukutana wale
mahitaji.
Katika kesi hiyo, tunataka kukabiliana na thamani ya fedha kwa dola.
>> GetFloat na GetInt kazi kuhakikisha kwamba pembejeo ni nambari.
Lakini user ni uwezo wa pembejeo hasi numeric maadili.
Hivyo kumbuka tu matumizi yasiyo ya hasi pembejeo, ambayo ni pamoja na hasi wote
idadi na sifuri.
>> Katika kesi hiyo, pembejeo lazima kuelea.
Kwa maneno mengine, idadi decimal.
Kwa sababu tatizo kuweka spec inahitaji kuuliza kwa ajili ya pembejeo katika dola.
>> Lakini katika C, floating maadili hatua hawawezi kuwa kuwakilishwa kwa usahihi.
Kwa sababu kuna idadi finite ya bits ambayo kwa
kuwakilisha maadili kubwa.
Kuchukua idadi 0.1.
Kama ningekuwa na kuuliza wewe kuandika 0.1 na mkono mia mahali decimal,
ungependa kuandika 1, ikifuatiwa kwa 99 zeroes.
Tunatarajia kutarajia kwamba kompyuta yetu ingekuwa magazeti halisi kitu kimoja
kama sisi aliuliza kwa.
>> Basi hebu angalia nini anafanya.
Mimi utakagua maadili ya uchapishaji kuelekea mwisho wa hii kutembea kwa njia ya.
Kwa sasa, angalia hapa kwamba f% ni kishika kwa ajili ya hatua yaliyo.
Lakini sisi bayana kabla kwamba tunataka 100 decimals kuonyeshwa, na kisha mpya
line kwa formatting nzuri.
>> Baada ya kamba, sisi kuchagua 0.1 kama kuelea kwamba tunataka magazeti nje.
Na matokeo yake, moja, ikifuatiwa na baadhi ya zeros, lakini kisha
kundi zima la idadi.
Hakika si kama ilivyotarajiwa.
>> Yaliyo hatua kutokuwa sahihi inaweza kuanzisha rounding makosa ndani yako
mahesabu kwamba wewe dhahiri wanataka kuepuka.
Kama unataka kuona mifano zaidi, unaweza kushusha imprecision.ce kutoka
kutembea kwa njia ya kanuni, ambayo ni rahisi mpango huo anauliza kuelea na Prints ni
nyuma mia mahali decimal.
Bila shaka, kama unataka kuonyesha zaidi au chini ya maeneo decimal
unaweza kubadilisha mwenyewe.
>> Kama utaona, ingawa tofauti kati ya mbili ni ndogo, wakati kupata
kwa kuzidisha na kuongeza ikifungwa, kwamba tofauti inaweza hatimaye kuongeza up.
Nyuma kwa tamaa.
Sisi utasikia wanataka kuepuka makosa rounding na kushughulika na idadi nzima.
Hivyo, baada ya sisi kupata halali pembejeo kutoka kwa user, hebu kubadilisha hii
thamani ya dola senti.
>> Kiakili, sisi kufanya hivyo kwa kuzidisha thamani ya dola na 100.
Lakini kumbuka, kwa sababu ya yaliyo hatua kutokuwa sahihi, tunataka kufanya
uhakika kwamba sisi ni kutumia thamani ya haki.
Kuzidisha kwa 100 kimsingi hoja mahali decimal nafasi mbili kwa
haki, ukataji wa mbali au truncating kitu chochote baada ya hapo.
>> Kama wewe kucheza karibu na baadhi zaidi mifano, utaona kwamba wewe si
daima got idadi ya haki kama wewe kutumia njia hii ya truncating.
Kwa mfano, 12.59 kuchapishwa na 100 maeneo decimal, kwamba anatoa
12.5899, nakadhalika.
Wewe Ningependa kupata 12.58 kama wewe truncated, si 12.59, kama unahitaji.
>> Badala yake, ni bora kwa pande zote namba kwanza.
Kwa bahati nzuri, C kuja na kazi kuitwa Round.
Ni katika maktaba math.
>> Kama Unataka kujua jinsi ya kutumia Round, basi unaweza kuleta up mwongozo au
mtu ukurasa kwa ajili ya kazi hiyo.
Unaweza kufanya hivyo kwa kuandika mtu, short kwa mwongozo, na kisha kazi kwamba
wanataka kuangalia up.
Hivyo kuandika mtu mzima ndani ya terminal amri line kuleta up mwongozo.
>> Inaweza kuwa ngumu kidogo decipher, lakini hatimaye itabidi
kupata hutegemea yake.
Kurasa mtu kuonyesha nini kazi gani, na kisha baadhi
matumizi ya uwezekano wa hilo.
Mimi itabidi kuondoka kuchunguza mtu ukurasa kwa Round.
Lakini tunajua kwamba unaweza kutumia kwa pande zote thamani wakati wa uongofu wako kutoka
dola za Kimarekani kwa senti.
>> Pande zote nitakupa nyuma idadi ya aina data mara mbili.
Na unaweza kubadilisha au kutupwa kwa int baadaye.
Kubwa.
Kwa sasa tumekuwa ilisababisha user kwa kiasi fedha, na
kuongoka katika senti.
Sasa tunaweza kutekeleza algorithm kwamba kwa kawaida hutumia
sarafu kubwa zaidi.
>> Kumbuka kwamba kuna nyingi njia ya kutekeleza tamaa, kama
kuna njia nyingi kwa njia ya kila sayansi ya kompyuta tatizo.
Kutafuta njia ya kifahari zaidi, hiyo ni sehemu ya kujifurahisha.
Katika haya p-sets, ikiwa mpango wako haina hasa mechi ya yangu
maelezo katika walkthroughs, kwamba ni sawa.
Lakini tu kuhakikisha kwamba hupita kuangalia 50, satisfies wote
mahitaji ya kuunda specifikationer, na kwamba wewe kufikiria kama yako
mbinu ina mpango nzuri.
>> Kwa maneno mengine, jinsi ufanisi ni nini?
Kwa mfano, je, aina repetitive mistari code, badala ya kutumia kitanzi?
Kuandika code pamoja na kubuni bora mapenzi kuja uzoefu kama wewe maendeleo
kupitia kozi.
>> Kwa hili kutembea kwa njia ya, nitakwenda juu ya njia mbili ambazo zinaweza kutumika kwa
kukamilisha tamaa.
Njia ya kwanza ni njia ya kutumia loops na kutoa.
Mapema, wakati sisi aliyesema kupitia Mchakato wa tamaa, sisi kuendelea
checked kama tunaweza kutumia robo, na kutumika robo mpaka
thamani iliyobaki ilikuwa chini ya $ 0.25.
>> Hii inasababisha vizuri kwa kitanzi wakati muundo.
Wakati sisi bado unaweza kutumia robo, kutumia moja.
Kwamba wakati kitanzi lazima kutekeleza kwa muda mrefu kama thamani iliyobaki ni kubwa kuliko
au sawa na robo ya asilimia thamani.
Hiyo ina maana kwamba itabidi pia wanataka kuweka wimbo wa fedha iliyobaki
thamani, na taarifa hiyo kila wakati kwamba matumizi ya sarafu.
>> Pia kumbuka kwamba mwisho, yako pato ni idadi ya sarafu kutumika.
Hivyo kitu kingine kuweka wimbo wa ni idadi ya sarafu kwamba matumizi.
Unaweza kuweka wimbo wa haya kwa kutumia vizuri kwa jina vigezo.
Na ndani ya mwili wa kitanzi yako ingekuwa kuwa update kwa vigezo hizo.
Mara baada ya kitanzi kwa robo alimaliza, wewe Unaweza kutumia moja sawa kwa ajili ya dimes,
na kadhalika na kadhalika, mpaka wameweza akarudi yote ya fedha.
>> Nimeandika baadhi pseudo-code hapa kwa kukusaidia taswira tu jinsi
mchakato sisi kujadiliwa wanaweza kutafsiri kwa C. Kama unaweza kuona hapa, mimi bado nina kutumia
Maneno ya Kiingereza.
Ni si C bado.
Lakini nimeanza mambo Indent.
Nimekuwa kuweka hali ya ndani ya mabano yangu.
Ni mapya ya kuangalia kidogo kidogo kama programu code.
>> Pseudo-code ni njia kuu ya kwa kupata mwenyewe kuanza.
Taswira code yako kabla ya wewe kuangalia juu syntax.
Kwa sababu mara nyingi sehemu ya gumu kuhusu tatizo ni kweli kuelewa kile
hasa unahitaji kufanya.
Mara baada ya kuandika kwamba chini, basi ni rahisi sana kwa kuangalia kazi
na syntax maalum yako mstari wa Pseudo-code
>> Kumbuka kwamba hii inaweza kuwa kufanana na aina ya mifupa ya
code yako kwamba kuandika.
Daima kuna optimizations kufanywa.
Na hasa katika wangu pseudo-code hapa, kuona kama unaweza doa yake.
>> Lakini kimsingi mchakato na njia ya kufikiri
ni tu kama sisi kujadiliwa.
mstari wa kwanza anatuambia kupata kiasi fulani katika dola.
Na pili anatuambia kubadilisha kwa senti.
>> Na kisha, wakati robo inaweza kutumika, sisi wanataka kuongeza kuhesabu sarafu na
kupungua kwa kiasi fedha taslimu.
Same huenda kwa dimes, nickels, na pennies.
Na hatimaye, sisi tunasema user jinsi sarafu nyingi sisi kutumika.
>> Kubwa.
Ili anahitimisha njia kitanzi.
Sasa hebu majadiliano kuhusu njia msimu, ambayo ni zaidi kama mgawanyiko.
>> Sisi sote ni ukoo na plus, minus, kuzidisha na kugawanya operators
kwa ajili yetu.
C ina zote nne za hizo, lakini pia ina modulo operator, na kuwakilishwa na
asilimia ishara.
Modulo ni nadhifu kweli.
Ni anakupa salio kutoka kugawa namba mbili.
>> Kumbuka muda mrefu ujumbe mgawanyiko wakati kugawanya, kusema, 74 na tatu?
Kuanzia pamoja na mamia mahali, ungekuwa kujua kwamba 3 huenda katika saba
mara mbili kwa kufanya sita kwa salio moja.
Ningependa kuandika mbili saa ya juu, na kisha Ondoa 6 kutoka saba, kufanya juu ya
salio ya 14 kurudia utaratibu.
>> Tatu huenda katika 14 mara nne kwa kufanya 12, na salio mbili.
Na mbili haina kubeba zaidi ya tena.
Hivyo mbili itakuwa kushoto katika chini kama salio.
>> Na kwamba ni nini modulo inatoa, wewe kwamba idadi ya chini.
Hivyo 74 modulo tatu bila kukupa mbili.
Na 10 modulo mbili, pamoja na kwamba awajalieni sifuri.
Kwa sababu hakuna salio yoyote wakati kugawanya 10 na mbili.
>> Sita modulo tano, pamoja na tano huenda katika sita mara moja.
Na wakati huo mmoja wa kushoto juu.
Hivyo sita modulo tano ni moja.
>> Kisha kama wewe na modulo saba tisa, utaweza kupata saba.
Kwa sababu tisa ni kubwa kuliko saba.
Hivyo hana kugawanya yote ndani ya saba, kuacha saba kama jibu lako.
>> Kama unafikiri kuhusu modulo zaidi kidogo, kukumbuka kwamba anatoa
salio baada ya kugawanya kitu.
Fikiria jinsi unaweza kuwa na uwezo wa kutumia katika tamaa.
Hebu sema user anauliza kwa $ 400.11.
Nini njia kufikiri ni jinsi gani wengi robo unahitaji bila ya kuwa na
kuhesabu kila mmoja?
>> Mara baada ya kufikiri ni jinsi gani robo wengi unaweza kutumia kufanya $ 400.11, ni kiasi gani
kubadili mabaki?
Labda mchanganyiko hapa kati ya modulo na mgawanyiko atakuja katika
Handy kukupa baridi, kifahari mkabala na tatizo tamaa.
Lakini kumbuka kwamba utawala utawala bado inatumika.
Daima kutumia sarafu kubwa iwezekanavyo.
>> Mara baada ya umefanya kosa mahesabu ya jinsi sarafu nyingi kutumia, hatua ya mwisho
ni magazeti nje ya idadi ya sarafu kwamba mahesabu.
Hadi sasa, tumekuwa kutumia printf kazi tu kwa ajili ya masharti.
Lakini wakati unataka magazeti nje Katika, au tu ya aina yoyote data kwamba kuhifadhiwa
katika variable, una zinaonyesha kwamba kwa kutumia placeholder.
>> Hapa nimekuwa ni pamoja na baadhi tu tips juu ya jinsi ya magazeti nje maadili.
Kama una integer, ungekuwa kuandika kamba yako kwa kutumia% d kama
placeholder.
Baada ya kufunga quotation alama, kuingia comma.
Na kisha kuweka katika integer kwamba mapenzi kuchukua nafasi ya% d wakati kuchapishwa.
>> Kwa hiyo baada ya kuonyesha idadi ya sarafu kutumika, wewe ni
kumaliza na tamaa.
Kuhakikisha na kuangalia matukio yote kona, tidy style yako kidogo, na wewe ni
kuweka wote kuwasilisha.
Mwishoni mwa kuweka tatizo hili, utasikia kuwa zaidi ya ukoo na CS50
appliance, terminal, na kitanzi miundo na vigezo katika C.
>> Wewe vizuri katika njia yako.
kujifunza Curve inaweza kuonekana mgumu.
Hivyo kuchukua ni hatua kwa hatua.
Kuhakikisha kuandika pseudo-code kabla ya kupiga mbizi pia kina
ndani ya usio wa kawaida syntax.
>> Kufanya kufanya orodha, na kuvunja kazi katika ndogo, zaidi
manageable kazi.
Kuchunguza yote ya rasilimali CS50.
Mbali na hotuba, rewatch hii kutembea kwa njia ya.
>> Makini sana sehemu.
Angalia kaptula.
Kusoma maswali wanafunzi wako ' juu ya Jadili, na baada ya yako mwenyewe.
>> Bora wa bahati na p-kuweka.
Na shukrani kwa ajili ya kuangalia.
Hii ilikuwa ni tamaa.
>> [Music kucheza]