>> [เล่นดนตรี]
>> ROB สลิง: มันฉันร็อบ
ลองเดินผ่านวิธี ที่จะใช้มาริโอ
ดังนั้นสิ่งแรกที่เราต้องทำคือ แจ้งให้ผู้ใช้สำหรับการป้อนข้อมูล
>> เราต้องถามพวกเขาว่าวิธีการ ปิรามิดสูงที่ควรจะเป็น
ดังนั้นที่นี่เราเห็นที่เรากำลังทำ height = GetInt
และจำไว้ว่าฟังก์ชั่น GetInt จะดำเนินการใน CS50
ห้องสมุดเพื่อขึ้นด้านบนเราต้อง จำ # include cs50.h.
>> ดังนั้นเราจึงมีเหตุผลที่ห่อนี้ ในวงทำในขณะที่?
ดีเรายังต้องจำไว้ว่า ข้อมูลของผู้ใช้จะต้องมีความถูกต้อง
ข้อมูลที่ไม่ถูกต้องคืออะไร
spec ดี pset เฉพาะกล่าว ที่ความสูงน้อยกว่า 0 หรือมากกว่า
กว่า 23 ไม่ถูกต้อง
>> ดังนั้นที่นี่เราจะเห็นว่าเรากำลังกำหนด อย่างต่อเนื่องที่เรียกว่า MAX_HEIGHT กับ
ค่าของ 23
วงนี้ทำในขณะที่จะยังคงในขณะที่ ความสูงน้อยกว่า 0 หรือ MAX_HEIGHT เป็น
น้อยกว่าความสูงซึ่งหมายความว่า 23 น้อยกว่าความสูง
ดังนั้นถ้าความสูงเป็น 24 หรือมากกว่าเรา จะยังคงวนลูป
โปรดจำไว้ว่าจะทำในขณะที่ลูปจะสวย เป็นประโยชน์เมื่อใดก็ตามที่เราต้องการที่จะได้รับ
เข้าของผู้ใช้และจากนั้นตรวจสอบมันตั้งแต่ เราหลีกเลี่ยงไม่ได้ต้องขอให้ผู้ใช้ที่
อย่างน้อยหนึ่งครั้งสำหรับค่าที่พวกเขาต้องการ
>> ดังนั้นเมื่อเรามีข้อมูลของพวกเขาเรา ตอนนี้สามารถสร้างปิรามิด
หนึ่งในเทคนิคของปัญหานี้คือการตั้งค่า ที่เราจะต้องเริ่มต้นที่ด้านบนของ
ปิรามิด
คุณไม่สามารถ printf ด้านล่างของ ปิรามิดแล้วสร้างทางของคุณขึ้น
ดังนั้นเรามาดูตัวอย่าง จากข้อมูลจำเพาะ pset
>> เรามาดูกันที่นี่ว่าเมื่อเราใส่ความสูง 8, ด้านล่างสุดของ
ปิรามิดพิมพ์เก้า hashes
หนึ่งระดับขึ้นจากที่พิมพ์ หนึ่งในพื้นที่และแปด hashes
หนึ่งระดับขึ้นจากที่มีสองช่องว่างและ เจ็ด hashes ตลอดทางจนกว่าเรา
ไปด้านบนของปิรามิดซึ่งเป็น แปดระดับขึ้นที่พิมพ์เจ็ด
ช่องว่างและสอง hashes
ดังนั้นจำไว้ว่าเราจะต้อง ทำระดับบนสุดนี้เป็นครั้งแรก
>> ที่นี่เรากำลัง iterating จาก ระดับบนสุดแถวที่ 8 การดำเนินการต่อ
จนแถวถึง 0
ช่องว่างดังนั้นวิธีที่หลายคนเราไม่จำเป็นต้อง การพิมพ์ในแถวบนสุดที่
เราพิมพ์เจ็ดช่องว่าง และสอง hashes
ดังนั้นจำนวนของพื้นที่ที่เราต้องการคือ แถวที่อยู่บนลบ 1
>> ถ้าแถวบนสุดคือ 8, 8 ลบ 1 ช่วยให้เรามีช่องว่างที่เจ็ด
แล้วเรามีห่วงที่จะพิมพ์ ออกในแต่ละพื้นที่หนึ่งในเวลา
ดังนั้นเมื่อช่องว่างคือ 7 วงนี้ เจ็ดครั้งในการพิมพ์
ช่องว่างของแต่ละเจ็ด
>> ดังนั้นตอนนี้เราต้องพิมพ์ hashes เหล่านี้ ที่ปลายสุดของปิรามิด
ดังนั้นที่นี่เราต้องคำนวณ จำนวน hashes
เราจะเห็นว่าเรากำลังทำอยู่สูง แถวลบบวก 2
ดังนั้นเราจึงไม่ได้รับวิธีการที่
>> โปรดจำไว้ว่าด้านบนของปิรามิด แถวที่ 8 และความสูงคือ 8
และเรายังคงพิมพ์สอง hashes
ดังนั้นอย่างน้อยที่สุด, 8 ลบ 8 บวก 2 ช่วยให้เรามีคำตอบที่เหมาะสม
แล้วพิจารณาด้านล่าง ของปิรามิดแถวที่ 1
แถวความสูงลบจะทำให้เรามี 7 และ แล้วบวก 2 ทำให้เราเก้า hashes,
ซึ่งตรงกับหมายเลข ของ hashes ที่เราพิมพ์
ดังนั้นนี่คือสูตรที่เราต้องการ ใช้ในการคำนวณจำนวน
hashes ในแต่ละแถว
>> โดยใช้หมายเลขที่เราแล้วมีอีก สำหรับวงคล้ายคลึงกับ
สำหรับวงที่เรานำมาใช้สำหรับพื้นที่ที่ ว่าจำนวน iterates ครั้ง hashes
พิมพ์กัญชาเดียวในแต่ละครั้ง
ในแถวบนสุดที่จะ พิมพ์สอง hashes
ในแถวด้านล่างที่จะ พิมพ์เก้า hashes
และอื่น ๆ แต่ละแถวจะพิมพ์ทุก จำนวน hashes ในระหว่าง
>> แล้วที่ท้ายสุดเราต้อง พิมพ์บรรทัดใหม่ของเราที่จะไปต่อไป
แถวในปิรามิด
สุดท้ายเราต้องพิมพ์บรรทัดใหม่ ในตอนท้ายของแถวเพื่อที่จะ
ยังคงต่อไป แถวของพีระมิด
และในตอนท้ายของโปรแกรมของเรา เรามีผลตอบแทน 0
>> ตาม spec pset กลับ 0 ไม่จำเป็นอย่างเคร่งครัด
แต่มันก็ไม่มีความหมายว่าหลักจะทำ
ชื่อของฉันคือร็อบและนี่ก็เป็นมาริโอ
>> [เล่นดนตรี]