Rob BOWDEN: Hi, mimi nina Rob Bowden, na hebu majadiliano juu ya quiz0. Hivyo, swali la kwanza. Hili ni swali ambapo unahitajika kwa kificho simu 127 katika balbu binary. Kama alitaka, unaweza kufanya uongofu mara kwa mara kutoka bi-- au, kutoka alisema kwa binary. Lakini kwamba pengine ni kwenda kuchukua muda mwingi. I mean, unaweza kufikiri kwamba, OK, 1 ni huko, 2 ni katika huko, 4 ni katika huko, 8 ni katika huko. Njia rahisi, 127 ni 128 minus moja. Kwamba leftmost mwanga bulb ni 128-bit. Hivyo 127 ni kweli tu wote nyingine balbu mwanga, tangu kwamba ni leftmost mwanga bulb minus 1. Hiyo ni kwa swali hilo. Swali moja. Hivyo, pamoja na 3 bits unaweza kuwakilisha maadili ya 8 tofauti. Kwa nini, basi, ni 7 kubwa zisizo hasi integer alisema unaweza kuwakilisha? Naam, kama tunaweza tu kuwakilisha maadili ya 8 tofauti, basi nini tunakwenda kuwa anayewakilisha ni 0 kupitia 7. 0 inachukua hadi moja ya maadili. Swali mbili. Na bits n, jinsi wengi tofauti maadili unaweza kuwakilisha? Hivyo, pamoja na bits n, una 2 maadili inawezekana kwa kila kidogo. Hivyo tuna 2 iwezekanavyo maadili kwa kidogo kwanza, maadili ya 2 iwezekanavyo kwa ajili ya pili, 2 inawezekana kwa tatu. Na hivyo hiyo ni mara 2 2 mara 2, na hatimaye jibu ni 2 kwa n. Swali tatu. Nini 0x50 katika binary? Hivyo kukumbuka kwamba hexadecimal ina sana uongofu moja kwa moja kwa binary. Hivyo hapa, sisi tu haja ya kuangalia 5 na 0 kujitegemea. Basi nini 5 katika binary? 0101, kwamba ni kidogo 1 na 4 kidogo. Nini 0 katika binary? Si gumu. 0000. Hivyo tu kuziweka pamoja, na hiyo ni idadi kamili katika binary. 01,010,000. Na kama alitaka unaweza kuchukua mbali kwamba sifuri leftmost. Ni lisilo na maana. Hivyo basi matumizi mengine, kile ni 0x50 katika alisema? Kama alitaka, wewe could-- kama wewe ni vizuri zaidi kwa binary, unaweza kuchukua jibu kwamba binary na kubadilisha kwamba katika alisema. Au tunaweza kumbuka tu kwamba hexadesimoli. Hivyo kwamba 0 ni mahali pa 0-th, na 5 ni katika 16 kwa nafasi ya kwanza. Hivyo hapa, tuna 5 mara 16 kwa kwanza, pamoja 0 mara 16 na sifuri, ni 80. Na kama wewe inaonekana katika cheo swali, ilikuwa CS 80, ambayo ilikuwa ni aina ya ladha kwa jibu la tatizo hili. Swali tano. Sisi tuna hii script Scratch, ambayo ni kurudia mara 4 siagi jelly. Hivyo ni jinsi gani sisi sasa kificho kwamba katika C? Naam, tuna here-- sehemu katika ujasiri ni sehemu tu alikuwa na kutekeleza. Hivyo tuna kitanzi 4 hiyo looping 4 mara kwa mara, printf-ing siagi ya karanga jelly, na line mpya kama tatizo anauliza kwa. Swali sita, tatizo jingine Scratch. Tunaona kwamba sisi ni katika milele kitanzi. Sisi ni kusema i kutofautiana na kisha incrementing i na 1. Sasa tunataka kufanya kwamba katika C. Kuna njia nyingi sisi wangefanya hii. Hapa sisi kilichotokea na kanuni milele kitanzi kama wakati (wa kweli). Hivyo sisi kutangaza variable i, tu kama tulikuwa na kutofautiana i katika Scratch. Kutangaza i variable, na hata milele wakati (wa kweli), tunasema kutofautiana i. Hivyo printf% i-- au unaweza wameweza kutumika% d. Sisi tunasema kwamba kutofautiana, na basi nyongeza hiyo, i ++. Swali saba. Sasa tunataka kufanya kitu sawa sana kwa Mario dot c kutokana na tatizo kuweka moja. Tunataka magazeti hashtags haya, tunataka magazeti tano na tatu Mstatili wa hashes haya. Hivyo ni jinsi gani sisi kwenda kufanya hivyo? Naam, sisi kukupa yote rundo la kificho, na wewe tu kujaza katika kazi ya magazeti gridi ya taifa. Basi ni nini PrintGrid kuangalia kama? Vizuri wewe ni zamani upana na urefu. Hivyo tuna nje 4 kitanzi, kwamba looping zaidi ya yote ya safu hii gridi ya taifa kwamba tunataka magazeti nje. Basi tuna baina ya Furushi 4 kitanzi, hiyo ni uchapishaji juu ya kila safu. Hivyo kwa kila mstari, sisi magazeti kwa kila safu, hash moja. Kisha mwisho wa safu sisi magazeti single mpya line kwenda kwa mstari inayofuata. Na kwamba ni kwa ajili ya gridi ya taifa zima. Swali nane. kazi kama PrintGrid alisema kuwa na athari upande, lakini si kurudi thamani. Kueleza tofauti. Hivyo hii hutegemea you kukumbuka nini athari upande ni. Vizuri, kurudi value-- tunajua PrintGrid haina kuwa na thamani ya kurudi, tangu haki hapa inasema utupu. Hivyo chochote kwamba anarudi utupu haina kweli kurudi kitu chochote. Hivyo ni nini athari upande? Vizuri, athari upande ni chochote kwamba aina ya likiendelea baada ya mwisho ya kazi kwamba ilikuwa si tu akarudi, na ilikuwa si tu kutoka pembejeo. Hivyo, kwa mfano, tupate kubadili variable kimataifa. Hiyo itakuwa athari upande. Katika kesi hii, a upande athari muhimu sana ni uchapishaji kwa screen. Hivyo kwamba ni athari upande kwamba PrintGrid ina. Sisi magazeti hayo kwa screen. Na unaweza kufikiria kwamba kama athari upande, tangu kwamba ni kitu ambacho likiendelea baada ya kazi hii ya mwisho. Hiyo ni kitu nje ya wigo ya kazi hii kwamba hatimaye ni kuwa iliyopita, yaliyomo ya screen. Swali tisa. Fikiria mpango chini, ambayo namba line wamekuwa aliongeza kwa ajili ya majadiliano. Hivyo katika mpango huu sisi ni tu wito GetString, hifadhi hiyo katika hii s kutofautiana, na kisha uchapishaji kwamba kutofautiana s. OK. Hivyo kueleza kwa nini mstari mmoja ni sasa. #include CS50 dot h. Kwa nini tunahitaji kwa #include CS50 dot h? Vizuri sisi ni wito GetString kazi, na GetString inaelezwa katika maktaba CS50. Hivyo kama hatukuwa na #include CS50 dot h, tunataka kupata kwamba tamko thabiti ya GetString kazi makosa kutoka compiler. Hivyo tunahitaji ni pamoja library-- tunahitaji ni pamoja na header faili, au mwingine compiler si kutambua kwamba GetString lipo. Kueleza kwa nini line mbili ni sasa. Hivyo kiwango io dot h. Ni sawa kama tatizo uliopita, isipokuwa badala ya kushughulika na GetString, sisi ni kuzungumza juu ya printf. Hivyo kama sisi hakusema tunahitaji ni pamoja na kiwango io dot h, kisha sisi bila kuwa na uwezo kutumia printf kazi, kwa sababu compiler bila kujua kuhusu hilo. Why-- nini umuhimu ya utupu katika mstari nne? Hivyo hapa tuna int kuu (utupu). Hiyo tu kusema kwamba sisi hawapati line yoyote ya amri hoja kwa kuu. Kukumbuka kwamba tunaweza kusema int kuu int argc kamba argv mabano. Hivyo hapa sisi tu kusema utupu kusema sisi ni kupuuza hoja mstari amri. Kueleza, kwa heshima na kumbukumbu, hasa nini GetString katika mstari anarudi sita. GetString ni kurudi kuzuia ya kumbukumbu, safu ya wahusika. Ni kweli kurudi pointer tabia ya kwanza. Kumbuka kwamba kamba ni nyota Char. Hivyo s ni pointer kwanza tabia katika chochote kamba ni kwamba mtumiaji aliingia katika keyboard. Na kwamba kumbukumbu hutokea kwa kuwa malloced, hivyo kwamba kumbukumbu ni katika lundo. Swali 13. Fikiria mpango hapa chini. Hivyo mpango huu wote ni kufanya ni printf-ing 1 kugawanywa na 10. Hivyo wakati ulioandaliwa na kunyongwa, mpango huu matokeo 0.0, ingawa 1 kugawanywa na 10 ni 0.1. Hivyo ni kwa nini 0.0? Naam, hii ni kwa sababu ya integer mgawanyiko. Hivyo 1 ni integer, 10 ni integer. Hivyo 1 kugawanywa na 10, kila kitu ni kutibiwa kama integers, na katika C, wakati sisi kufanya integer mgawanyiko, sisi butu hatua yoyote alisema. Hivyo 1 kugawanywa na 10 ni 0, na kisha sisi ni kujaribu magazeti kwamba kama kuelea, hivyo sifuri kuchapishwa kama kuelea ni 0.0. Na kwamba ni kwa nini sisi kupata 0.0. Fikiria mpango hapa chini. Sasa sisi ni uchapishaji 0.1. Hivyo hakuna mgawanyo integer, tuko tu uchapishaji 0.1, lakini sisi ni uchapishaji ni 28 maeneo alisema. Na sisi kupata hii 0.1000, rundo zima ya zeros, 5 5 5, blah blah blah. Hivyo swali hapa ni kwa nini anafanya hivyo magazeti kwamba, badala ya hasa 0.1? Hivyo sababu hapa ni sasa floating uhakika kutokuwa sahihi. Kumbuka kwamba kuelea ni bits 32 tu. Hivyo tunaweza tu ya kuwakilisha idadi finite ya yaliyo maadili uhakika na wale 32 bits. Vizuri kuna hatimaye kubwa wengi yaliyo maadili uhakika, na kuna kubwa wengi yaliyo maadili kumweka katika kati ya 0 na 1, na sisi ni wazi na uwezo wa kuwakilisha maadili hata zaidi. Hivyo tuna kutoa kafara kwa kuwa na uwezo wa kuwakilisha maadili zaidi. Hivyo thamani kama 0.1, inaonekana hatuwezi kuwakilisha kwamba hasa. Hivyo badala ya 0.1 anayewakilisha sisi kufanya bora tunaweza kuwakilisha hii 0.100000 5 5 5. Na kwamba ni pretty karibu, lakini kwa mengi ya maombi wewe kuwa na wasiwasi kuhusu floating uhakika kutokuwa sahihi, kwa sababu sisi tu hawezi kuwakilisha pointi zote yaliyo sawa. Swali 15. Fikiria kificho chini. Tuko tu kuchapisha 1 plus 1. Hivyo hakuna hila hapa. 1 plus 1 kutathmini kwa 2, na kisha sisi ni uchapishaji kwamba. Hii tu Prints 2. Swali 16. Sasa sisi ni uchapishaji tabia 1 plus tabia 1. Hivyo kwa nini anafanya hivyo si magazeti kitu kimoja? Vizuri tabia 1 plus tabia 1, tabia ya 1 ina thamani ASCII 49. Hivyo hii ni kweli akisema 49 pamoja 49, na hatimaye hii ni kwenda magazeti 98. Hivyo hii haina magazeti 2. Swali 17. Kukamilisha utekelezaji ya isiyo ya kawaida chini katika namna kwamba kazi anarudi kweli kama n ni isiyo ya kawaida na uongo kama n ni hata. Hii ni lengo kubwa kwa operator Mod. Hivyo sisi kuchukua hoja yetu n, kama n Mod 2 sawa na 1, vizuri hiyo ina maana kwamba n kugawanywa na 2 alikuwa salio. Kama n kugawanywa na 2 alikuwa salio, kwamba ina maana kwamba ni n isiyo ya kawaida, hivyo sisi kurudi kweli. Mwingine sisi kurudi uongo. Unaweza pia wangefanya n Mod 2 sawa sifuri, kurudi uongo, mwingine kurudi kweli. Fikiria kazi ya kujirudia hapa chini. Hivyo kama n ni chini ya au sawa na 1, kurudi 1, mwingine kurudi n mara f ya n minus 1. Hivyo ni kazi huu nini? Naam, hii ni tu factorial kazi. Hii ni nicely kuwakilishwa kama n factorial. Hivyo swali 19 sasa, tunataka kuchukua kazi hii ya kujirudia. Tunataka kufanya hivyo iterative. Hivyo ni jinsi gani sisi kufanya hivyo? Vizuri kwa wafanyakazi ufumbuzi, na tena kuna njia nyingi unaweza wamefanya kwamba, sisi kuanza na bidhaa hii int sawa 1. Na katika hii kwa kitanzi, tunakwenda kuwa kuzidisha bidhaa na hatimaye kuishia na factorial kamili. Hivyo kwa int i sawa 2, i ni chini ya au sawa na n, i ++. Unaweza kuwa anashangaa kwa nini i sawa 2. Vizuri, kumbuka kwamba hapa tuna kuhakikisha kesi yetu ya msingi ni sahihi. Hivyo kama n ni chini ya au sawa 1, tuko tu kurudi 1. Hivyo zaidi ya hapa, sisi kuanza saa i sawa 2. Vizuri kama i walikuwa 1, basi the-- au kama n walikuwa 1, basi kwa kitanzi bila nitafanya wakati wote. Na hivyo sisi ingekuwa tu bidhaa kurudi, ambayo ni 1. Vile vile, kama n walikuwa chochote chini ya 1-- ikiwa ni 0, hasi 1, whatever-- tunatarajia bado kuwa kurudi 1, ambayo ni nini hasa kujirudia toleo ni kufanya. Sasa, kama n ni mkubwa ya 1, kisha tunakwenda kufanya angalau moja iteration ya kitanzi hii. Basi hebu kusema n ni 5, basi tuko kwenda kufanya mara bidhaa ni sawa na 2. Hivyo sasa bidhaa ni 2. Sasa sisi ni kwenda kufanya mara bidhaa ni sawa na 3. Sasa ni 6. Mara bidhaa ni sawa na 4, sasa ni 24. Mara bidhaa ni sawa na 5, sasa ni 120. Hivyo basi hatimaye, sisi ni kurudi 120, ambayo ni kwa usahihi 5 factorial. Swali 20. Hii ni moja ambapo una kujaza katika meza hii na algorithm wowote, chochote ambacho tumeona, kwamba inafaa hizi kukimbia algorithmic mara nyakati hizi asymptotic kukimbia. Hivyo ni nini algorithm kwamba ni omega ya 1, lakini O kubwa ya n? Hivyo kuna inaweza kuwa kubwa majibu mengi hapa. moja kwamba tumeona pengine mara nyingi ni tu search linear. Hivyo katika kesi bora mazingira, bidhaa tuko kuangalia kwa ni katika mwanzo wa orodha na hivyo katika omega ya 1 hatua, Jambo la kwanza sisi kuangalia, sisi tu mara moja kurudi kwamba sisi kupatikana item. Katika mazingira ya kesi mbaya, bidhaa ni mwishoni, au bidhaa si katika orodha wakati wote. Hivyo tuna kutafuta orodha nzima, kila n vipengele, na kwamba ni kwa nini ni o ya n. Hivyo sasa ni kitu ambacho ni wote omega ya n logi n, na O kubwa ya n logi n. Vizuri jambo muhimu zaidi tumeona hapa ni kuunganisha aina. Hivyo kuunganisha aina, kumbuka, ni hatimaye Theta ya n logi n, ambapo theta inaelezwa kama wote wawili omega na kubwa O ni sawa. Wote n logi n. Nini kitu ambacho ni omega ya n, na O ya n mraba? Naam, tena kuna Inawezekana majibu nyingi. Hapa sisi kutokea kwa kusema Bubble aina. Insertion aina pia kazi hapa. Kumbuka kwamba aina Bubble ina kuwa optimization ambapo, kama wewe ni uwezo wa kupata kupitia orodha nzima bila wanaohitaji kufanya swaps yoyote, basi, vizuri, tunaweza mara moja kurudi kwamba orodha alikuwa sorted kwa kuanzia. Hivyo katika bora kesi, ni tu omega ya n. Kama siyo tu nicely yamepangwa orodha kuanza na, basi tuna O ya n mraba swaps. Na hatimaye, tuna uteuzi aina kwa n mraba, wote omega na kubwa O. Swali 21. Nini integer kufurika? Vizuri tena, sawa na ya awali, sisi tu bits finitely wengi kuwakilisha integer, hivyo labda 32 bits. Hebu kusema tuna integer saini. Kisha hatimaye juu idadi chanya tunaweza kuwakilisha ni 2-31 minus 1. Hivyo kile kinachotokea kama sisi kujaribu basi nyongeza kwamba integer? Naam, sisi ni kwenda 2-31 bala 1, njia yote chini ya 2 hasi 31. Hivyo hii kufurika integer ni wakati wewe kushika incrementing, na hatimaye huwezi kupata yoyote ya juu na ni tu Wraps njia yote nyuma karibu na thamani hasi. Nini kuhusu kufurika buffer? Hivyo buffer overflow-- kumbuka kile buffer ni. Ni tu chunk ya kumbukumbu. Kitu kama safu ni buffer. Hivyo kufurika buffer ni wakati wewe kujaribu kupata kumbukumbu zaidi ya mwisho wa safu. Hivyo kama una safu ya ukubwa 5 na wewe kujaribu kupata safu bracket 5 au mabano 6 au mabano 7, au kitu chochote zaidi mwisho, au hata kitu chochote below-- safu bracket hasi 1-- wale wote ni kufurika buffer. Wewe ni kugusa kumbukumbu katika njia mbaya. Swali 23. Hivyo katika hii moja unahitaji kutekeleza strlen. Na sisi kukuambia kwamba unaweza kudhani s itakuwa si null, hivyo hawana kufanya kuangalia yoyote kwa null. Na kuna njia nyingi unaweza kuwa amefanya. Hapa sisi tu kuchukua moja kwa moja. Sisi kuanza na kukabiliana, n. n ni kuhesabu jinsi wahusika wengi kuna. Hivyo sisi kuanza saa 0, na kisha sisi iterate juu ya orodha nzima. Ni s mabano 0 sawa na null Terminator tabia? Kumbuka sisi ni kuangalia kwa null Terminator tabia kuamua jinsi ya muda mrefu kamba yetu ni. Kwamba ni kwenda kusitisha yoyote husika kamba. Hivyo ni s mabano 0 sawa kwa null Terminator? Kama siyo, basi tunakwenda kuangalia s mabano 1, s mabano 2. Sisi kuendelea kwenda mpaka sisi kupata null Terminator. Mara tumekuwa kupatikana, basi n ina urefu wa jumla ya kamba, na tunaweza tu kurudi kwamba. Swali 24. Hivyo hii ni moja ambapo kufanya biashara mbali. Hivyo jambo moja ni nzuri katika moja njia, lakini katika njia ni nini mbaya? Hivyo hapa, kuunganisha aina inaelekea kuwa kasi zaidi kuliko Bubble aina. Baada ya kusema that-- vizuri, kuna ni majibu nyingi hapa. Lakini moja kubwa ni kwamba aina Bubble ni omega ya n kwa orodha Iliyopangwa. Kumbuka kwamba meza sisi tu kuona mapema. Hivyo Bubble aina omega ya n, bora kesi ni ni uwezo wa tu kwenda juu ya orodha mara moja, kuamua hey jambo hili ni tayari yamepangwa, na kurudi. Kuunganisha aina, bila kujali kufanya, ni omega ya n logi n. Hivyo kwa orodha Iliyopangwa, Bubble aina kinaendelea kuwa kasi zaidi. Sasa nini kuhusu wanaohusishwa orodha? Hivyo orodha wanaohusishwa inaweza kukua na kuogopa fit mambo mengi kama inahitajika. Baada ya kusema hivyo that-- kawaida kulinganisha moja kwa moja ni kwenda kuwa na uhusiano wa karibu orodha na safu. Hivyo hata kama arrays unaweza urahisi kukua na kuogopa fit mambo kama wengi kama inahitajika, wanaohusishwa orodha ikilinganishwa na array-- An safu ina upatikanaji random. Tunaweza index ndani yoyote kipengele maalum ya safu. Hivyo kwa orodha wanaohusishwa, hatuwezi tu kwenda kipengele tano, tuna traverse tangu mwanzo mpaka sisi kupata kipengele tano. Na kwamba kinaendelea kuzuia sisi kutoka kufanya kitu kama tafuta binary. Akizungumza ya utafutaji binary, binary tafuta huelekea kuwa kasi zaidi kuliko search linear. Baada ya kusema that-- hivyo, jambo moja iwezekanavyo ni kwamba huwezi kufanya binary kutafuta kwenye orodha wanaohusishwa, unaweza tu kufanya hivyo kwa arrays. Lakini pengine ni muhimu zaidi, huwezi kufanya search binary juu ya safu ambayo si vyema. Upfront unaweza haja ya kutatua safu, na kisha tu unaweza kufanya search binary. Hivyo kama kitu yako ni si Iliyopangwa kwa kuanzia, basi tafuta linear inaweza kuwa kwa kasi zaidi. Swali 27. Hivyo kufikiria mpango chini, ambayo itakuwa katika slide ijayo. Na hii ni moja ambapo tuko atataka wazi wazi hali maadili kwa vigezo mbalimbali. Hivyo hebu tuangalie kwamba. Hivyo mstari mmoja. Tuna int x ni sawa na 1. Hiyo ni jambo tu kwamba kilichotokea. Hivyo katika mstari mmoja, tunaona katika yetu meza, kwamba y, a, b, na TMP ni wote sioni. Hivyo ni nini x? Vizuri sisi tu kuweka sawa na 1. Na kisha mstari mbili, vizuri, tunaona kwamba y ni kuweka 2, na meza tayari kujazwa katika kwa ajili yetu. Hivyo x ni 1 na y ni 2. Sasa, line tatu, sisi ni sasa ndani ya wabadilishane kazi. Nini sisi kupita wabadilishane? Sisi kupita ampersand x kwa a, na ampersand y kwa b. Ambapo tatizo mapema alisema kuwa pepe ya x ni 0x10, na anwani ya y ni 0x14. Hivyo na b ni sawa na 0x10 na 0x14, mtawalia. Sasa katika mstari tatu, ni x na y? Vizuri, hakuna kitu imebadilika kuhusu x na y katika hatua hii. Ingawa wao ni ndani ya stack frame kuu, bado wana sawa maadili walivyofanya kabla. Sisi si iliyopita kumbukumbu yoyote. Hivyo x ni 1, y ni 2. Wote haki. Hivyo sasa sisi alisema int TMP sawa na nyota. Hivyo katika mstari nne, kila kitu ni sawa isipokuwa kwa TMP. Sisi si iliyopita maadili yoyote chochote isipokuwa kwa TMP. Sisi ni kuweka TMP sawa na nyota. Nyota a ni nini? Naam, pointi kwa x, Hivyo nyota ni kwenda sawa x, ambayo ni 1. Hivyo kila kitu ni kunakiliwa chini, na TMP ni kuweka 1. Sasa line ijayo. Star a sawa nyota b. Hivyo kwa line five-- vizuri tena, kila kitu ni sawa isipokuwa chochote nyota a ni. Nyota a ni nini? Naam, sisi tu alisema nyota a ni x. Hivyo sisi ni kubadilisha x kwa nyota sawa b. Nyota b ni nini? y. pointi b y. Hivyo nyota b ni y. Hivyo sisi ni kuweka x sawa na y, na kila kitu kingine ni sawa. Hivyo tunaona katika mstari unaofuata kuwa x ni sasa 2, na wengine ni tu kunakiliwa chini. Sasa katika mstari wa pili, nyota b sawa TMP. Naam, sisi tu alisema nyota b ni y, hivyo sisi ni kuweka y sawa na TMP. Kila kitu kingine ni sawa, hivyo kila kitu anapata kunakiliwa chini. Sisi ni kuweka y sawa na TMP, ambayo ni moja, na kila kitu kingine ni sawa. Sasa hatimaye, line saba. Tuko nyuma katika kazi kubwa. Sisi ni baada ya wabadilishane ni kumaliza. Tumepoteza, b, na TMP, lakini hatimaye sisi si kubadilisha maadili yoyote chochote katika hatua hii, sisi tu nakala x na y chini. Na tunaona kwamba x na y ni sasa 2 na 1 badala ya 1 na 2. wabadilishane amefanikiwa kunyongwa. Swali 28. Tuseme kwamba wewe kukutana ujumbe wa makosa chini wakati wa masaa ya ofisi mwaka ujao kama CA au TF. Kushauri jinsi ya kurekebisha kila mmoja wa makosa hayo. Kumbukumbu hivyo kisichojulikana kwa GetString. Kwa nini huenda unaweza kuona hili? Naam, kama mwanafunzi ni kutumia GetString katika kanuni zao, wao vizuri hash pamoja CS50 dot h kwa pamoja maktaba CS50. Vizuri, je, wao haja ya kurekebisha kosa hili? Wanahitaji kufanya dash lcs50 katika mstari amri wakati wao ni kuandaa. Hivyo kama hawana kupita Clang dash lcs50, wao ni si kwenda kuwa halisi kificho kwamba zana GetString. Swali 29. Inamuunga kutangaza kazi maktaba strlen. Naam hii sasa, wana si amefanya hash sahihi ni pamoja. Katika kesi hii, header faili wanahitaji ni pamoja na ni kamba dot h, na ikiwa ni pamoja na kamba dot h, sasa student-- sasa compiler ina kupata maazimio ya strlen, na anajua kwamba kanuni yako ni kutumia strlen usahihi. Swali 30. Zaidi ya asilimia wongofu kuliko data hoja. Hivyo ni nini hii? Vizuri kukumbuka kwamba asilimia hizi signs-- jinsi wao ni muhimu kwa printf. Hivyo katika printf tupate percent-- tupate magazeti kitu kama asilimia i backslash n. Au tupate magazeti kama asilimia i, nafasi, asilimia i, nafasi, asilimia i. Hivyo kwa kila ya wale ishara asilimia, tunahitaji kupita variable mwishoni mwa printf. Hivyo kama sisi kusema asilimia printf Paren i Backslash Paren n karibu, vizuri, tunasema kwamba sisi ni kwenda magazeti integer, lakini basi hatuna kupita printf integer kwa kweli magazeti. Asilimia hivyo hapa zaidi wongofu kuliko data hoja? Hiyo ni kusema kwamba tuna rundo zima la percents, na hatuna vigezo vya kutosha kwa kweli kujaza percents hizo. Na kisha dhahiri, kwa swali 31, dhahiri waliopotea 40 ka katika moja ya vitalu. Hivyo hii ni Valgrind makosa. Hii ni kusema kwamba mahali fulani katika kanuni yako, una mgao kwamba ni 40 ka kubwa hivyo malloced 40 ka, na kamwe huru yake. Zaidi uwezekano haja tu kupata baadhi ya uvujaji wa kumbukumbu, na kupata ambapo unahitaji bure hii ya kuzuia wa kumbukumbu. Na kuhoji 32, batili kuandika ukubwa 4. Tena hii ni Valgrind makosa. Hii haina kufanya na kumbukumbu uvujaji sasa. Hii ni, wengi likely-- I mean, ni aina fulani ya haki za kumbukumbu batili. Na uwezekano mkubwa hii ni baadhi ya aina ya buffer kufurika. Ambapo una safu, labda integer safu, na hebu kusema ni ya kawaida 5, na wewe kujaribu kugusa safu bracket 5. Hivyo kama wewe kujaribu kuandika kwamba thamani, si kwamba kipande cha kumbukumbu kwamba kweli kupata, na hivyo wewe ni kwenda kupata kosa hili, akisema batili kuandika ukubwa 4. Valgrind ni kwenda kutambua wewe ni kujaribu kugusa kumbukumbu inappropriately. Na kwamba ni kwa ajili ya quiz0. Mimi nina Rob Bowden, na hii ni CS50.