>> DAVID เจลัน: สมมติว่าเราต้องการที่จะเขียน โปรแกรมที่ขอให้ทุกคนใน
ห้องพักสำหรับอายุของพวกเขาและจากนั้นพิมพ์ ออกวิธีการเดิมที่คนเหล่านั้นจะได้รับการ
ปีนี้?
ตอนนี้เห็นได้ชัดว่าการคำนวณนี้ ปัญหาเป็นไปได้อย่างเป็นธรรม
ซื่อตรง
แต่คำถามที่น่าสนใจคือถ้าเรา ไม่ทราบล่วงหน้าว่าผู้คนจำนวนมาก
เป็นไปได้ในห้องนี้ว่า เราสามารถไปเกี่ยวกับการจัดเก็บ
ทุกวัยของพวกเขา
ดีลองมาดู
>> ขอเริ่มต้นด้วยการกระตุ้น ผู้ใช้ที่ผมเคยทำที่นี่สำหรับ
ผู้คนจำนวนมากในห้องพักโดยใช้ GetInt และห่วงในขณะที่ทำเพื่อ
ได้รับจำนวนเต็ม
สมมติว่าตอนนี้เราต้องการที่จะขอให้แต่ละเช่น คนที่อยู่ในห้องพักสำหรับอายุของพวกเขา
ดีสัญชาตญาณของฉันจะใช้ ห่วงทำที่แจ้ง แต่ฉันยัง
ต้องการที่จะเก็บ อายุของคนเหล่านั้น
และสัญชาตญาณแรกของฉันจะมี การใช้ตัวแปรเป็นครั้งแรก
อายุของบุคคลตัวแปรอื่น สำหรับอายุของคนที่สองของ
การจัดเรียงของตามสาย
อายุ int -
ดีขอเรียกว่า 1 สำหรับ เป็นคนแรก
int อายุ 2 คนที่สอง
int อายุ 3 สำหรับบุคคลที่สาม
>> แต่รอสักครู่นี้ไม่อาจจะ เส้นทางที่ดีที่สุดที่จะไปลง
เพราะผมไม่ทราบว่าในอนาคตของ การเขียนและรวบรวมโปรแกรมนี้ว่า
ผู้ใช้หลายคนที่มีกำลังจะเป็น
และนอกจากนี้ถ้ามีมากที่สุดเท่าที่ ผู้ใช้ 100, 100 ประกาศตัวแปร
การเรียงลำดับของการตั้งชื่ออย่างผิดปกติเช่นนี้ไม่ได้ รู้สึกเหมือนการออกแบบที่ดีที่สุด
>> ดีขอบคุณที่มีอยู่อีก ชนิดของตัวแปรที่เรียกว่าแถวที่
ช่วยให้เราสามารถเก็บหมายเลขของ ints ใด ๆ ภายในของมันแม้ว่าเราไม่ทราบ
เมื่อเขียนโปรแกรมของฉันกี่ ints เช่นที่เรากำลังจะต้อง
จึงขอย้อนกลับและลบเหล่านี้ หลาย ints และแทนที่จะแทนที่
กับหนึ่งในตัวแปรที่เรียกว่า พูดวัยพหูพจน์
แต่ขอเพิ่มเติมระบุในบรรทัดนี้ ของรหัสในวงเล็บว่าเรา
ต้องการ n ints
และดังนั้นเราจะเรียกรวม อ้างถึง ints เหล่านี้เป็นวัย
>> ตอนนี้ในเวลาเพียงสักครู่ฉันจะสามารถที่จะได้รับ ในแต่ละ ints ในอาร์เรย์นี้
ในทำนองเดียวกันโดยวิธีการวงเล็บเหลี่ยม สัญกรณ์เริ่มต้นที่ 0
เพื่อขอดำเนินการขณะนี้อยู่ในวงที่จะ แจ้งให้ผู้ใช้สำหรับทุกวัยของพวกเขา
สำหรับ int ฉันได้รับ 0
ฉันมีค่าน้อยกว่า N, ผู้คนจำนวนมาก ในห้องฉันบวกบวก
>> และขณะนี้อยู่ในวงนี้ขอบอกว่า อายุ printf จำนวนคนร้อยละฉัน
เป็นตัวยึดจุลภาค
และตอนนี้มากกว่าที่จะเริ่มนับจาก 0 ในโปรแกรมตัวเองให้เป็นที่
ฉันเพิ่มขึ้นอย่างน้อย 1 เพื่อให้ปกติ คนที่ใช้โปรแกรมนี้
ไม่ได้มีการนับเช่น นักวิทยาศาสตร์คอมพิวเตอร์อาจ
ตอนนี้ขอทำวัยวงเล็บผมจึง ระบุว่าอายุลำดับที่ i ในของเรา
อาร์เรย์ของว​​ัยเป็นไปได้ ค่าตอบแทนของ GetInt
>> ตอนนี้ห่วงด้านล่างนี้ให้ดำเนินการต่อไป จะคิดว่าบางเวลาผ่านไป
และตอนนี้ขอดำเนินการต่อไปในวงอื่น ที่จริงอายุทุกคนในห้อง
โดยหนึ่งในปี
ดังนั้นอีกครั้งที่ฉันได้รับ int 0 ผมน้อย กว่า N, จำนวนของผู้คนใน
ห้องพักผมบวกบวก
>> และตอนนี้ด้านในของวงนี้ขอบอกว่า printf ปีจากนี้จำนวนคน
ร้อยละฉันเป็นตัวยึดจะ เป็นร้อยละฉันก็เป็นอีกหนึ่ง
ตัวยึดปี
แล้วเสียบเข้าที่ ตัวยึดให้เป็นครั้งแรกบอกว่าฉันบวก
1 เพื่อให้อีกครั้งที่เราจะเริ่มนับ สำหรับผู้ใช้ตั้งแต่วันที่ 1
และจากนั้นให้เสียบอายุของบุคคลที่ ขณะที่ผมอายุวงเล็บบวก 1 จึง
ระบุการเดินทางได้รับอายุลำดับที่ i ในของเรา อาร์เรย์ของว​​ัยเพิ่ม 1 ไปแล้ว
แทรกผลรวมที่เป็นตัวยึดของเรา วงเล็บปิดอัฒภาค
>> ตอนนี้ขอรวบรวมโปรแกรมนี้กับการทำ วัยและให้ทำงานได้ด้วยจุด
เฉือนวัย
และคิดว่ามีเพียงสาม คนที่อยู่ในห้องและมีคนอยู่ 18
มีคน 19 คน 20
ดีในปีที่แต่ละคนเหล่านั้น เป็นไปได้ที่ 19, 20, และ 21,
ตามลำดับ