>> [CHWARAE CERDDORIAETH]
>> ROB BOWDEN: Mae'n LandLine fi, Rob.
Gadewch i ni gerdded drwy'r sut i weithredu Mario.
Felly, y peth cyntaf mae angen i ni ei wneud yw annog y defnyddiwr ar gyfer y mewnbwn.
>> Mae angen i ni ofyn iddynt sut yn union y Dylai tal y pyramid fod.
Felly dyma, rydym yn gweld ein bod yn ei wneud uchder = GetInt.
Mae A chofiwch bod y swyddogaeth GetInt yn cael ei weithredu yn y CS50
llyfrgell, felly i fyny top, mae angen i ni cofiwch # yn cynnwys cs50.h.
>> Felly, pam mae gennym y lapio mewn dolen do-tra?
Wel, mae angen i ni hefyd gofio bod cyfraniad y defnyddiwr wedi i fod yn ddilys.
Beth yw mewnbwn annilys?
Wel fanyleb pset dweud yn benodol bod uchder llai na 0 neu fwy
na 23 yn annilys.
>> Felly yma, rydym yn gweld ein bod yn diffinio cysonyn o'r enw MAX_HEIGHT gyda'r
gwerth o 23.
Bydd y ddolen do-tra yn parhau tra uchder yn llai na 0 neu MAX_HEIGHT yn
llai na uchder, sy'n golygu bod 23 yn llai na'r uchder.
Felly os uchder yw 24 neu fwy, rydym yn mynd i barhau dolennu.
Cofiwch fod yn ei wneud-er bod dolenni yn eithaf ddefnyddiol pryd bynnag y byddwn am gael
mewnbwn defnyddwyr ac yna ddilysu, gan yn anochel bydd angen i ni ofyn i'r defnyddiwr yn
leiaf unwaith ar gyfer y gwerth y maent ei eisiau.
>> Felly, ar ôl i ni gael eu mewnbwn, rydym yn bellach yn gallu adeiladu y pyramid.
Un o driciau ar y broblem hon a osodwyd yn bod yn rhaid inni ddechrau ar frig
y pyramid.
Ni allwch printf waelod y pyramid ac yna adeiladu eich ffordd i fyny.
Felly, gadewch i ni edrych ar yr enghraifft gan y fanyleb pset.
>> Rydym yn gweld yma, pan fyddwn yn mynd i mewn i uchder o 8, waelod y
pyramid printiau naw hashes.
Un i fyny lefel o'r brintiau un lle ac wyth hashes.
Un i fyny lefel o hynny yw dau le a saith hashes, yr holl ffordd nes i ni
cyrraedd y ben y pyramid, sy'n wyth lefel i fyny, sy'n argraffu saith
mannau a dau hashes.
Felly cofiwch fod yn rhaid i gwneud lefel uchaf hwn yn gyntaf.
>> Yma rydym yn bwysleisio'r o'r lefel uchaf, rhes 8, gan barhau
hyd nes y rhes yn cyrraedd 0.
Felly, faint o leoedd oedd ei angen arnom i argraffu yn y rhes uchaf?
Rydym hargraffu saith lle a dau hashes.
Felly, mae nifer y llefydd yr ydym ei eisiau yw y rhes a oedd ar minws 1.
>> Os yw'r rhes uchaf yw 8, 8 minws 1 yn rhoi saith lle i ni.
Yna, mae gennym dolen a fydd yn argraffu allan bob un lle ar y tro.
Felly, pan fydd mannau yw 7, dolen hwn saith gwaith, argraffu
saith o lefydd unigol.
>> Felly, yn awr mae angen i ni argraffu hashes hyn ar ddiwedd y pyramid.
Felly dyma, mae angen i ni gyfrifo nifer y hashes.
Rydym yn gweld ein bod yn ei wneud uchder rhes minws a 2.
Felly sut y gwnaethom yn cael hynny?
>> Cofiwch fod y frig y pyramid yn rhes 8, ac mae'r uchder yw 8.
Ac rydym yn dal i hargraffu dau hashes.
Felly, ar y lleiaf, 8 minws 8 plws 2 yn rhoi yr ateb cywir i ni.
Ac yna ystyried y gwaelod y pyramid, rhes 1.
Bydd rhes minws Uchder rhoi i ni 7, a Yna, ynghyd â 2 yn rhoi naw hashes i ni,
sef yr union y nifer o hashes ein bod yn argraffu.
Felly, mae hyn yw'r fformiwla yr ydym am ei defnyddio i gyfrifo nifer
hashes ym mhob rhes.
>> Gan ddefnyddio y rhif hwnnw, byddwn wedyn gael un arall ar gyfer dolen, yn debyg iawn i'r
ar gyfer ddolen a ddefnyddiwyd gennym ar gyfer y mannau agored, bod ailadrodd nifer o weithiau hashes
argraffu hash unigol bob tro.
Ar y rhes uchaf, bydd hynny'n argraffu dau hashes.
Ar y rhes gwaelod, bydd hynny'n argraffu naw hashes.
A bydd pob rhes arall argraffu pob nifer y hashes yn y canol.
>> Ac yna ar y diwedd un, mae angen i ni argraffwch ein llinell newydd i fynd i'r nesaf
rwyfo yn y pyramid.
Yn olaf, mae angen i argraffu'r llinell newydd ar ddiwedd y rhes er mwyn
parhau i'r nesaf res y pyramid.
Ac ar ddiwedd ein rhaglen, mae gennym y ffurflen 0.
>> Yn unol â'r fanyleb pset, y ffurflen 0 nid yw'n gwbl angenrheidiol.
Ond mae'n ddim yn arwyddo y prif yn cael ei wneud.
Fy enw i yw Rob, ac roedd hyn yn Mario.
>> [CHWARAE CERDDORIAETH]