[เล่นดนตรี] 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 ไม่จำเป็นอย่างเคร่งครัด แต่มันก็ไม่มีความหมายว่าหลักจะทำ ชื่อของฉันคือร็อบและนี่ก็เป็นมาริโอ [เล่นดนตรี]