[Jwe mizik] ZAMYLA Chan: Èske ou ta pito resevwa $ 10 milyon dola kounye a oswa resevwa peni chak jou nan mwa a, kote chak jou ki vini apre, ou resevwa double kantite lajan an nan peni ou resevwa nan jou anvan an? Nan peni, nou pral pwouve poukisa ou ta dwe definitivman pran peni yo. Travay ou se ekri pennies.c-- yon pwogram ki premye mande itilizatè a ki jan pandan plizyè jou gen nan mwa a ak Lè sa a, mande ki jan anpil peni itilizatè a ap resevwa sou premye jou a. Pwogram nan ta dwe Lè sa a, kalkile la kantite lajan ki itilizatè a ap gen akimile nan fen a mwa epi montre li. Nou ka kraze pwogram sa a moute nan yon koup nan travay. Nou pral bezwen rapid pou entrain itilizatè miltip - jou ak mwa, ak peni sou premye jou. Nou bezwen kenbe tras nan konbyen lajan itilizatè a gen epi mete ajou li chak jou sa a, double kantite lajan an nan peni yo ke yo resevwa. E finalman, nou enprime yo final total, an dola. Se pou yo opinyon itilizatè atake an premye. Mwen pral louvri moute apples.c, kout pwogram ki kontra ak entrain yo ak kontribisyon. Nan tèt a isit la, mwen te enkli kèk nan bibliyotèk yo ki mwen bezwen - Bibliyotèk CS50 a ak pou yon estanda ki Mwen / bibliyotèk O. Mwen ekri ak lèt ​​detache yon èd memwa lè l sèvi avèk la printf fonksyon ki soti nan la estanda I / O bibliyotèk la. Men, aktyèl la ki pouse nan itilizatè a k ap pase nan liy nan pwochen ak sa-a Fonksyon GetInt nan bibliyotèk la CS50. GetInt jwenn enfòmasyon nan men itilizatè a ak asire ke D 'a se yon nonb antye ki pè. Se konsa, mwen sere D 'itilizatè a nan nonb antye ki pè mwen, fè soustraksyon 1 soti nan mwen, ak Lè sa a, enprime soti valè nan nouvo si mwen. Apre konpile apples.c lè l sèvi avèk la lòd "fè pòm," Mwen gen yon ègzèkutabl dosye pòm. Kouri ke, mwen pral opinyon 1. Pwogram la di m 'ki Mwen gen 0 pòm kite. Se konsa, ki te travay jan yo espere a. Se konsa, kite a kouri sa a ankò ak opinyon negatif 1. Koulye a, li te gen yon kantite lajan negatif nan pòm pa vrèman fè sans, men pwogram lan aksepte li, paske negatif 1, byen, li se yon nonb antye. Epi, koulye a pwogram lan oswa mons la andedan pwogram nan manje yon negatif pòm, epi kounye a mwen gen negatif 2 pòm. Hm, se konsa sa a, se yon leson - menm si GetInt fonksyon an ak fonksyon ki gen rapò ak, tankou GetFlow oswa GetString jwenn dwa done di ki kalite a, ou gen a asire w ke D 'a fè sans pou pwogram ou an. Nan peni, li pa pral fè jis yon èd memwa pou yon nonb antye ki pè, ou pral bezwen fè asire w ke itilizatè a entrain yon nonb antye relatif ki fè sans yo bay kontèks la. Mwa ka sèlman gen 28, 29, 30, oswa 31 jou. Nou vle kontinyèlman mande yon nonb antye ki pè ki valid. Si yo opinyon yon deyò nonb antye ki pè nan nou an limit akseptab, nou pral pouse yo ankò e ankò, jiskaske ou ba nou yon nonb antye ki pè ki valid. Sonje "repete la jiskaske" bloke nan grafouyen? Ou kapab fè yon édifice menm jan an nan C lè l sèvi avèk yon "pandan y ap" bouk oswa "fè-pandan y ap" bouk. Estrikti a bouk pandan y ap gen yon pwoblèm ki dwe rankontre pou la kò nan bouk la egzekite. Sa a ta dwe gade yon ti kras ki similè yo, paske kondisyon an se jis tankou nan Grafouyen blòk ak ang yo ak ale nan parantèz yo nan "pandan y ap" bouk la. Se konsa, ki kondisyon pral tcheke pou wè si wi ou non nonb antye ki pè a se nan limit ki apwopriye yo. Ou ka pouse nonb antye ki pè GetInt la lè l sèvi avèk ak Lè sa a egzekite "pandan y ap" ou bouk, repete èd memwa a ak enprime enstriksyon, pandan y ap D 'a se pa ki valid. Yon lòt fason asire kòrèk opinyon itilizatè se lè l sèvi avèk yon "fè-pandan y ap" bouk, ki se trè menm jan ak yon bouk Pandan ke. Nan "fè-pandan y ap" bouk ègzekutra kòd la andedan yo menm ki kò yo ak Lè sa a, chèk si kondisyon an satisfè oswa ou pa. Sa a se itil pou jwenn opinyon itilizatè, paske ou konnen ke ou bezwen pouse yo omwen yon fwa. Si kondisyon an pa te rankontre, pwogram lan ap egzekite liy lan apre yo fin ou "fè-pandan y ap" bouk. Si kondisyon an te rankontre menm si, bouk la ap repete A "fè-pandan y ap" bouk pou validation itilizatè D 'ap gade yon bagay tankou sa. Mwen deklare yon n varyab, GetInt, ak Lè sa a, repete jiskaske n se ki valid. Men, pwosesis sa a, mwen eksplike, yo te lè l sèvi avèk ki kalite nonb antye ki pè-done, ki ou pral itilize pou jou yo nan mwa a. Men, nou konnen ki kantite peni ap anpile byen vit, se konsa yo nan lòd yo magazen pi gwo nonb, sèvi ak kalite a done LongLong, men sonje menm bagay la tou prensip nan validation aplike. Awesome, se konsa yon fwa nou gen de valab entrain soti nan itilizatè a - jou nan mwa a ak peni yo sou premye jou a - nou ka deplase sou pwochen an yon pati nan pwogram nan. Premye jou a, itilizatè a kòmanse ak sepandan anpil peni yo espesifye ak kantite lajan nan peni yo ke yo resevwa jou kap vini an se double. Se konsa, li fè sans nan kenbe tras nan de montan sa yo - konbyen lajan itilizatè a gen ak ki jan peni anpil yo pral bay yo. Koulye a, fè yon bagay pou 28 rive 31 jou se repetitif, se konsa kite a sèvi ak yon "pou" bouk répétèr sou jou sa yo nan la mwa, à manm an ak pyès lajan monte chak fwa. "Pou" sentaks bouk gen sa ki annapre yo - yon inisyalizasyon, yon kondisyon, ak yon ajou. Ou "pou" bouk ap inisyalize yon varyab, lè li premye antre nan bouk la. Si kondisyon an te rankontre, kò a nan bouk la pral egzekite. Apre sa, aktyalizasyon a pral egzekite. Si kondisyon an toujou te rankontre, nan bouk ap egzekite epi mete ajou, epi repete, osi lontan ke eta sante ou evalye vre. Isit la nan yon "pou" bouk ki divize yon nonb antye ki pè p pa 2 yon total de 10 fwa. Remake byen ki jan mwen te deklare p la nonb antye ki pè deyò nan mwen "pou" bouk, se konsa ke nan nonb antye ki pè yo ka gen aksè deyò "pou" bouk la. Apre yo fin mwa a pase, li lè di itilizatè a konbyen lajan yo te vinn. Pou chak espèk a, ou bezwen di itilizatè a konbyen dola, pa konbyen peni yo, yo gen. Men, byen lwen tèlman, ou te kenbe tras nan la total ak peni yo lè l sèvi avèk LongLongs, ki se nonb antye. Gen yon peni 100 a $ 1, se konsa sòf si nimewo a nan peni se yon plizyè nan 100, ou pral bezwen reprezante kote desimal. Ototip a double pèmèt ou fè sa. Se konsa, kouman nou konvèti soti nan ki reprezante peni dola? Ann pran yon gade pi.c. Pwogram sa a pran yon big_pi LongLong ak divize li pa 100,000, ak simagri rezilta a nan senk kote desimal. Si nou te vle montre kat desimal kote, lè sa a nou kapab jis ranplase sa a nimewo isit la. Se konsa, kite a sove, konpile PI, ak Lè sa a, wè rezilta a, ki nou atann yo dwe 3,1415 - senk premye chif yo nan PI. Li se pa menm si. Epi pou kisa? Oke, paske big_pi se yon LongLong, ki se yon nonb antye, ki pral pa kenbe tras nan desimal. Modifikasyon nan mwen bezwen fè se nan divizyon an. Mwen bezwen jete nan yon doub isit la anvan divize, paske double pa kapab kenbe tras nan kote desimal. Men, mwen pral ajoute yon liy nouvo isit la pou pi bon fòma. Ak isit la nou genyen li - 3.1416. Ou kapab remake ke li simagri 3.1416 olye pou yo 3,1415 jan yo espere a. Sa a paske li jij pandan la pwosesis divizyon, kòm opoze a jis truncating valè an. Koulye a, ou ta dwe kapab ekri ak lèt ​​detache a final total manm yo kòrèkteman, ki fini pwogram lan. Konpliman. Non mwen se Zamyla. Lè sa a te peni. [Jwe mizik]