1 00:00:00,000 --> 00:00:00,982 2 00:00:00,982 --> 00:00:11,293 >> [เล่นดนตรี] 3 00:00:11,293 --> 00:00:13,580 >> ROB สลิง: มันฉันร็อบ 4 00:00:13,580 --> 00:00:16,540 ลองเดินผ่านวิธี ที่จะใช้มาริโอ 5 00:00:16,540 --> 00:00:21,040 ดังนั้นสิ่งแรกที่เราต้องทำคือ แจ้งให้ผู้ใช้สำหรับการป้อนข้อมูล 6 00:00:21,040 --> 00:00:24,440 >> เราต้องถามพวกเขาว่าวิธีการ ปิรามิดสูงที่ควรจะเป็น 7 00:00:24,440 --> 00:00:27,110 ดังนั้นที่นี่เราเห็นที่เรากำลังทำ height = GetInt 8 00:00:27,110 --> 00:00:32,479 และจำไว้ว่าฟังก์ชั่น GetInt จะดำเนินการใน CS50 9 00:00:32,479 --> 00:00:38,060 ห้องสมุดเพื่อขึ้นด้านบนเราต้อง จำ # include cs50.h. 10 00:00:38,060 --> 00:00:41,360 >> ดังนั้นเราจึงมีเหตุผลที่ห่อนี้ ในวงทำในขณะที่? 11 00:00:41,360 --> 00:00:45,080 ดีเรายังต้องจำไว้ว่า ข้อมูลของผู้ใช้จะต้องมีความถูกต้อง 12 00:00:45,080 --> 00:00:46,910 ข้อมูลที่ไม่ถูกต้องคืออะไร 13 00:00:46,910 --> 00:00:51,460 spec ดี pset เฉพาะกล่าว ที่ความสูงน้อยกว่า 0 หรือมากกว่า 14 00:00:51,460 --> 00:00:54,530 กว่า 23 ไม่ถูกต้อง 15 00:00:54,530 --> 00:00:59,030 >> ดังนั้นที่นี่เราจะเห็นว่าเรากำลังกำหนด อย่างต่อเนื่องที่เรียกว่า MAX_HEIGHT กับ 16 00:00:59,030 --> 00:01:00,750 ค่าของ 23 17 00:01:00,750 --> 00:01:06,380 วงนี้ทำในขณะที่จะยังคงในขณะที่ ความสูงน้อยกว่า 0 หรือ MAX_HEIGHT เป็น 18 00:01:06,380 --> 00:01:11,870 น้อยกว่าความสูงซึ่งหมายความว่า 23 น้อยกว่าความสูง 19 00:01:11,870 --> 00:01:15,390 ดังนั้นถ้าความสูงเป็น 24 หรือมากกว่าเรา จะยังคงวนลูป 20 00:01:15,390 --> 00:01:18,300 โปรดจำไว้ว่าจะทำในขณะที่ลูปจะสวย เป็นประโยชน์เมื่อใดก็ตามที่เราต้องการที่จะได้รับ 21 00:01:18,300 --> 00:01:22,070 เข้าของผู้ใช้และจากนั้นตรวจสอบมันตั้งแต่ เราหลีกเลี่ยงไม่ได้ต้องขอให้ผู้ใช้ที่ 22 00:01:22,070 --> 00:01:25,010 อย่างน้อยหนึ่งครั้งสำหรับค่าที่พวกเขาต้องการ 23 00:01:25,010 --> 00:01:28,500 >> ดังนั้นเมื่อเรามีข้อมูลของพวกเขาเรา ตอนนี้สามารถสร้างปิรามิด 24 00:01:28,500 --> 00:01:31,940 หนึ่งในเทคนิคของปัญหานี้คือการตั้งค่า ที่เราจะต้องเริ่มต้นที่ด้านบนของ 25 00:01:31,940 --> 00:01:32,750 ปิรามิด 26 00:01:32,750 --> 00:01:36,800 คุณไม่สามารถ printf ด้านล่างของ ปิรามิดแล้วสร้างทางของคุณขึ้น 27 00:01:36,800 --> 00:01:38,830 ดังนั้นเรามาดูตัวอย่าง จากข้อมูลจำเพาะ pset 28 00:01:38,830 --> 00:01:41,530 29 00:01:41,530 --> 00:01:45,430 >> เรามาดูกันที่นี่ว่าเมื่อเราใส่ความสูง 8, ด้านล่างสุดของ 30 00:01:45,430 --> 00:01:48,660 ปิรามิดพิมพ์เก้า hashes 31 00:01:48,660 --> 00:01:52,990 หนึ่งระดับขึ้นจากที่พิมพ์ หนึ่งในพื้นที่และแปด hashes 32 00:01:52,990 --> 00:01:58,250 หนึ่งระดับขึ้นจากที่มีสองช่องว่างและ เจ็ด hashes ตลอดทางจนกว่าเรา 33 00:01:58,250 --> 00:02:03,050 ไปด้านบนของปิรามิดซึ่งเป็น แปดระดับขึ้นที่พิมพ์เจ็ด 34 00:02:03,050 --> 00:02:06,000 ช่องว่างและสอง hashes 35 00:02:06,000 --> 00:02:08,810 ดังนั้นจำไว้ว่าเราจะต้อง ทำระดับบนสุดนี้เป็นครั้งแรก 36 00:02:08,810 --> 00:02:11,620 37 00:02:11,620 --> 00:02:18,500 >> ที่นี่เรากำลัง iterating จาก ระดับบนสุดแถวที่ 8 การดำเนินการต่อ 38 00:02:18,500 --> 00:02:22,150 จนแถวถึง 0 39 00:02:22,150 --> 00:02:25,820 ช่องว่างดังนั้นวิธีที่หลายคนเราไม่จำเป็นต้อง การพิมพ์ในแถวบนสุดที่ 40 00:02:25,820 --> 00:02:29,310 เราพิมพ์เจ็ดช่องว่าง และสอง hashes 41 00:02:29,310 --> 00:02:34,450 ดังนั้นจำนวนของพื้นที่ที่เราต้องการคือ แถวที่อยู่บนลบ 1 42 00:02:34,450 --> 00:02:39,310 >> ถ้าแถวบนสุดคือ 8, 8 ลบ 1 ช่วยให้เรามีช่องว่างที่เจ็ด 43 00:02:39,310 --> 00:02:43,770 แล้วเรามีห่วงที่จะพิมพ์ ออกในแต่ละพื้นที่หนึ่งในเวลา 44 00:02:43,770 --> 00:02:47,450 ดังนั้นเมื่อช่องว่างคือ 7 วงนี้ เจ็ดครั้งในการพิมพ์ 45 00:02:47,450 --> 00:02:50,300 ช่องว่างของแต่ละเจ็ด 46 00:02:50,300 --> 00:02:54,672 >> ดังนั้นตอนนี้เราต้องพิมพ์ hashes เหล่านี้ ที่ปลายสุดของปิรามิด 47 00:02:54,672 --> 00:02:57,930 ดังนั้นที่นี่เราต้องคำนวณ จำนวน hashes 48 00:02:57,930 --> 00:03:01,930 เราจะเห็นว่าเรากำลังทำอยู่สูง แถวลบบวก 2 49 00:03:01,930 --> 00:03:04,170 ดังนั้นเราจึงไม่ได้รับวิธีการที่ 50 00:03:04,170 --> 00:03:08,630 >> โปรดจำไว้ว่าด้านบนของปิรามิด แถวที่ 8 และความสูงคือ 8 51 00:03:08,630 --> 00:03:10,890 และเรายังคงพิมพ์สอง hashes 52 00:03:10,890 --> 00:03:15,420 ดังนั้นอย่างน้อยที่สุด, 8 ลบ 8 บวก 2 ช่วยให้เรามีคำตอบที่เหมาะสม 53 00:03:15,420 --> 00:03:19,170 แล้วพิจารณาด้านล่าง ของปิรามิดแถวที่ 1 54 00:03:19,170 --> 00:03:24,020 แถวความสูงลบจะทำให้เรามี 7 และ แล้วบวก 2 ทำให้เราเก้า hashes, 55 00:03:24,020 --> 00:03:26,620 ซึ่งตรงกับหมายเลข ของ hashes ที่เราพิมพ์ 56 00:03:26,620 --> 00:03:29,880 ดังนั้นนี่คือสูตรที่เราต้องการ ใช้ในการคำนวณจำนวน 57 00:03:29,880 --> 00:03:32,220 hashes ในแต่ละแถว 58 00:03:32,220 --> 00:03:36,020 >> โดยใช้หมายเลขที่เราแล้วมีอีก สำหรับวงคล้ายคลึงกับ 59 00:03:36,020 --> 00:03:41,270 สำหรับวงที่เรานำมาใช้สำหรับพื้นที่ที่ ว่าจำนวน iterates ครั้ง hashes 60 00:03:41,270 --> 00:03:43,720 พิมพ์กัญชาเดียวในแต่ละครั้ง 61 00:03:43,720 --> 00:03:46,010 ในแถวบนสุดที่จะ พิมพ์สอง hashes 62 00:03:46,010 --> 00:03:48,390 ในแถวด้านล่างที่จะ พิมพ์เก้า hashes 63 00:03:48,390 --> 00:03:52,610 และอื่น ๆ แต่ละแถวจะพิมพ์ทุก จำนวน hashes ในระหว่าง 64 00:03:52,610 --> 00:03:57,340 >> แล้วที่ท้ายสุดเราต้อง พิมพ์บรรทัดใหม่ของเราที่จะไปต่อไป 65 00:03:57,340 --> 00:03:59,400 แถวในปิรามิด 66 00:03:59,400 --> 00:04:03,070 สุดท้ายเราต้องพิมพ์บรรทัดใหม่ ในตอนท้ายของแถวเพื่อที่จะ 67 00:04:03,070 --> 00:04:06,260 ยังคงต่อไป แถวของพีระมิด 68 00:04:06,260 --> 00:04:08,980 และในตอนท้ายของโปรแกรมของเรา เรามีผลตอบแทน 0 69 00:04:08,980 --> 00:04:12,770 >> ตาม spec pset กลับ 0 ไม่จำเป็นอย่างเคร่งครัด 70 00:04:12,770 --> 00:04:15,710 แต่มันก็ไม่มีความหมายว่าหลักจะทำ 71 00:04:15,710 --> 00:04:17,610 ชื่อของฉันคือร็อบและนี่ก็เป็นมาริโอ 72 00:04:17,610 --> 00:04:22,470 >> [เล่นดนตรี] 73 00:04:22,470 --> 00:04:25,558