1 00:00:00,000 --> 00:00:09,572 2 00:00:09,572 --> 00:00:12,030 ROB BOWDEN: Hei, olen Rob Bowden, ja puhutaanpa quiz0. 3 00:00:12,030 --> 00:00:13,280 4 00:00:13,280 --> 00:00:14,545 >> Joten, ensimmäinen kysymys. 5 00:00:14,545 --> 00:00:17,750 Tämä on kysymys, jossa sinun piti koodata numero 6 00:00:17,750 --> 00:00:21,270 127 binary sipulit. 7 00:00:21,270 --> 00:00:23,550 Jos halusi, voisit tehdä säännöllisesti muuntaminen 8 00:00:23,550 --> 00:00:25,950 alkaen bi-- tai mistä desimaalin binary. 9 00:00:25,950 --> 00:00:28,300 Mutta se menee todennäköisesti ottaa paljon aikaa. 10 00:00:28,300 --> 00:00:31,750 Tarkoitan, voisit selvittää, että OK, 1 on olemassa, 2 on siellä, 11 00:00:31,750 --> 00:00:33,650 4 on siellä, 8 on siellä. 12 00:00:33,650 --> 00:00:39,280 Helpompi tapa, 127 on 128 miinus yksi. 13 00:00:39,280 --> 00:00:42,013 Että vasemmanpuoleisin lamppu on 128-bittinen. 14 00:00:42,013 --> 00:00:43,490 15 00:00:43,490 --> 00:00:47,860 Joten 127 on oikeastaan ​​vain kaikki muut hehkulamput, 16 00:00:47,860 --> 00:00:51,420 koska se on vasemmanpuoleisin hehkulamppu miinus 1. 17 00:00:51,420 --> 00:00:52,800 Se on siinä, että kysymys. 18 00:00:52,800 --> 00:00:54,060 >> Kysymys yksi. 19 00:00:54,060 --> 00:00:56,710 Joten 3 bittiä voit edustavat 8 erillisiä arvoja. 20 00:00:56,710 --> 00:01:01,000 Miksi sitten on 7 suurin ei-negatiivinen desimaalikokonaisluku voit edustavat? 21 00:01:01,000 --> 00:01:04,050 No, jos voimme vain edustavat 8 erillisiä arvoja, 22 00:01:04,050 --> 00:01:07,430 niin mitä me aiomme olla eli on 0 kautta 7. 23 00:01:07,430 --> 00:01:08,745 0 vie yksi arvoista. 24 00:01:08,745 --> 00:01:09,980 25 00:01:09,980 --> 00:01:11,190 >> Kysymys kaksi. 26 00:01:11,190 --> 00:01:14,610 N bittiä, kuinka monta erillistä arvot voivat edustat? 27 00:01:14,610 --> 00:01:19,080 Niin, jossa on n bittiä, sinulla on 2 mahdolliset arvot kullekin vähän. 28 00:01:19,080 --> 00:01:22,300 Joten meillä on 2 mahdolliset arvot ensimmäinen bitti, 2 mahdollista arvoa 29 00:01:22,300 --> 00:01:24,450 Toisen, 2 mahdollista kolmas. 30 00:01:24,450 --> 00:01:28,730 Ja niin se on 2 kertaa 2 kertaa 2, ja lopulta vastaus on 2 n. 31 00:01:28,730 --> 00:01:30,010 32 00:01:30,010 --> 00:01:31,100 >> Kysymys kolme. 33 00:01:31,100 --> 00:01:33,450 Mitä 0x50 binary? 34 00:01:33,450 --> 00:01:39,490 Niin muista, että heksadesimaaliluvuksi on hyvin suoraviivainen muuntaminen binary. 35 00:01:39,490 --> 00:01:43,180 Joten tässä, meidän täytyy vain katsoa 5 ja 0 itsenäisesti. 36 00:01:43,180 --> 00:01:45,110 Joten mitä 5 binary? 37 00:01:45,110 --> 00:01:48,400 0101, joka on 1-bittinen ja 4-bittinen. 38 00:01:48,400 --> 00:01:49,900 Mikä 0 binary? 39 00:01:49,900 --> 00:01:50,520 Ei hankalaa. 40 00:01:50,520 --> 00:01:52,180 0000. 41 00:01:52,180 --> 00:01:54,970 Joten vain laittaa ne yhteen, ja se on täysi määrä binary. 42 00:01:54,970 --> 00:01:57,640 01010000. 43 00:01:57,640 --> 00:02:00,439 Ja jos halusi voisit lentoonlähdön vasemmanpuoleisin nolla. 44 00:02:00,439 --> 00:02:01,105 Se on merkityksetöntä. 45 00:02:01,105 --> 00:02:02,920 46 00:02:02,920 --> 00:02:05,733 >> Niin sitten vaihtoehtoisesti mikä on 0x50 desimaali? 47 00:02:05,733 --> 00:02:08,649 Jos halusi, voit could-- jos olet mieluummin binary, 48 00:02:08,649 --> 00:02:11,340 voisit ottaa, että binary vastaus ja muuntaa sen osaksi desimaalin. 49 00:02:11,340 --> 00:02:13,870 Tai voisimme vain muistaa että heksadesimaaliluvuksi. 50 00:02:13,870 --> 00:02:21,140 Niin että 0 on 0-sijallaan ja 5 on 16 ensimmäiseen paikkaan. 51 00:02:21,140 --> 00:02:25,990 Joten tässä meillä on 5 kertaa 16 Ensimmäinen, plus 0 kertaa 16 nolla, 52 00:02:25,990 --> 00:02:27,520 on 80. 53 00:02:27,520 --> 00:02:29,710 Ja jos katsoit Otsikon kysymykseen, 54 00:02:29,710 --> 00:02:32,920 se oli CS 80, joka oli eräänlainen vihje vastaus tähän ongelmaan. 55 00:02:32,920 --> 00:02:34,460 56 00:02:34,460 --> 00:02:35,420 >> Kysymys viisi. 57 00:02:35,420 --> 00:02:40,320 Meillä on tässä Scratch kirjoitus, joka on toistaen 4 kertaa maapähkinävoita hyytelöä. 58 00:02:40,320 --> 00:02:42,800 Miten siis nyt koodin että C? 59 00:02:42,800 --> 00:02:47,730 No, meillä on here-- osa lihavoitu on vain osa sinun piti toteuttaa. 60 00:02:47,730 --> 00:02:51,950 Joten meillä on 4 silmukan, joka on silmukoiden 4 kertaa, printf-ing maapähkinävoita hyytelö, 61 00:02:51,950 --> 00:02:53,910 uuden linjan ongelma kysyy. 62 00:02:53,910 --> 00:02:55,250 63 00:02:55,250 --> 00:02:57,490 >> Kysymys kuusi, toinen Scratch ongelma. 64 00:02:57,490 --> 00:03:00,210 Näemme, että olemme ikuisesti silmukan. 65 00:03:00,210 --> 00:03:05,000 Sanomme muuttujan i ja sitten kasvattamalla I 1. 66 00:03:05,000 --> 00:03:09,580 Nyt haluamme tehdä sen C. On useita tapoja olisimme voineet tehdä tämän. 67 00:03:09,580 --> 00:03:12,840 Täällä tapahtui koodaamaan ikuisesti silmukan while (true). 68 00:03:12,840 --> 00:03:16,600 Joten me julistamme muuttujan i, vain kuten meillä oli muuttuja i Scratch. 69 00:03:16,600 --> 00:03:21,950 Julistaa muuttuja i, ja ikuisesti while (true), sanomme muuttujaa i. 70 00:03:21,950 --> 00:03:25,260 Joten printf% i-- tai olisit voinut käyttää% d. 71 00:03:25,260 --> 00:03:27,985 Sanomme, että muuttuja, ja sitten kasvattamaan sitä, i ++. 72 00:03:27,985 --> 00:03:29,560 73 00:03:29,560 --> 00:03:30,830 >> Kysymys seitsemän. 74 00:03:30,830 --> 00:03:35,560 Nyt haluamme tehdä jotain hyvin samankaltaisia Mario piste C ongelma asetettu. 75 00:03:35,560 --> 00:03:39,110 Haluamme tulostaa nämä hashtags, Haluamme julkaista viisi 76 00:03:39,110 --> 00:03:40,700 kolme suorakulmion näiden tiivisteiden. 77 00:03:40,700 --> 00:03:41,770 78 00:03:41,770 --> 00:03:43,162 Joten miten aiomme tehdä? 79 00:03:43,162 --> 00:03:45,370 No, me annamme sinulle koko nippu koodin, ja juuri 80 00:03:45,370 --> 00:03:47,560 tulee täyttää tulostaa verkkoon toiminto. 81 00:03:47,560 --> 00:03:49,540 >> Joten mitä PrintGrid näyttää? 82 00:03:49,540 --> 00:03:51,480 No olet ohi leveys ja korkeus. 83 00:03:51,480 --> 00:03:53,520 Joten meillä on ulompi 4 silmukka, joka on kiehkura 84 00:03:53,520 --> 00:03:57,650 kaikkien rivien tämän grid että haluamme tulostaa. 85 00:03:57,650 --> 00:04:01,250 Sitten meillä on inter-sisäkkäistä 4 silmukan, se tulostamista jokaisessa sarakkeessa. 86 00:04:01,250 --> 00:04:06,210 Joten jokaista riviä, me painamme varten jokainen sarake, yksi tiiviste. 87 00:04:06,210 --> 00:04:10,045 Sitten lopussa rivin me painamme yksi uusi linja mennä seuraavalle riville. 88 00:04:10,045 --> 00:04:11,420 Ja siinä se koko verkkoon. 89 00:04:11,420 --> 00:04:12,810 90 00:04:12,810 --> 00:04:13,675 >> Kysymys kahdeksan. 91 00:04:13,675 --> 00:04:17,170 Toimivat kuten PrintGrid sanotaan on sivuvaikutus, mutta ei paluuta 92 00:04:17,170 --> 00:04:17,670 arvo. 93 00:04:17,670 --> 00:04:19,209 Selitä ero. 94 00:04:19,209 --> 00:04:23,080 Joten tämä riippuu sinusta muistaa mitä sivuvaikutus on. 95 00:04:23,080 --> 00:04:25,180 No, paluu value-- Tiedämme PrintGrid ei 96 00:04:25,180 --> 00:04:28,180 on paluu arvo, koska täällä se sanoo mitätön. 97 00:04:28,180 --> 00:04:31,150 Joten mitään joka palauttaa void ei oikeastaan ​​palaa mitään. 98 00:04:31,150 --> 00:04:32,200 99 00:04:32,200 --> 00:04:33,620 Joten mikä on sivuvaikutus? 100 00:04:33,620 --> 00:04:36,620 No, haittavaikutus on mitään tällaista jatkuu 101 00:04:36,620 --> 00:04:39,500 jälkeen toiminto päät joka ei ollut juuri palannut, 102 00:04:39,500 --> 00:04:41,340 ja se ei ollut vain panoksista. 103 00:04:41,340 --> 00:04:44,970 >> Niinpä esimerkiksi, voisimme muuttaa globaali muuttuja. 104 00:04:44,970 --> 00:04:46,590 Se olisi sivuvaikutus. 105 00:04:46,590 --> 00:04:49,000 Tässä nimenomaisessa tapauksessa, erittäin tärkeä sivuvaikutus 106 00:04:49,000 --> 00:04:51,070 tulostaa näytölle. 107 00:04:51,070 --> 00:04:53,110 Niin, että on sivuvaikutus että PrintGrid on. 108 00:04:53,110 --> 00:04:54,980 Painamme näitä asioita näytön. 109 00:04:54,980 --> 00:04:56,370 Ja voit ajatella että sivuvaikutuksena, 110 00:04:56,370 --> 00:04:58,690 koska se on jotain, joka jatkuu tämän jälkeen toiminto päättyy. 111 00:04:58,690 --> 00:05:01,481 Se on jotain ulkopuolelle Tämän toiminnon, joka lopulta 112 00:05:01,481 --> 00:05:03,380 ollaan muuttamassa, kuvaruudun sisältöä. 113 00:05:03,380 --> 00:05:05,200 114 00:05:05,200 --> 00:05:05,839 >> Kysymys yhdeksän. 115 00:05:05,839 --> 00:05:07,880 Harkitse ohjelman alla, johon rivi numeroita 116 00:05:07,880 --> 00:05:09,740 on lisätty vuoksi keskustelu. 117 00:05:09,740 --> 00:05:13,480 Joten tässä ohjelmassa olemme vain soittamalla GetString, varastointia 118 00:05:13,480 --> 00:05:16,220 Tässä muuttuja s, ja sitten tulostus että muuttuja s. 119 00:05:16,220 --> 00:05:16,720 OK. 120 00:05:16,720 --> 00:05:19,090 Joten miksi linjalla yksi on läsnä. 121 00:05:19,090 --> 00:05:20,920 #include CS50 piste h. 122 00:05:20,920 --> 00:05:23,820 Miksi meidän täytyy #include CS50 piste h? 123 00:05:23,820 --> 00:05:26,180 No me soittamalla GetString toiminto, 124 00:05:26,180 --> 00:05:28,840 ja GetString on määritelty vuonna CS50 kirjastossa. 125 00:05:28,840 --> 00:05:31,600 Joten, jos meillä ei ole #include CS50 piste h, 126 00:05:31,600 --> 00:05:35,760 saisimme että implisiittinen ilmoitus on GetString toiminnon virhe 127 00:05:35,760 --> 00:05:36,840 alkaen kääntäjä. 128 00:05:36,840 --> 00:05:40,110 Joten meidän täytyy sisällyttää library-- Meidän täytyy sisällyttää header-tiedosto, 129 00:05:40,110 --> 00:05:42,870 tai muuten kääntäjä ei tunnustavat, että GetString olemassa. 130 00:05:42,870 --> 00:05:44,380 131 00:05:44,380 --> 00:05:46,140 >> Selittäkää, miksi linja kaksi on läsnä. 132 00:05:46,140 --> 00:05:47,890 Joten standardi io piste h. 133 00:05:47,890 --> 00:05:50,430 Se on täsmälleen sama kuten edellisessä tehtävässä, 134 00:05:50,430 --> 00:05:53,310 paitsi sen sijaan käsittelevät GetString, puhumme printf. 135 00:05:53,310 --> 00:05:56,654 Joten jos emme sano meidän sisällyttää standardin io piste h, 136 00:05:56,654 --> 00:05:58,820 meillä ei pystyisi käyttää printf toiminto, 137 00:05:58,820 --> 00:06:00,653 koska kääntäjä ei tiedä siitä. 138 00:06:00,653 --> 00:06:01,750 139 00:06:01,750 --> 00:06:05,260 >> Why-- mitä merkitystä Tyhjän linjassa neljä? 140 00:06:05,260 --> 00:06:08,010 Joten tässä meillä on int main (void). 141 00:06:08,010 --> 00:06:10,600 Se on vain, että meidän eivät saa mitään komentoriviä 142 00:06:10,600 --> 00:06:12,280 argumentit main. 143 00:06:12,280 --> 00:06:17,390 Muista, että voisimme sanoa int main int argc merkkijono argv suluissa. 144 00:06:17,390 --> 00:06:20,400 Joten tässä me vain sanoa mitätön sanoa me sivuuttavat komentoriviargumentteja. 145 00:06:20,400 --> 00:06:21,840 146 00:06:21,840 --> 00:06:25,225 >> Selitä, suhteen muistia, tarkalleen mitä GetString linjassa kuusi palaa. 147 00:06:25,225 --> 00:06:27,040 148 00:06:27,040 --> 00:06:31,640 GetString on palaamassa lohko muisti, joukko merkkejä. 149 00:06:31,640 --> 00:06:34,870 Se on todella palaamassa osoitin ensimmäisen merkin. 150 00:06:34,870 --> 00:06:37,170 Muista, että merkkijono on char tähden. 151 00:06:37,170 --> 00:06:41,360 Niin n on osoitin ensimmäiseen merkki tahansa merkkijono 152 00:06:41,360 --> 00:06:43,510 että käyttäjä kirjoittaa näppäimistöllä. 153 00:06:43,510 --> 00:06:47,070 Ja että muisti sattuu olemaan malloced, niin että muisti on kasassa. 154 00:06:47,070 --> 00:06:49,080 155 00:06:49,080 --> 00:06:50,450 >> Kysymys 13. 156 00:06:50,450 --> 00:06:51,960 Harkitse ohjelman alla. 157 00:06:51,960 --> 00:06:55,579 Joten kaikki tämä ohjelma tekee on printf-ing 1 jaettuna 10. 158 00:06:55,579 --> 00:06:57,370 Joten kun kootaan ja teloitettiin, tämä ohjelma 159 00:06:57,370 --> 00:07:01,170 lähdöt 0,0, vaikka 1 jaettuna 10 on 0.1. 160 00:07:01,170 --> 00:07:02,970 Joten miksi se 0.0? 161 00:07:02,970 --> 00:07:05,510 No, tämä johtuu siitä, kokonaisluku jako. 162 00:07:05,510 --> 00:07:08,580 Joten 1 on kokonaisluku, 10 on kokonaisluku. 163 00:07:08,580 --> 00:07:11,980 Joten 1 jaettuna 10, kaikki käsitellään kokonaislukuja, 164 00:07:11,980 --> 00:07:16,380 ja C, kun teemme kokonaislukujaolla, me katkaista mitään desimaalipilkun. 165 00:07:16,380 --> 00:07:19,590 Joten 1 jaettuna 10 0, ja sitten me yritämme 166 00:07:19,590 --> 00:07:24,410 tulostaa että float, joten nolla tulostetaan float on 0,0. 167 00:07:24,410 --> 00:07:27,400 Ja siksi saamme 0.0. 168 00:07:27,400 --> 00:07:28,940 >> Harkitse ohjelman alla. 169 00:07:28,940 --> 00:07:31,280 Nyt olemme tulostus 0.1. 170 00:07:31,280 --> 00:07:34,280 Joten ei kokonaislukujaolla, me vain tulostus 0,1, 171 00:07:34,280 --> 00:07:37,100 mutta me tulostaa sen 28 desimaalin tarkkuudella. 172 00:07:37,100 --> 00:07:41,810 Ja saamme tämän 0,1000, koko joukko nollia, 5 5 5, blah blah blah. 173 00:07:41,810 --> 00:07:45,495 Joten kysymys kuuluu, miksi se tulostaa, että sen sijaan, tarkalleen 0,1? 174 00:07:45,495 --> 00:07:46,620 175 00:07:46,620 --> 00:07:49,640 >> Joten syy tässä nyt liukuluku epätäsmällisyys. 176 00:07:49,640 --> 00:07:53,410 Muista, että osakkeiden arvo on vain 32 bittiä. 177 00:07:53,410 --> 00:07:57,540 Voimme siis vain edustaa rajallinen määrä liukulukudataelementtejä arvojen kanssa 32 178 00:07:57,540 --> 00:07:58,560 bittiä. 179 00:07:58,560 --> 00:08:01,760 No siellä on lopulta äärettömän monet liukuluvuiksi, 180 00:08:01,760 --> 00:08:04,940 ja siellä on äärettömän monta kelluva kohta arvoja välillä 0 ja 1, 181 00:08:04,940 --> 00:08:07,860 ja olemme tietysti pystyä edustavat vieläkin enemmän arvoja kuin että. 182 00:08:07,860 --> 00:08:13,230 Joten meidän täytyy tehdä uhrauksia pystyä edustamaan eniten arvoja. 183 00:08:13,230 --> 00:08:16,960 >> Joten arvon kuin 0,1, ilmeisesti emme voi vakuuttaa, että juuri. 184 00:08:16,960 --> 00:08:22,500 Joten sen sijaan, mikä on 0,1 teemme Parasta mitä voimme edustamaan tätä 0.100000 5 5 185 00:08:22,500 --> 00:08:23,260 5. 186 00:08:23,260 --> 00:08:26,306 Ja se on aika lähellä, mutta Saat paljon sovelluksia 187 00:08:26,306 --> 00:08:28,430 sinun tarvitse murehtia liukuluku epätarkkuus, 188 00:08:28,430 --> 00:08:30,930 koska emme vain voi edustaa kaikki kelluvat pistettä tarkalleen. 189 00:08:30,930 --> 00:08:32,500 190 00:08:32,500 --> 00:08:33,380 >> Kysymys 15. 191 00:08:33,380 --> 00:08:34,679 Mieti alla oleva koodi. 192 00:08:34,679 --> 00:08:36,630 Olemme vain tulostus 1 plus 1. 193 00:08:36,630 --> 00:08:38,289 Joten ei ole temppu täällä. 194 00:08:38,289 --> 00:08:41,780 1 plus 1 arvioi 2, ja Sitten olemme tulostuksessa. 195 00:08:41,780 --> 00:08:42,789 Tämä vain tulostaa 2. 196 00:08:42,789 --> 00:08:43,850 197 00:08:43,850 --> 00:08:44,700 >> Kysymys 16. 198 00:08:44,700 --> 00:08:49,450 Nyt olemme tulostus merkki 1 plus merkki 1. 199 00:08:49,450 --> 00:08:52,110 Joten miksi tämä ei tulostaa sama asia? 200 00:08:52,110 --> 00:08:57,680 No merkki 1 plus-merkki 1 merkki 1 on ASCII-arvo 49. 201 00:08:57,680 --> 00:09:04,840 Joten tämä on todellakin nyt 49 plus 49, ja lopulta tämä on menossa painoon 98. 202 00:09:04,840 --> 00:09:06,130 Joten tämä ei tulosta 2. 203 00:09:06,130 --> 00:09:08,070 204 00:09:08,070 --> 00:09:09,271 >> Kysymys 17. 205 00:09:09,271 --> 00:09:11,520 Täytäntöönpanon loppuunsaattaminen Odd alle siten 206 00:09:11,520 --> 00:09:14,615 että funktio palauttaa true, jos n on pariton, ja epätosi, jos n on parillinen. 207 00:09:14,615 --> 00:09:16,710 208 00:09:16,710 --> 00:09:19,330 Tämä on suuri tarkoitus mod toimija. 209 00:09:19,330 --> 00:09:24,530 Joten otamme argumentti n, jos n mod 2 on 1, samoin 210 00:09:24,530 --> 00:09:28,030 se tarkoittaa, että n jaettu 2 oli jäljellä. 211 00:09:28,030 --> 00:09:33,270 Jos n jaettuna 2 oli jäljellä, että tarkoittaa, että n on pariton, niin palaamme totta. 212 00:09:33,270 --> 00:09:34,910 Else palaamme vääriä. 213 00:09:34,910 --> 00:09:39,070 Sinulla on myös voinut tehdä n mod 2 vertaistensa nolla, return false, muuten return true. 214 00:09:39,070 --> 00:09:41,600 215 00:09:41,600 --> 00:09:43,640 >> Harkitse rekursiivinen funktio alla. 216 00:09:43,640 --> 00:09:46,920 Joten jos n on pienempi kuin tai yhtä suuri kuin 1, paluu 1, 217 00:09:46,920 --> 00:09:50,430 muu paluu n kertaa f n miinus 1. 218 00:09:50,430 --> 00:09:52,556 Niin mikä on tämä toiminto? 219 00:09:52,556 --> 00:09:54,305 No, tämä on vain kertoma toiminto. 220 00:09:54,305 --> 00:09:55,410 221 00:09:55,410 --> 00:09:57,405 Tämä on hienosti edustettuna kun n kertoma. 222 00:09:57,405 --> 00:09:58,720 223 00:09:58,720 --> 00:10:02,310 >> Joten kysymys 19 nyt, haluamme otettava tämä rekursiivinen funktio. 224 00:10:02,310 --> 00:10:04,530 Haluamme tehdä iteratiivinen. 225 00:10:04,530 --> 00:10:05,874 Niin miten me sen teemme? 226 00:10:05,874 --> 00:10:07,790 Hyvin henkilöstön ratkaisu, ja taas siellä 227 00:10:07,790 --> 00:10:11,090 useita tapoja olisit voinut tehdä että aloitamme tällä int tuote 228 00:10:11,090 --> 00:10:11,812 on 1. 229 00:10:11,812 --> 00:10:13,520 Ja koko tämän varten silmukka, olemme menossa 230 00:10:13,520 --> 00:10:17,590 voidaan kertomalla tuote lopulta päätyä Monimuuttujakoeajot. 231 00:10:17,590 --> 00:10:21,870 Joten int i = 2, i on pienempi kuin tai yhtä suuri kuin n, i ++. 232 00:10:21,870 --> 00:10:24,130 >> Saatat ihmetellä, miksi i = 2. 233 00:10:24,130 --> 00:10:28,380 No, muista, että täällä meidän on Varmista meidän tukikohta tapauksessa on oikea. 234 00:10:28,380 --> 00:10:32,180 Joten jos n on pienempi kuin tai yhtä suuri kuin 1, me vain palaavat 1. 235 00:10:32,180 --> 00:10:34,830 Joten tänne, aloitamme i = 2. 236 00:10:34,830 --> 00:10:39,090 No jos olisin 1, sitten the-- tai jos n oli 1, sitten silmukkakytkentäjohdotukseen 237 00:10:39,090 --> 00:10:40,600 ei suorita lainkaan. 238 00:10:40,600 --> 00:10:43,190 Ja niin me olisi vain paluu tuote, joka on 1. 239 00:10:43,190 --> 00:10:45,920 Vastaavasti, jos n oli vähempään kuin 1-- 240 00:10:45,920 --> 00:10:49,290 jos se olisi 0, negatiivinen 1, whatever-- olisimme vielä palaamassa 1, 241 00:10:49,290 --> 00:10:52,260 joka on juuri rekursiivinen versio on tekemässä. 242 00:10:52,260 --> 00:10:54,660 >> Nyt, jos n on suurempi kuin 1, niin olemme menossa 243 00:10:54,660 --> 00:10:56,550 tehdä ainakin yksi iterointia tämän silmukan. 244 00:10:56,550 --> 00:11:00,630 Joten sanokaamme n on 5, niin olemme aiot tehdä tuote kertaa = 2. 245 00:11:00,630 --> 00:11:02,165 Nyt tuote on 2. 246 00:11:02,165 --> 00:11:04,040 Nyt aiomme tehdä Tuotteiden kertaa yhtä suuri kuin 3. 247 00:11:04,040 --> 00:11:04,690 Nyt se on 6. 248 00:11:04,690 --> 00:11:07,500 Tuotteiden kertaa yhtä kuin 4, nyt se on 24. 249 00:11:07,500 --> 00:11:10,420 Tuotteiden kertaa on 5, nyt se on 120. 250 00:11:10,420 --> 00:11:16,730 Niin sitten lopulta olemme palaamassa 120, mikä on oikein 5 kertoma. 251 00:11:16,730 --> 00:11:17,510 >> Kysymys 20. 252 00:11:17,510 --> 00:11:22,480 Tämä on yksi, jossa sinun täytyy täyttää Tämän taulukon minkään tietyn algoritmin, 253 00:11:22,480 --> 00:11:25,735 mitään, että olemme nähneet, että sopii näihin algoritminen run 254 00:11:25,735 --> 00:11:28,060 kertaa nämä asymptoottinen ajoajat. 255 00:11:28,060 --> 00:11:33,270 Joten mikä on algoritmi, joka on omega 1, mutta iso O n? 256 00:11:33,270 --> 00:11:35,970 Joten ei voi olla äärettömän monia vastauksia täällä. 257 00:11:35,970 --> 00:11:39,790 Yksi että olemme nähneet luultavasti Usein on vain lineaarinen haku. 258 00:11:39,790 --> 00:11:42,050 >> Joten parhaassa tapauksessa skenaario, kohta olemme 259 00:11:42,050 --> 00:11:44,050 HAKU on listan alkuun 260 00:11:44,050 --> 00:11:47,400 ja niin omega 1 vaiheet, Ensiksi meidän tarkistaa, 261 00:11:47,400 --> 00:11:49,740 me vain välittömästi takaisin että löysimme kohteen. 262 00:11:49,740 --> 00:11:52,189 Pahimmassa tapauksessa, Esityslistalla on lopussa, 263 00:11:52,189 --> 00:11:53,730 tai kohde ei ole luettelossa lainkaan. 264 00:11:53,730 --> 00:11:56,700 Joten meidän täytyy etsiä Koko lista, kaikki n 265 00:11:56,700 --> 00:11:58,480 elementtejä, ja siksi se on O, n. 266 00:11:58,480 --> 00:11:59,670 267 00:11:59,670 --> 00:12:04,880 >> Joten nyt se on jotain, joka on sekä omega n log n, ja iso O n log n. 268 00:12:04,880 --> 00:12:08,650 No osuvimmat asia olemme nähneet tässä Lomituslajittelu. 269 00:12:08,650 --> 00:12:12,950 Joten Lomituslajittelu, muistaa, on lopulta Theta 270 00:12:12,950 --> 00:12:16,920 on n log n, jossa theta määritellään jos molemmat omega ja iso O ovat samat. 271 00:12:16,920 --> 00:12:17,580 Molemmat n log n. 272 00:12:17,580 --> 00:12:18,690 273 00:12:18,690 --> 00:12:21,970 >> Mikä on jotain, joka on omega n, ja O n potenssiin? 274 00:12:21,970 --> 00:12:23,990 No, taas siellä useita mahdollisia vastauksia. 275 00:12:23,990 --> 00:12:26,440 Täällä meillä sattuu sanoa Kuplalajittelu. 276 00:12:26,440 --> 00:12:28,840 Lisäyslajittelu toimisi myös täällä. 277 00:12:28,840 --> 00:12:31,400 Muista, että Kuplalajittelu on, että optimointi missä, 278 00:12:31,400 --> 00:12:34,630 jos sinulla on mahdollisuus saada läpi koko lista 279 00:12:34,630 --> 00:12:37,402 tarvitsematta tehdä mitään swap, sitten hyvin, 280 00:12:37,402 --> 00:12:40,110 voimme heti palata, että Luettelo on lajiteltu aluksi. 281 00:12:40,110 --> 00:12:43,185 Joten parhaassa tapauksessa, se on vain omega n. 282 00:12:43,185 --> 00:12:45,960 Jos se ei ole vain kauniisti lajiteltu lista aluksi, 283 00:12:45,960 --> 00:12:48,270 Sitten meillä on O n potenssiin swap. 284 00:12:48,270 --> 00:12:49,330 285 00:12:49,330 --> 00:12:55,610 Ja lopuksi, meillä on valinta Lajittele N potenssiin, sekä omega ja iso O. 286 00:12:55,610 --> 00:12:56,850 >> Kysymys 21. 287 00:12:56,850 --> 00:12:58,870 Mikä kokonaisluvun ylivuoto? 288 00:12:58,870 --> 00:13:02,160 No sekin vastaa aiemmin, meillä on vain äärellisen monta bittiä 289 00:13:02,160 --> 00:13:04,255 edustaa kokonaisluku, joten ehkä 32 bittiä. 290 00:13:04,255 --> 00:13:06,300 291 00:13:06,300 --> 00:13:09,180 Sanotaan meillä on allekirjoitettu kokonaisluku. 292 00:13:09,180 --> 00:13:12,800 Sitten lopulta korkein positiivinen luku voimme edustaa 293 00:13:12,800 --> 00:13:15,910 on 2 31 miinus 1. 294 00:13:15,910 --> 00:13:19,370 Mitä tapahtuu, jos yritämme sitten suurennettava että kokonaisluku? 295 00:13:19,370 --> 00:13:25,320 No, me aiomme mennä 2 31 miinus 1, kaikki alas negatiiviseksi 2 296 00:13:25,320 --> 00:13:26,490 ja 31. 297 00:13:26,490 --> 00:13:29,470 Joten tämä kokonaisluvun ylivuoto on kun pidät inkrementoimalla 298 00:13:29,470 --> 00:13:32,330 ja lopulta et voi saa mitään korkeampaa ja se vain 299 00:13:32,330 --> 00:13:34,520 ylireagoi aina takaisin noin negatiivinen arvo. 300 00:13:34,520 --> 00:13:35,850 301 00:13:35,850 --> 00:13:37,779 >> Entä puskurin ylivuoto? 302 00:13:37,779 --> 00:13:39,820 Joten puskuri overflow-- muistaa, mitä puskuri on. 303 00:13:39,820 --> 00:13:41,000 Se on vain kimpale muistia. 304 00:13:41,000 --> 00:13:43,350 Jotain array on puskuri. 305 00:13:43,350 --> 00:13:46,120 Joten puskurin ylivuoto, kun yrität käyttää muistia 306 00:13:46,120 --> 00:13:47,880 päättymisen jälkeen, että jono. 307 00:13:47,880 --> 00:13:50,410 Joten jos sinulla on taulukon koko 5 ja te 308 00:13:50,410 --> 00:13:53,700 yrität käyttää array kiinnike 5 tai kiinnike 6 tai kannatin 7, 309 00:13:53,700 --> 00:13:56,610 tai mitään muuta kuin loppuun, tai edes mitään 310 00:13:56,610 --> 00:14:00,790 below-- array kiinnike negatiivinen 1-- kaikki nämä ovat puskurin ylivuotoja. 311 00:14:00,790 --> 00:14:02,810 Olet koskettaa muisti huonolla tavalla. 312 00:14:02,810 --> 00:14:04,090 313 00:14:04,090 --> 00:14:04,730 >> Kysymys 23. 314 00:14:04,730 --> 00:14:05,760 315 00:14:05,760 --> 00:14:09,100 Joten tässä yksi tarvitset toteuttaa strlen. 316 00:14:09,100 --> 00:14:11,630 Ja kerromme teille, että voit olettaa s ei voi olla tyhjä, 317 00:14:11,630 --> 00:14:13,790 joten sinun ei tarvitse tehdä mitään tarkistaa null. 318 00:14:13,790 --> 00:14:16,190 Ja on olemassa useita tapoja olisit voinut tehdä tämän. 319 00:14:16,190 --> 00:14:18,440 Täällä me vain ottaa yksinkertainen. 320 00:14:18,440 --> 00:14:21,780 Aloitamme laskuri, n. n on laskemalla, kuinka monta merkkiä on olemassa. 321 00:14:21,780 --> 00:14:25,560 Joten aloitamme 0, ja sitten me kerrata koko listan. 322 00:14:25,560 --> 00:14:29,092 >> Onko s kiinnike 0 vastaa null terminaattori merkki? 323 00:14:29,092 --> 00:14:31,425 Muista etsimme null terminaattori merkki 324 00:14:31,425 --> 00:14:33,360 määrittää, kuinka kauan meidän jono on. 325 00:14:33,360 --> 00:14:35,890 Joka on menossa lopettaa asiaan merkkijono. 326 00:14:35,890 --> 00:14:39,400 Niin on s kiinnike 0 yhdenvertaisen jotta null terminaattori? 327 00:14:39,400 --> 00:14:42,850 Jos se ei ole, niin me tulemme katsokaa s kiinnike 1, s kiinnike 2. 328 00:14:42,850 --> 00:14:45,050 Meidän pitää käynnissä kunnes olemme löytää null terminaattori. 329 00:14:45,050 --> 00:14:48,580 Kun olemme löytäneet sen, sitten n sisällä kokonaispituus merkkijonon, 330 00:14:48,580 --> 00:14:49,942 ja voimme vain palata siihen. 331 00:14:49,942 --> 00:14:51,180 332 00:14:51,180 --> 00:14:51,865 >> Kysymys 24. 333 00:14:51,865 --> 00:14:53,010 334 00:14:53,010 --> 00:14:56,050 Joten tämä on yksi, jossa voit täytyy tehdä kaupan pois. 335 00:14:56,050 --> 00:14:59,810 Niin yksi asia on hyvä yhdessä tavalla, mutta miten se on huono? 336 00:14:59,810 --> 00:15:02,980 Joten tässä, Lomituslajittelu taipumus olla nopeampi kuin Kuplalajittelu. 337 00:15:02,980 --> 00:15:06,530 Sanottuani that-- hyvin, siellä useita vastauksia täällä. 338 00:15:06,530 --> 00:15:12,930 Mutta tärkein on, että Kuplalajittelu on omega N lajitellun luettelon. 339 00:15:12,930 --> 00:15:14,950 >> Muista, että taulukko me juuri nähnyt aiemmin. 340 00:15:14,950 --> 00:15:17,600 Joten kupla lajittelee omega n, parhaassa tapauksessa 341 00:15:17,600 --> 00:15:20,010 on se voinut vain mennä yli luettelon kerran, määrittää 342 00:15:20,010 --> 00:15:22,270 hei tämä asia on jo lajitellaan, ja paluu. 343 00:15:22,270 --> 00:15:25,960 Lomituslajittelu, mitä teet, on omega n log n. 344 00:15:25,960 --> 00:15:29,200 Joten lajitellun luettelon, kupla Lajittele tulee olemaan nopeampi. 345 00:15:29,200 --> 00:15:30,870 346 00:15:30,870 --> 00:15:32,430 >> Nyt entä liittyvät luettelot? 347 00:15:32,430 --> 00:15:36,070 Joten linkitetyn listan voi kasvaa ja kutistua sopimaan yhtä monta alkiota kuin tarvitaan. 348 00:15:36,070 --> 00:15:38,489 Ottaa sanoi that-- niin yleensä suora vertailu 349 00:15:38,489 --> 00:15:40,280 tulee olemaan sidoksissa lista array. 350 00:15:40,280 --> 00:15:41,600 351 00:15:41,600 --> 00:15:44,050 Joten vaikka paneelit voi helposti kasvaa ja kutistua 352 00:15:44,050 --> 00:15:47,130 sopimaan yhtä monta alkiota tarpeen, linkitetty lista 353 00:15:47,130 --> 00:15:49,600 verrattuna array-- array on random access. 354 00:15:49,600 --> 00:15:52,960 Voimme indeksi mihinkään Erityisesti alkiota. 355 00:15:52,960 --> 00:15:56,430 >> Joten linkitetty lista, emme voi vain mennä Fifth Element, 356 00:15:56,430 --> 00:16:00,260 meidän täytyy kulkea alusta kunnes saamme viides elementti. 357 00:16:00,260 --> 00:16:03,990 Ja että menee estää meitä tekemässä jotain binäärihaku. 358 00:16:03,990 --> 00:16:08,150 Puhuminen Binäärihaku, binäärihaku yleensä nopeammin kuin lineaarinen haku. 359 00:16:08,150 --> 00:16:11,120 Ottaa sanoi that-- niin, yksi mahdollinen asia 360 00:16:11,120 --> 00:16:13,380 on, että et voi tehdä binary etsiä liittyvät luettelot, 361 00:16:13,380 --> 00:16:14,730 voit vain tehdä sen paneelit. 362 00:16:14,730 --> 00:16:18,030 Mutta todennäköisesti vielä tärkeämpää, et voi tehdä binäärihaku 363 00:16:18,030 --> 00:16:20,690 on array, joka ei lajitella. 364 00:16:20,690 --> 00:16:23,990 Etukäteen ehkä lajitella array, ja vasta sitten voidaan 365 00:16:23,990 --> 00:16:25,370 teet Binäärihaku. 366 00:16:25,370 --> 00:16:27,660 Joten jos asia ei ole lajitellut aluksi, 367 00:16:27,660 --> 00:16:29,250 sitten lineaarinen haku saattaa onnistua nopeammin. 368 00:16:29,250 --> 00:16:30,620 369 00:16:30,620 --> 00:16:31,740 >> Kysymys 27. 370 00:16:31,740 --> 00:16:34,770 Mieti siis ohjelman alla, mikä tulee olemaan seuraava dia. 371 00:16:34,770 --> 00:16:37,790 Ja tämä on yksi missä olemme menossa haluavat nimenomaisesti 372 00:16:37,790 --> 00:16:39,980 arvot eri muuttujien. 373 00:16:39,980 --> 00:16:41,990 Joten katsotaanpa sitä. 374 00:16:41,990 --> 00:16:43,160 >> Joten linjalla yksi. 375 00:16:43,160 --> 00:16:45,457 Olemme int x on 1. 376 00:16:45,457 --> 00:16:47,040 Se on ainoa asia, joka on tapahtunut. 377 00:16:47,040 --> 00:16:50,440 Joten linja yksi, näemme taulukko, että y, a, b, ja tmp ovat kaikki 378 00:16:50,440 --> 00:16:51,540 pimensi. 379 00:16:51,540 --> 00:16:52,280 Niin mikä on x? 380 00:16:52,280 --> 00:16:53,860 No me vain asettaa se vastaa 1. 381 00:16:53,860 --> 00:16:55,020 382 00:16:55,020 --> 00:16:58,770 Ja sitten linjalla kaksi, hyvin, näemme, että y on asetettu 2, 383 00:16:58,770 --> 00:17:00,550 ja pöytä on jo täytetty meille. 384 00:17:00,550 --> 00:17:03,040 Niin x on 1 ja y on 2. 385 00:17:03,040 --> 00:17:05,890 >> Nyt linja kolme, olemme nyt sisällä swap toiminto. 386 00:17:05,890 --> 00:17:07,560 Mitä me kulkea vaihtaa? 387 00:17:07,560 --> 00:17:11,609 Ohitimme ampersand x ja & -merkki y b. 388 00:17:11,609 --> 00:17:15,160 Jos ongelma aikaisemmin totesi, että osoite X 389 00:17:15,160 --> 00:17:17,520 on 0x10, ja osoite y on 0x14. 390 00:17:17,520 --> 00:17:18,970 391 00:17:18,970 --> 00:17:21,909 Niin a ja b ovat yhtä kuin 0x10 ja 0x14, vastaavasti. 392 00:17:21,909 --> 00:17:23,670 393 00:17:23,670 --> 00:17:26,250 >> Nyt rivillä kolme, mitkä ovat x ja y? 394 00:17:26,250 --> 00:17:28,554 No, mikään ei ole muuttunut x: n ja y: tässä vaiheessa. 395 00:17:28,554 --> 00:17:30,470 Vaikka ne ovat sisällä tärkein pinokehys, 396 00:17:30,470 --> 00:17:32,469 ne on vielä sama arvot kuin ennenkin. 397 00:17:32,469 --> 00:17:34,030 Emme ole muuttaneet mitään muistikuvaa. 398 00:17:34,030 --> 00:17:35,710 Niin x on 1, y on 2. 399 00:17:35,710 --> 00:17:36,550 400 00:17:36,550 --> 00:17:37,050 Selvä. 401 00:17:37,050 --> 00:17:40,300 Joten nyt me sanoimme int tmp yhtä suuri tähti. 402 00:17:40,300 --> 00:17:44,410 Joten rivillä neljä, kaikki on sama paitsi TMP. 403 00:17:44,410 --> 00:17:47,130 Emme ole muuttaneet mitään arvoja mitään paitsi TMP. 404 00:17:47,130 --> 00:17:49,230 Asetamme TMP yhtä suuri tähti. 405 00:17:49,230 --> 00:17:50,620 Mikä on tähti? 406 00:17:50,620 --> 00:17:56,240 No, pisteitä X, niin tähti on menossa yhdenvertaisen X, joka on 1. 407 00:17:56,240 --> 00:18:00,080 Joten kaikki on kopioitu alas, ja TMP on asetettu 1. 408 00:18:00,080 --> 00:18:01,110 >> Nyt seuraava rivi. 409 00:18:01,110 --> 00:18:03,380 Star yhtä suuri tähti b. 410 00:18:03,380 --> 00:18:10,000 Joten linja five-- taas hyvin, kaikki on sama kuin mitä tähti on. 411 00:18:10,000 --> 00:18:10,830 Mikä on tähti? 412 00:18:10,830 --> 00:18:13,720 No, me vain sanoi tähti on x. 413 00:18:13,720 --> 00:18:16,400 Joten olemme muuttumassa x yhdenvertaiseen tähti b. 414 00:18:16,400 --> 00:18:18,960 Mikä on tähti b? y. b pistettä y. 415 00:18:18,960 --> 00:18:21,030 Joten tähti b on y. 416 00:18:21,030 --> 00:18:25,140 Joten olemme asettamalla x yhtä kuin y, ja kaikki muu on sama. 417 00:18:25,140 --> 00:18:29,130 Joten näemme seuraavan rivin, että x on nyt 2, ja loput ovat vain kopioidaan alaspäin. 418 00:18:29,130 --> 00:18:31,120 >> Nyt seuraava rivi, tähti b on yhtä kuin TMP. 419 00:18:31,120 --> 00:18:34,740 No, me vain sanoi tähti b on y, joten olemme asettamalla y sama TMP. 420 00:18:34,740 --> 00:18:37,450 Kaikki muu on samaa, niin kaikki menee kopioitu alas. 421 00:18:37,450 --> 00:18:42,050 Olemme asettamalla y yhtä suuri TMP, joka on yksi, ja kaikki muu on sama. 422 00:18:42,050 --> 00:18:43,210 >> Nyt vihdoin, linja seitsemän. 423 00:18:43,210 --> 00:18:44,700 Olemme takaisin päätehtävä. 424 00:18:44,700 --> 00:18:46,350 Olemme sen jälkeen vaihto on valmis. 425 00:18:46,350 --> 00:18:48,972 Olemme menettäneet, b, ja TMP, mutta lopulta me 426 00:18:48,972 --> 00:18:51,180 ole muuttamassa mitään arvoja mitään tässä vaiheessa, 427 00:18:51,180 --> 00:18:52,800 me vain kopioida x ja y alaspäin. 428 00:18:52,800 --> 00:18:56,490 Ja me näemme, että x ja y ovat nyt 2 ja 1 eikä 1 ja 2. 429 00:18:56,490 --> 00:18:58,160 Swap on suoritettu onnistuneesti. 430 00:18:58,160 --> 00:18:59,500 431 00:18:59,500 --> 00:19:00,105 >> Kysymys 28. 432 00:19:00,105 --> 00:19:01,226 433 00:19:01,226 --> 00:19:03,100 Oletetaan, että kohtaat virheilmoitukset 434 00:19:03,100 --> 00:19:06,790 Alla virka-aikana ensi vuonna CA tai TF. 435 00:19:06,790 --> 00:19:08,930 Neuvoa miten korjata kukin näistä virheistä. 436 00:19:08,930 --> 00:19:11,160 Niin määrittelemätön viittaus GetString. 437 00:19:11,160 --> 00:19:12,540 Miksi voisi näet tämän? 438 00:19:12,540 --> 00:19:15,380 No, jos opiskelija käyttää GetString niiden koodin, 439 00:19:15,380 --> 00:19:20,310 ne ovat oikein Hash mukana CS50 dot h sisällyttää CS50 kirjasto. 440 00:19:20,310 --> 00:19:22,380 >> No, mitä he täytyy korjata tämä virhe? 441 00:19:22,380 --> 00:19:26,810 Heidän täytyy tehdä viiva lcs50 osoitteessa komentorivillä kun he kokoamisessa. 442 00:19:26,810 --> 00:19:29,501 Joten jos ne eivät läpäise kalahtaa viiva lcs50, he 443 00:19:29,501 --> 00:19:32,000 aio olla todellinen koodi, joka toteuttaa GetString. 444 00:19:32,000 --> 00:19:33,190 445 00:19:33,190 --> 00:19:34,170 >> Kysymys 29. 446 00:19:34,170 --> 00:19:36,190 Epäsuorasti julistamisesta kirjastofunktion strlen. 447 00:19:36,190 --> 00:19:37,550 448 00:19:37,550 --> 00:19:40,360 No tämä nyt, ne eivät ole tehty asianmukainen hash kuuluu. 449 00:19:40,360 --> 00:19:41,440 450 00:19:41,440 --> 00:19:45,410 Tässä nimenomaisessa tapauksessa, otsikkotiedosto ne täytyy sisällyttää on merkkijono piste h, 451 00:19:45,410 --> 00:19:48,710 ja myös string piste h, nyt student-- nyt kääntäjä 452 00:19:48,710 --> 00:19:51,750 on pääsy julistuksia strlen, 453 00:19:51,750 --> 00:19:54,120 ja se tietää, että koodi käyttää StrLen oikein. 454 00:19:54,120 --> 00:19:55,380 455 00:19:55,380 --> 00:19:56,580 >> Kysymys 30. 456 00:19:56,580 --> 00:20:00,240 Enemmän prosenttia muunnokset kuin tietojen argumentteja. 457 00:20:00,240 --> 00:20:01,540 Niin mitä tämä on? 458 00:20:01,540 --> 00:20:06,470 Muistan hyvin, että nämä prosenttia signs-- miten he liittyvät printf. 459 00:20:06,470 --> 00:20:08,890 Joten Printf voisimme percent-- voisimme tulostaa jotain 460 00:20:08,890 --> 00:20:11,380 kuten prosenttia i kenoviiva n. 461 00:20:11,380 --> 00:20:15,310 Tai voisimme tulostaa kuten prosenttia i, tilaa, prosenttia i, avaruus, prosenttia i. 462 00:20:15,310 --> 00:20:18,950 Joten jokaiselle näistä prosenttia merkkejä, tarvitsemme 463 00:20:18,950 --> 00:20:21,560 siirtää muuttujan lopussa printf. 464 00:20:21,560 --> 00:20:26,980 >> Joten jos sanomme printf paren prosenttia i kenoviiva n lähellä paren, 465 00:20:26,980 --> 00:20:30,270 hyvin, sanomme, että olemme painoon kokonaisluku, 466 00:20:30,270 --> 00:20:33,970 mutta silloin emme läpäise printf kokonaisluvun itse tulostaa. 467 00:20:33,970 --> 00:20:37,182 Joten tässä lisää prosenttia tuloksia kuin tiedot argumentteja? 468 00:20:37,182 --> 00:20:39,390 Se on sanoa, että meillä on läjän prosentteja, 469 00:20:39,390 --> 00:20:42,445 ja meillä ei ole tarpeeksi muuttujia todella täyttää nämä prosentteja. 470 00:20:42,445 --> 00:20:44,850 471 00:20:44,850 --> 00:20:50,010 >> Ja sitten ehdottomasti, sillä kysymys 31, menettänyt lopullisesti 40 tavua yhdessä korttelin. 472 00:20:50,010 --> 00:20:52,350 Joten tämä on Valgrind virhe. 473 00:20:52,350 --> 00:20:54,720 Tämä on selvää, että jossain koodissa, 474 00:20:54,720 --> 00:20:59,010 sinulla on osuudesta, joka on 40 tavua suuria, jotta malloced 40 tavua, 475 00:20:59,010 --> 00:21:00,515 ja et koskaan vapautti sen. 476 00:21:00,515 --> 00:21:02,480 477 00:21:02,480 --> 00:21:05,140 Todennäköisesti sinun tarvitsee vain löytää muistia vuotaa, 478 00:21:05,140 --> 00:21:07,650 ja löytää, jos joudut vapauttaa tämän lohkon muistia. 479 00:21:07,650 --> 00:21:08,780 480 00:21:08,780 --> 00:21:11,910 >> Ja kysymys 32, virheellinen kirjoitus koko 4. 481 00:21:11,910 --> 00:21:13,250 Jälleen tämä on Valgrind virhe. 482 00:21:13,250 --> 00:21:15,440 Tämä ei tarvitse tehdä muistilla vuotoja nyt. 483 00:21:15,440 --> 00:21:20,750 Tämä on suurin likely-- tarkoitan, se on jonkinlainen virheellinen muistin oikeuksia. 484 00:21:20,750 --> 00:21:23,270 Ja todennäköisesti tämä on jonkin verran tavallaan puskurin ylivuoto. 485 00:21:23,270 --> 00:21:26,560 Missä sinulla on joukko, ehkä kokonaisluku array, ja katsotaanpa 486 00:21:26,560 --> 00:21:30,115 sanovat, että se on kooltaan 5, ja te yritä koskettaa array kiinnike 5. 487 00:21:30,115 --> 00:21:34,150 Joten jos yrität kirjoittaa, että arvo, se ei pala muistia 488 00:21:34,150 --> 00:21:37,440 että sinulla todella on pääsy, ja niin olet menossa saada tämän virheen, 489 00:21:37,440 --> 00:21:39,272 sanomalla virheellinen kirjoitus koko 4. 490 00:21:39,272 --> 00:21:42,480 Valgrind aikoo tunnustaa olet yrittää koskettaa muistiin sopimattomasti. 491 00:21:42,480 --> 00:21:43,980 >> Ja se on siinä quiz0. 492 00:21:43,980 --> 00:21:47,065 Olen Rob Bowden, ja tämä on CS50. 493 00:21:47,065 --> 00:21:51,104