>> [MUSIC nagpe-play]
>> Rob BOWDEN: Hi.
Ako Rob.
At sabihin makakuha ng sakim.
>> Kaya ang unang bagay na kailangan naming gawin ay tanungin ang user kung paano mismo
gaanong pagbabago ay inutang.
Kaya dito, makikita natin na mayroon kami isang do / habang loop.
At kami ay pagtatakda ng dolyar katumbas ng GetFloat.
Ano ang GetFloat?
Ito ay isa sa mga function sa CS50 library na hindi nakakaabala isang
lumutang mula sa user.
Tandaan, upang magamit na function, kailangan naming i-hash isama
CS50.h sa tuktok.
>> Kaya sa sandaling mayroon kaming halaga na mula sa gumagamit, kailangan din naming makatiyak na
ito ay isang wastong halaga.
Hindi namin maaaring may utang negatibong pera.
At kaya iyon ang layunin ng ito do / habang loop.
Patuloy naming looping habang dolyar Mas mababa sa zero.
At isang do / habang loop ay ang tamang bagay gamitin dito, dahil kailangan namin upang hilingin sa
gumagamit ng hindi bababa sa isang beses para sa kung paano magkano ang pera ay inutang.
>> Kaya sa sandaling mayroon kaming na bilang ng mga dolyar, makikita natin dito mayroon kaming int cents
ay katumbas ng pag-ikot dolyar beses CENTS_PER_DOLLAR.
Sa tuktok, nakita namin na CENTS_PER_DOLLAR ay
sa matinong paraan tinukoy bilang 100.
Kaya kung ano ang linyang ito ay ginagawa?
>> Well, kung matandaan mo, lumulutang na tuldok mga halaga ay hindi masyadong tumpak.
Hindi tulad ng integer, hindi namin maaaring kumatawan mga halaga ng mga lumulutang na tuldok eksakto.
Mayroong palaging isang uri ng imprecision.
Kaya mas gusto namin upang gumana sa lamang integer sa buong ang problemang ito.
At dito, kung ipinasok ng gumagamit ang $ 3.42, naka-convert namin na sa 342 sentimo at
rounding, lamang mapupuksa ang alinman sa na imprecision.
>> Kaya sa sandaling mayroon kaming ang bilang ng mga cents sa isang integer, maaari naming magpatuloy sa
nalalabing bahagi ng programa.
Nakakakita kami dito na aming deklarasyon integer barya na lamang kami upang gamitin ang
upang masubaybayan ang kabuuang bilang ng mga barya.
Dito, mayroon kaming ang aming unang habang loop.
>> Nakakakita kami habang cents ay mas malaki kaysa sa o katumbas ng isang-kapat, na sa itaas, ay hash
tinukoy bilang 25, habang na ay totoo, kami gusto dagdagan ang aming bilang ng mga barya
at pagbabawas sentimo sa pamamagitan ng isang-kapat.
Tandaan na ang syntax na ito ay katumbas ng cents
ay katumbas ng cents minus quarter.
Yaong ay pareho.
>> Kaya kung ano ito habang loop sa paggawa ay?
Ang ideya dito ay na, kung alam ko $ 3.42 ay inutang, ang maaari kong patuloy na nagbibigay sa
quarters hanggang hindi ko mabibigyan ng quarters ng anumang higit pa.
Hindi ko mabibigyan ng quarters ng anumang higit pa, sa sandaling na ibinigay ko $ 3.25.
>> Kaya pagkatapos, sa sandaling iyon ang kaso, kami ay masira out ng ito habang loop.
Cents ay pakaliwa sa 17 cents.
At patuloy naming pababa sa susunod habang loop kung saan kami sabihin, habang cents
ay mas malaki kaysa sa o katumbas ng magagamit ng lahat.
>> At ngayon ginagawa namin ang parehong eksaktong bagay ginawa namin sa quarter kaso,
maliban sa dimes.
Kaya sa $ 0.17, na aming loop hanggang sa aming makakaya hindi na bigyan ng barya, na kung saan ay
eksaktong isang beses.
At pagkatapos ay makikita iwanang namin na may 7 cents.
>> Pagkatapos ay ipagpapatuloy sa naming nickels, na ay loop hanggang hindi ka namin mabibigyan
anumang higit pang mga nickels, na mag-iwan sa amin ng dalawang sentimos.
At pagkatapos, down sa ibaba, mayroon kami pennies, na loop at magpo
sa wakas ay mag-iwan sa amin na may mga zero cents.
Pagkatapos sa dulo, kailangan lang namin sa i-print ang aming mga bilang ng mga barya.
>> Kaya ang program na ito ay ganap na ganap tama.
Ngunit talaga namin maaaring gawin ang isang bit mas mahusay.
Ngayon kung sinasabi ko na mayroon kang dapat ako $ 10,000, hindi ka dapat kailangan upang pumunta narito ang isa
quarter, 2/4, tatlong-kapat.
Dapat mong agad na malaman na May utang na loob ko sa inyo 40,000 quarters.
>> Ngayon tingnan natin ang isang programa hayaan na humahawak ito ng kaunti mas mahusay.
Sa bersyon na ito ng mga bagay, kailangan pa rin namin upang hilingin sa gumagamit para sa halaga ng
palitan na gusto nila sa eksakto sa parehong paraan ng ginawa namin bago.
Kailangan namin upang isalin ito nang eksakto ang paraan ng ginawa namin bago.
At mayroon pa rin namin ang aming mga barya integer ipinahayag eksaktong katulad ng dati.
>> Kaya narito ang kung saan bagay makakuha ng isang bit naiiba.
Kami ay kasalukuyang barya plus Kapantay cents na hinati sa pamamagitan ng isang-kapat
kung saan quarter ay 25.
Ano ito ay sinasabi ay, tumagal ng maraming quarters bilang maaaring pumunta sa sentimo at magdagdag
na sa barya.
>> Kaya kung cents ay 142, 142 na hinati sa pamamagitan ng 25 ay nagbibigay sa amin 5.
Tandaan na integer division Awtomatikong truncates.
Kaya ginagawa namin barya plus ay katumbas ng 5.
>> Agad-agad matapos na ito, namin sinasabi na cents katumbas cents mod quarter.
Tandaan na ang mod operator ay nagbibigay sa amin ang natitira pagkatapos division.
Kaya 142 mod quarter, na ay magbibigay sa ay 142 minus 125, na kung saan ay 17.
Iyan ang natitira pagkatapos paggawa 142 na hinati sa pamamagitan ng 25.
>> Kaya ngayon cents ay katumbas ng 17.
At gawin namin ang parehong eksaktong bagay para sa dimes.
17 na hinati sa 10 ay magbibigay sa amin 1.
At idagdag namin na i-barya.
At pagkatapos ay i-update namin cents upang maging 17 mod 10, na kung saan ay 7.
>> At pagkatapos ay ang parehong para sa nickels.
7 na hinati sa 5 ay 1.
Magdagdag ng na sa barya.
At pagkatapos ay 7 mod 5 ay 2.
At iyon ang aming cents.
>> At pagkatapos ay, para sa pennies, walang tunay point sa naghahati o Modding, dahil,
kung kami ay $ 0.2 natira, kaya namin agad na idagdag lamang na sa
ang aming mga bilang ng mga barya.
At sa wakas, kailangan naming i-print ang aming bilang ng mga barya at, opsyonal,
bumalik 0 sa dulo ng aming programa upang maging tanda ng lahat ng bagay nagtrabaho.
>> Ang pangalan ko ay Rob.
At ito ay sakim.
>> [MUSIC nagpe-play]