สวัสดีและยินดีต้อนรับ. ในการสาธิตนี้ ฉันต้องการเสนอวิธีแก้ปัญหาสำหรับความท้าทายสุดท้ายของเรา
ดังนั้นฉันจึงต้องการเสนอวิธีแก้ปัญหาสำหรับโปรแกรม
c ของเราซึ่งใช้เวลาหลายนาทีแล้วแปลงเป็นค่าที่แสดงในหน่วยวันและจำนวนปี
ไม่จำเป็นต้องเป็นโปรแกรมที่ใช้งานได้จริง
แต่จะแสดงแนวคิดหลักสองสามข้อที่พวกคุณสามารถเรียนรู้ได้โดยใช้ตัวดำเนินการเลขคณิตเป็นหลัก โดยรับอินพุตจากแป้นพิมพ์
และคุณต้องใช้ตัวดำเนินการนักแสดงสำหรับสิ่งนี้ ซึ่งฉันอาจไม่ได้กล่าวถึงในการท้าทายนี้
แต่หวังว่าพวกคุณคงคิดออก เพราะเมื่อคุณทำ --
ไม่จำเป็นต้องใช้ตัวดำเนินการนักแสดงที่คุณไม่ต้องการ ตอนแรกฉันคิดว่าวิธีแก้ปัญหาจำเป็นต้องมีตัวดำเนินการโมดูลัส
แต่ถ้าคุณทำโมดูลัส
ฉันคิดแค่ 2 int
มาเริ่มกันเลยดีกว่า มาเริ่มบล็อกเย็นกันเถอะ และสร้างโปรเจ็กต์กัน
ผ่านสิ่งพื้นฐานที่เราทำได้ดีในตอนนี้
ผมจะไม่ลงรายละเอียดนะครับ รับชมได้เลยครับ
แต่ฉันกำลังจะสร้างโปรเจ็กต์ใหม่ มันจะเป็นโปรเจ็กต์คอนโซล และต้องเป็นซีอย่างแน่นอน
และฉันจะตั้งชื่อโปรเจ็กต์นี้อีกครั้ง คุณต้องการได้ชื่อที่มีความหมายดีๆ
เสมอ
ฉันจะบอกว่าการแปลงนาที
ดังนั้นมันจึงเหมือนกับแอปแปลงนาที
และตอนนี้ฉันกำลังจะแก้ไขหลักของเรา ไฟล์ค
มากำจัดสิ่งนี้กันเถอะ และเราจะเก็บคำสั่ง include ไว้
และเช่นเคย คุณจะต้องการแสดงความคิดเห็น อย่าลืมเพิ่มความคิดเห็น
เพียงเพราะฉันไม่ทำ ไม่ได้หมายความว่าคุณไม่ควรทำ
เป็นแนวปฏิบัติมาตรฐาน เป็นเพียงเพื่อประสิทธิภาพและเวลาเท่านั้น ฉันละทิ้งมันไป
สิ่งที่ฉันชอบทำที่ด้านบนสุดของโปรแกรมคือการล้างตัวแปรที่ฉันต้องใช้แล้วเริ่มต้นใหม่
มาเริ่มกันเลยดีกว่า ฉันจะสร้างตัวแปรจำนวนเต็มสำหรับนาทีที่ผู้ใช้ป้อน
และฉันจะเรียกนาทีนั้นที่ป้อน ฉันจะเริ่มต้นมันเป็น 0
ฉันจะสร้างสองเท่าสำหรับปี อันที่จริงอาจใช้เวลานานเช่นกัน
ขึ้นอยู่กับว่าคุณต้องการคำนวณมากน้อยเพียงใด เพราะจริงๆ แล้วคุณสามารถเป็นจำนวนจุดทศนิยมที่ค่อนข้างใหญ่ได้
นานๆทีอาจเป็นทางเลือกที่ดีกว่า แต่ตอนนี้ฉันจะใช้ดับเบิ้ล
เริ่มต้น 0 นั้น 0 และวันเท่ากับ
0 นั้น 0.
และตอนนี้ฉันต้องการรับข้อมูลจากผู้ใช้
ในการรับข้อมูลจากผู้ใช้ สิ่งแรกที่คุณต้องทำคือคุณต้องบอกให้ผู้ใช้ป้อนอินพุต
ดังนั้นฉันจะแสดงผลบางอย่างโดยบอกว่าโปรดป้อนจำนวนนาที
และมันจะใส่เครื่องหมายทวิภาคและช่องว่าง แล้วลงท้ายด้วยเครื่องหมายอัฒภาค
ต่อไปคือฉันจะได้รับข้อมูลเข้าจริงๆ
นี่คือที่ที่คุณอาจบอกว่ารับข้อมูลจากผู้ใช้เป็นความคิดเห็น
เราจะรับข้อมูลจากผู้ใช้ได้อย่างไร เราใช้ฟังก์ชัน scanf
จำสิ่งนี้ไว้ได้ไม่นาน แค่พูดว่า scanf คล้ายกับ printf
และพารามิเตอร์แรกแม้ว่าอาร์กิวเมนต์คือประเภทของข้อมูลที่คุณต้องการอ่านเพื่อแปลง
จำไว้ว่าทุกอย่างจะถูกอ่านเป็นสตริงหรือข้อความ
ดังนั้นคุณต้องแปลงเป็นวิธีการจัดเก็บ
คุณจึงใส่เครื่องหมายคำพูดคู่เหมือนกับ printf คุณใช้ตัวระบุรูปแบบ
ที่นี่. ฉันจะบอกว่าฉันต้องการเก็บมันเป็นทศนิยม
ฉันจะบอกว่า d เป็นจำนวนเต็ม ไม่ใช่จำนวนเต็มทศนิยม
ขอโทษนะ
แล้วอาร์กิวเมนต์ต่อไปคือตัวแปรที่คุณจะเก็บไว้
ฉันจะเก็บมันในนาทีที่ป้อน
ทีนี้ จำไว้ว่า scan f และฉันเพิ่งสแกนไปที่นั่น
scanf สำหรับข้อมูลทุกประเภทยกเว้นสตริง คุณต้องระบุเครื่องหมายและ
ผู้ประกอบการย่อยที่อยู่
เราก็เลยต้องจัดให้. เรากำลังอ่านเป็นตัวเลขอยู่เลยต้องทำเครื่องหมายแอมเพอร์แซนด์
จำได้ว่าจากการบรรยาย จากนั้นฉันต้องการเพิ่มสิ่งนี้ด้วยอัฒภาค
และ ณ จุดนี้ คุณควรทดสอบ
ตรวจสอบให้แน่ใจว่าคุณได้รับข้อมูลจากผู้ใช้ และคุณอาจมี printf เพื่อแสดงสิ่งที่คุณป้อน
แต่เนื่องจากฉันรู้ว่าสิ่งนี้ถูกต้อง ฉันจะไปต่อ
ฉันจะต้องทำการคำนวณในบรรทัดที่ 15
โดยหลักแล้ว ฉันต้องการเก็บนาทีเป็นปี
สิ่งที่ผมจะทำคือสร้างตัวแปรอีกตัวหนึ่งที่ผมลืมไปว่าตัวไหนจะเก็บนาทีของปี
เพราะมันจะทำให้ง่ายขึ้น นี่ฉันแค่จะบอกว่านาทีและปี
คุณจะสังเกตเห็นว่าแบบแผนที่ฉันใช้สำหรับการตั้งชื่อตัวแปรที่นี่คือ camelCase
เป็นที่ที่คุณมีตัวพิมพ์เล็กสำหรับวอร์ดแรกและทุกคำหลังจากนั้นคุณจะพิมพ์ใหญ่อักขระตัวแรก
ฉันไม่ได้อธิบายก่อนหน้านี้ดังนั้นฉันคิดว่าฉันจะพูดถึงมัน
การคำนวณครั้งแรกที่ฉันต้องการกำหนดนาทีและปีของฉันเพราะนี่คือวิธีที่ฉันจะคำนวณปีของฉัน
นาทีและปีจะเท่ากับ
-- และฉันชอบใช้วงเล็บเพื่อจัดระเบียบ ดังนั้นทุกอย่างชัดเจน มันทำให้อ่านง่ายขึ้น
มันจะเป็น 60 เพราะ 60 คือจำนวนนาทีในหนึ่งชั่วโมง
และผมจะคูณมันด้วยจำนวนชั่วโมงในหนึ่งวันซึ่งก็คือ 24
ผมจะคูณมันด้วยจำนวนวันในหนึ่งปี
ซึ่งก็คือ 365
ดังนั้นการคำนวณนี้จะให้ค่าแก่ฉันว่าในหนึ่งปีมีกี่นาที
และตอนนี้ฉันสามารถใช้สิ่งนี้เพื่อคำนวณปีของฉันได้
ในบรรทัดถัดไป ผมบอกได้ว่าปีเท่ากัน -- เราจึงใช้ตัวดำเนินการมอบหมายตรงนี้
เท่ากับ
แล้วสิ่งที่เราทำในวงเล็บในบรรทัดที่ 16 คือ เราใช้ดอกจันซึ่งเป็นตัวคูณ
สวยเนี๊ยบเลย
ปีจะเท่ากับ -- และอีกครั้ง ฉันต้องการใช้วงเล็บ
นาทีที่ป้อนซึ่งทำโดยผู้ใช้หารด้วยนาทีในปี
ดังนั้นหากคุณป้อน 5,000 นาที และมี 20000 นาทีในหนึ่งปี
5000 หารด้วย 20000 จะทำให้คุณมีกี่ปีที่จะได้
0 คะแนน
ในการคำนวณวัน
ตรงนี้ ผมจะบอกว่านาทีที่ป้อนหารด้วย
60 และ 60 0 เพราะมันมี
60 นาทีในหนึ่งชั่วโมง
แล้วพอผมมีชั่วโมง ผมก็หารมันด้วยจำนวนวันได้
ซึ่งก็คือ 24 0.
และฉันสามารถใส่สิ่งนี้ในการคำนวณอื่นได้หากต้องการ
แต่อีกครั้ง ฉันต้องการให้แน่ใจว่าเราทำสิ่งนี้ในลำดับที่ถูกต้อง
อันดับแรก ผมจะหารนาที enter หารด้วย 60
คุณไม่ต้องกังวลเกี่ยวกับเรื่องนี้เพราะเรากำลังทำการหารที่นี่
ดังนั้นการเชื่อมโยงจะเรียงจากซ้ายไปขวา และฉันไม่ต้องการวงเล็บเหล่านี้
แต่ฉันชอบใส่วงเล็บเสมอเพราะมันทำให้อ่านง่ายขึ้น
มาบวกอันสุดท้ายกัน
นั่นเป็นสิ่งที่ซ้ำซ้อน ฉันไม่ต้องการแม้แต่ที่นี่ เลยปล่อยไว้แต่อันแรก
และนี่ควรแสดงวันของเรา
ตอนนี้ฉันได้คำนวณและใช้โอเปอเรเตอร์บางส่วนแล้ว
ฉันต้องการทำ printf เพื่อพิมพ์ข้อมูลของฉัน
ฉันจะบอกว่าพิมพ์นาทีก่อน เปอร์เซ็นต์
d นาทีคือประมาณ
เปอร์เซ็นต์ f ปี และ เปอร์เซ็นต์ f วัน
แล้วฉันจะเพิ่มการป้อนบรรทัด
เรากำลังใช้ printf เพื่อแสดงผลลัพธ์ของตัวแปร และสัญลักษณ์เปอร์เซ็นต์จะจดจำตัวระบุมาร์กอัปของเรา
สิ่งแรกที่ฉันต้องการจะพิมพ์ออกมาคือนาที ดังนั้นฉันต้องใส่นาทีหลังจากเครื่องหมายจุลภาคแรกเมื่อป้อน
อันที่สองคือปี ฉันอยากจะบอกว่าปี เพราะนั่นคือเปอร์เซ็นต์ของปี
และวันที่สามคือวันแบบนั้น
ตอนนี้ฉันควรคอมไพล์และรัน และพวกเขาควรทำการแปลงให้ฉัน
ดังนั้นไปข้างหน้าและสร้าง ฉันไม่มีตอนเช้า ไม่มีข้อผิดพลาด
มาวิ่งกันเถอะ ฉันไม่รู้ด้วยซ้ำว่าในหนึ่งปีมีกี่นาที
ดังนั้นฉันไม่แน่ใจว่าจะทดสอบสิ่งนี้อย่างไร
แต่ให้เวลา 5,000 นาทีเพื่อเริ่มต้น
เมื่อฉันรันโปรแกรม มันขอให้ฉันป้อนจำนวนนาที ฉันจะใส่ 5,000
และถ้าคุณไม่ใส่ตัวเลข คุณอาจมีปัญหาเพราะคุณกำลังแปลงเป็นตัวเลขในฟังก์ชัน
scanf ของคุณ
ฉันกดย้อนกลับ แสดงว่า 5,000 นาทีเป็น 0
โดยประมาณ 009513
ปี และ 3. 47222 วัน ซึ่งดูสมเหตุสมผลเพราะว่าชั่วโมงละ
60 นาทีคูณ 24 จะเท่ากับ 2400 หรือประมาณนั้นในหนึ่งวัน ดังนั้น 2400 และ 2400 ไม่ใช่ 60 ครั้ง
ขอโทษด้วย
60 คูณ 24 จะเท่ากับ 1200.
ดังนั้น 1200 ไปหาร 5000 ได้กี่ครั้งในแต่ละวันน่าจะประมาณ
3 4 แถวๆนั้น
ประมาณนี้ดูจะถูกต้องแล้ว
ดังนั้นคุณสามารถเรียกใช้ได้หลายครั้ง ใส่ตัวเลขขนาดใหญ่บางอย่างที่คุณจะสังเกตเห็น
เราเก็บแค่สองเท่าที่นี่ ดังนั้น หากคุณเรียกใช้และพยายามใส่ตัวเลขที่มากเกินไป
เช่น 600 พันล้านหรืออะไรบางอย่าง คุณอาจเข้าใจผิด
-- ดังนั้นคุณอาจมีข้อผิดพลาดที่นี่
นี่กำลังแสดงให้คุณเห็นถึงปัญหาประเภทข้อมูล
เลยเก็บเข้า int Int มีขนาดเพียง 8 ไบต์ ฉันป้อนจำนวนมากนี้
ที่ไม่สามารถเก็บไว้ในนั้นได้ เมื่อฉันพิมพ์ออกมา มันพิมพ์ด้วยตัวเลขที่ต่างไปจากเดิมอย่างสิ้นเชิง
184298154
นั่นเป็นเพราะว่าสิ่งที่ฉันเข้าไปนั้นใหญ่กว่า int
ดังนั้น คุณอาจต้องการพิจารณาว่าคุณต้องการให้โปรแกรมนี้แม่นยำยิ่งขึ้นหรือไม่
และคุณต้องการป้อนตัวเลขที่มากขึ้นเพื่อเปลี่ยนประเภทข้อมูลบางประเภท เปลี่ยน
int เป็น double หรือแม้แต่ double เป็น long
นี่แสดงว่า 350 ปี 127000 วันหรือมากกว่านั้น
แอปแปลงเล็ก ๆ ที่ดีที่พยายามทำให้คุณเข้าใจประเภทข้อมูลและตัวดำเนินการอีกครั้ง
เราอาจมีแอปแปลงต่างๆ มากมาย แอปดีๆ อีกแอปหนึ่งที่คุณต้องการเขียนเพื่อฝึกฝนเพิ่มเติมคือแอปฟาเรนไฮต์ถึงเซลเซียส
เขียนแอพที่อนุญาตให้ผู้ใช้ป้อนฟาเรนไฮต์แล้วแปลงเป็นเซลเซียส
ฉันหมายถึงมีสถานการณ์ต่างๆ มากมายที่คุณคิดขึ้นมา แต่จะบังคับให้คุณใช้โอเปอเรเตอร์
และเรายังสามารถทำแคสติ้งที่นี่ได้ถ้าเราต้องการ
ถ้าเราไม่ชอบที่วันนั้นแม่นยำเกินไปและบางทีเราอาจต้องการเปลี่ยนคู่เป็น
int
และเราต้องการทำให้มันแม่นยำน้อยลงเล็กน้อย เราสามารถพูดได้ว่าโยนสิ่งนี้ไปที่มันโดยใส่วงเล็บแล้วทำการ
int
และนี่จะใช้ตัวเลขนั้นเป็นเวลาหลายวัน
และถ้าเป็นทศนิยม 3 549 หรืออะไรก็ตาม มันจะแปลงเป็น 3
อาจจะดีกว่าสำหรับผู้ใช้ ขึ้นอยู่กับคุณ
แต่ขอเก็บไว้เป็นสองเท่า
แต่นั่นเป็นวิธีที่คุณเรียนรู้ คุณลองใช้โปรแกรม ลองใช้สถานการณ์ต่างๆ ลองป้อนข้อมูลอื่น
ตรวจสอบให้แน่ใจว่าทุกอย่างถูกต้อง ขอขอบคุณ.