[Glazba svira] ZAMYLA Chan: Sada ćemo se borila pohlepni. Recimo da ste blagajnik, a vi trebaju dati svoj kupcu Određena količina promjene. Pa, ako ste bili pohlepni blagajnik, što želiš zadržati sve kovanice za sebe. Tako da ćeš dati kupcu svoje promjene koristeći što manje novca moguće. Vaš zadatak za ovu p-set je za provedbu Pohlepni, program koji izračunava minimalni broj novca koji se koriste kako bi bilo dao iznos promjene. Prije ronjenja u programiranju koncepti i C sintaksa za pohlepan, neka prvi razgovor kroz Pohlepni Program, i vidjeti možemo li može identificirati algoritam. Ne zaboravite da je algoritam je samo set Upute za rješavanje problema. Algoritam za Pohlepni će samo biti set logičkih pravila i koracima koje možemo slijediti. A oni će uvijek dati minimum broj kovanica potrebnih. Prva stvar koju bi treba znati je koliko promijeniti duguje kupcu. Na ovom primjeru, recimo 0,32 dolara. Postoje mnogi načini da se vrati 0,32 dolara. Ti bi mogao koristiti, primjerice, 32 penija. Ili ako ste bili malo pohlepniji u odabiru vašeg novca, možete koristiti pet kovanica umjesto 32 dajući kupaca tri dimes - 0,10 $ svaki - i dva novčana jedinica - 0,01 $ svaki. Ali možemo učiniti bolje od pet kovanica? Možemo biti još pohlepniji? Vrlo vjerojatno. Idemo dalje hodaju kroz Pohlepni program i vidjeti. Ako je vaš krajnji cilj je da se koristiti nekoliko kovanica god je to moguće, onda bi bilo najviše razumna koristiti najveći Mogući kovanica. Radije bi četvrtina natrag - 0,25 dolara svaki - od pet nickels - 0,05 dolara svaki. Pa možda naša vladajuća pravilo za Pohlepni može biti da uvijek koristite Najveći novčić moguće. Od četvrtine, deaktivira, Nickels, i novčana jedinica, naša Najveći novac je četvrtina. Dakle, mi ćemo ih pokušati koristiti na prvom mjestu. Povratak na naša 0,32 dolara. Možemo koristiti četvrtinu dati kupac 0,32 dolara? Da. To će nas ostaviti s 0,07 $ lijevo. Možemo koristiti drugu četvrtinu? Ne, jer 25 je veći od sedam. Mi ne želimo dati kupcu bilo više nego što smo ih dugujete. U redu. Sada kada smo iscrpili naše četvrtine, neka je premjestiti na sljedeća najveća kovanice, dime. Možemo koristiti jeftinom dati Kupac je njihov 0,07 dolara natrag? No, budući da je 10 veći od sedam. Pa onda sljedeći najveći novac dostupan nam je nikla. Možemo koristiti nikal? Da. I onda ćemo imati 0,02 dolara preostao. Mi ne možemo koristiti nikla za povratak 0,02 dolara. Tako smo se preselili posljednji novčić na raspolažemo - denar. I nakon korištenja dva penija, bili bismo otišao s nula lipa, što znači da smo uspješno platili natrag Korisnik njihova promjena dugovao koristeći samo četiri kovanice - jedna četvrtina, jedan nikla, i dva penija. Možete pokrenuti rješenje osoblje da vidi je li Naša vladajuća pravilo i proces je dao nam pravi odgovor. Za većinu problema setovima, da ćete biti u mogućnosti pokrenuti rješenje osoblje vidjeti kako svoj program bi trebao raditi. I konkretne upute će biti u problemu postavlja naočale. Nakon što smo pokrenuli rješenje osoblja, što potiče nas koliko je mnogo promjena dugovao napomenuti da je pita za iznositi u dolarima. Mi ulaz 0,32 dolara, 0,32. To nam govori da su četiri kovanice duguje, skladu s našim odgovorom. Fantastic. Pa sad krenimo u potrazi u provedbi od pohlepnih algoritma. Znamo par stvari. Jedan, da ćemo morati zatražiti Korisnik za iznos od promjene. Dvije, da ćete želite slijediti svoju uređuje pravilo da uvijek koristite Najveći novčić moguće. I treće, da je potrebno pratiti koliko kovanica koristimo. Jer na kraju, moramo se ispisati broj kovanica koje smo. Prvo, pitajući korisnika za iznos od promjene. Kad god se bave korisničkog unosa, provjerite sigurni da li se sjetiti svih Zahtjevi na ulazu, i samo prihvatiti ulaz koji odgovara onima zahtjevima. U ovom slučaju, želimo da se bave novčana vrijednost u dolarima. U GetFloat i GetInt funkcije osigura da ulaz je numerički. No, korisnik je u mogućnosti na ulazu negativne brojčane vrijednosti. Dakle, ne zaboravite da koristite samo ne negativna ulaza, što uključuje sve negativne brojevi i nula. U tom slučaju, ulazni bi trebala biti float. Drugim riječima, decimalni broj. Zbog problema set spec. zahtijeva vas pitati za ulaz u dolarima. Ali u C, s pomičnim zarezom vrijednosti ne mogu biti zastupljena točno. Budući da postoji konačan broj bitova s ​​kojima se predstavljaju beskonačne vrijednosti. Uzmi broj 0,1. Da sam vas zamoliti da napiše 0,1 po ruku na stoti decimalu, ti bi napisati 1, slijedi 99 nula. Mi smo očekivali da naše računalo bi ispisati točno istu stvar ako smo ga pitali kako. Pa da vidimo što se to čini. Ja ću pregledati vrijednosti tiskanje prema Kraj toga šetati. Za sada, vidim da se ovdje f% je varijabla za pomičnim zarezom. Ali smo odredili unaprijed da želimo 100 decimale prikazuju, a onda novi linija za ljepši formatiranja. Nakon niza, biramo 0,1 kao plutati da želimo ispisati. I rezultat, jedan, slijedi prema nekim nula, ali onda cijela hrpa brojeva. Sigurno ne kao što se očekuje. Pomičnim zarezom nepreciznost može uvesti zaokruživanje pogreške u vaš kalkulacije da će svakako žele izbjeći. Ako želite vidjeti više primjera, što možete preuzeti imprecision.ce iz prošetati kroz kod, koji je jednostavan program koji pita plutaju i ispisuje natrag na stoti decimalu. Naravno, ako želite pokazati manje ili više decimalnih mjesta možete promijeniti sami. Kao što ćete vidjeti, iako je razlika između njih je malo, kada se množenjem i dodao pluta, koji nesrazmjer na kraju zbrojiti. Povratak na pohlepni. Mi ćemo željeti izbjeći pogreške zaokruživanja koje se bave cijelim brojevima. Dakle, nakon što smo dobili valjane podatke od korisnik, neka je pretvoriti ovo Dolar je vrijednost centi. Mentalno, možemo to učiniti tako da se pomnoži Dolar je vrijednost za 100. Ali zapamtite, jer s pomičnim zarezom, nepreciznost, želimo napraviti sigurni da smo pomoću pravu vrijednost. Pomnoži sa 100 biti će premjestiti decimala dva mjesta na pravo, sjekao ili skraćivanjem ništa nakon toga. Ako se poigrati s nekim više primjeri, vidjet ćete da nećete Uvijek je dobio pravi broj i ako koristite ovu metodu odvajanja. Na primjer, tiskane 100 12.59 decimalnih mjesta, koji vam daje 12,5899, i tako dalje. Vi bi dobili 12,58 ako skraćen, Ne 12.59, kao što vam je potrebno. Umjesto toga, to je najbolje zaokružiti Prvi broj. Srećom, C dolazi s funkcija zove Okrugli. To je u math knjižnici. Ako želite znati kako koristiti Round, onda možete dovesti do priručnik ili Čovjek stranica za tu funkciju. Možete to učiniti tako da upišete čovjeka, kratko za upotrebu, a zatim funkciju koju želite pogledati. Dakle upišete čovjek rundu u terminal naredbenog retka će dovesti do priručnik. To bi moglo biti malo teško odgonetnuti, , ali na kraju ćete se naviknete na njega. Man stranice pokazati što funkciju ne, a zatim neke moguće koristi od njega. Ja ću vas ostaviti da istražite stranica Čovjek za krug. Ali, znate da možete ga koristiti za okrugli vrijednost tijekom pretvorbe iz dolara centi. Okrugli će vam dati natrag niz tipa podataka kontre. A možete pretvoriti ili cast to int nakon toga. Velika. Do sada smo to zatraži korisnik za novčani iznos, a je pretvoren u centa. Sada možemo implementirati algoritam da se uvijek koristi Najveći novci na raspolaganju. Imajte na umu da postoji više načina za provesti Pohlepni, baš kao i postoji više načina za pristup Svaka znanost problema na računalu. Pronalaženje većini elegantan način, to je dio zabave. Tijekom tih p-seta, ako vaš program ne odgovaraju točno moje Objašnjenje u rješenje korak po korak, to je u redu. No, samo bi bili sigurni da prolazi check 50, zadovoljava sve Zahtjevi se formira specifikacije, i da uzmete u obzir da li vaš pristup ima dobar dizajn. Drugim riječima, koliko je učinkovit je to? Na primjer, jeste li upisati ponavljaju kod linije, umjesto korištenja petlju? Pisanje koda s boljim dizajnom će dolaze iskustvo kako napredujete kroz tečaj. Za to šetati, ja ću ići preko dvije metode koje se mogu koristiti za dovršiti Pohlepni. Prva metoda je metoda korištenja petlje i oduzimanje. Ranije, kad smo razgovarali kroz Pohlepni proces, neprestano provjeriti da li smo mogli koristiti četvrtinu, i koristi četvrtinu do Vrijednost preostale bio manji od 0,25 dolara. To znači i da dok je struktura petlje. Dok još uvijek možete koristiti četvrtinu, koristiti jedan. To while petlja treba izvršavati dokle kao preostala vrijednost je veća od ili jednak četvrtina je cent vrijednosti. To znači da ćete željeti pratiti preostalog novca vrijednost, i to svaki ažurirati Vrijeme je da koristite novčić. Također, ne zaboravite da je na kraju, svoje Izlaz je broj kovanica koriste. Dakle, još jedna stvar za pratiti je broj kovanica koje koristite. Možete pratiti to pomoću dobro po imenu varijable. A u tijelu vašeg petlje bi biti nadogradnja na tim varijablama. Nakon petlje za tromjesečje završi, te možete koristiti sličan jedan za dimes, i tako dalje i tako dalje, sve dok ste vratio sve u gotovini. Ja sam napisao neki pseudo-kod ovdje vam pomoći vizualizirati koliko Proces smo razgovarali moglo prevesti na C. Kao što vidite ovdje, ja sam još uvijek koristite Engleske riječi. Nije C još. Ali ja sam počeo alineje stvari. Ja sam stavio uvjete unutar moji zagrade. Ona počinje izgledati malo nešto poput programskog koda. Pseudo-kod je sjajan način da se sami započeli. Vizualizirajte svoj kod prije pogledate gore sintaksu. Budući da se često najteži dio o Problem je stvarno razumijevanje onoga točno trebate učiniti. Nakon što ste napisali da je dolje, onda je puno lakše pogledati funkcije i sintaksa su specifične za vaše Linija pseudo-koda Imajte na umu da to nije moglo biti identičan vrste kostur Vaš kod koji ste napisali. Uvijek postoje optimizacije da se napravi. A pogotovo u mom pseudo-koda ovdje, vidjeti ako možete to uočiti. Ali u suštini proces i način razmišljanja je baš kao što smo razgovarali. Prvi redak nam govori da dobiju Određeni iznos u dolarima. I drugi nam govori da pretvoriti ga centi. I tada, dok četvrti mogu koristiti, da želi povećati broj kovanica i smanjiti količinu gotovine. Isto vrijedi i za deaktivira, nickels, i novčana jedinica. I na kraju, možemo reći korisnik koliko kovanica smo koristili. Velika. Tako da zaključuje metodu petlje. Sada ćemo govoriti o modularnom načinu, što je više poput podjele. Svi smo upoznati s plus, minus, množiti i dijeliti operatore nam na raspolaganju. C ima sve četiri osobe, ali isto tako ima operator modulo, koju zastupa znak postotka. Modulo je stvarno uredan. To vam daje ostatak od dijeljenjem dva broja. Sjetite se dugo podjela poruku kada podijelite, recimo, 74 do tri? Počevši s desecima mjesta, što bi Znam da 3 ide u sedam dva puta napraviti šest s Preostali jedan. Ti bi pisati dva na vrhu, a zatim oduzmite 6 sa sedam, nošenje preko Ostatak 14 u ponovite postupak. Tri ide u 14 četiri puta na bi 12, a preostalo dvoje. I dvojica ne nose preko više. Dakle, dva bi trebalo ostaviti na Dno kao ostatak. I to je ono po modulu daje, što taj je broj u dnu. Dakle 74 modulo tri će vam dati dva. I 10 modulo dva, i da će vam dati nulu. Budući da ne postoji ostatak Kad se dijeli 10 za dva. Šest modulu pet, te pet ide u šest jednom. I onda je jedan preostao. Dakle, šest modulu pet je jedan. Zatim, ako imate sedam modulu devet, da ćeš biti sedam. Zbog devet je veći od sedam. Dakle, to ne sve to podijeliti u sedam, ostavljajući sedam, kao svoj odgovor. Ako mislite o modulo malo više, sjetite se da vam daje Ostatak nakon što podijeliti nešto. Razmislite o tome što bi moglo biti moći koristiti u Pohlepni. Recimo da korisnik traži 400,11 dolara. Što je način da shvatite koliko četvrtine trebate bez računati svatko? Nakon što shvatiti koliko četvrtine možete koristiti kako bi 400,11 dolara, koliko je promijeniti ostatke? Možda kombinacija ovdje između modulu i podjela će doći u ruci da vam cool, elegantan pristupiti na pohlepni problema. No, ne zaboravite da je Upravno pravilo još uvijek vrijedi. Uvijek koristite najveću moguću novčić. Nakon što ste učinili izračun koliko više novca za korištenje, posljednji korak je ispisati broj novci da izračunati. Do sada smo bili pomoću printf funkcionirati isključivo za gudače. No, ako želite ispisati in, ili samo bilo koje vrste podataka koji se pohranjuju u varijablu, morate naznačiti da koristite rezervirano mjesto. Ovdje sam uključena samo neke savjete o tome kako ispisati vrijednosti. Ako imate cijeli broj, što bi napisati svoj niz pomoću% d kao rezervirano mjesto. Nakon zatvaranja kotaciji Mark, unesite zarez. I onda se stavi u cijeli da će zauzeti mjesto% d kada ispisati. Dakle, nakon što prikazuje broj od koristi kovanice, ti si završio s pohlepan. Pobrinite se da provjeriti sve slučajeve kutak, pospremiti vaš stil malo, a ti si sve skupa podnijeti. Na kraju ovog problema skupa, vi ćete biti više upoznati s CS50 aparata, terminal, a loop strukture i varijabli u C Vi ste na dobrom putu. Krivulja učenja može činiti teško. Dakle, ići korak po korak. Provjerite jeste li pisati pseudo-koda Prije ronjenja preduboko u nepoznatom sintakse. Napravite popis obveza, i razbiti Raspored u manje, više realno provedive. Istražite sve CS50 resursa. Osim predavanja, rewatch ovo šetati. Obratite pozornost na dijelu. Provjerite gaćice. Posjeta pitanja kolege ' Na Raspravljati i postavljati svoje vlastite. Najbolji od sreće s p-seta. I hvala za gledanje. To je bio pohlepan. [Glazba svira]