[მუსიკალური სათამაშო] ZAMYLA CHAN: გსურთ თუ საკმაოდ მიიღოს 10 მილიონი აშშ დოლარი ახლავე მიღება pennies ყოველი დღე თვის, სადაც ყოველი მომდევნო დღე, თქვენ იღებთ გაორმაგდება თანხის pennies თქვენ მიღებული დღით ადრე? In pennies, ჩვენ ვაპირებთ დაამტკიცოს, თუ რატომ უნდა აუცილებლად მიიღებს pennies. თქვენი სამუშაო დაწერა pennies.c-- პროგრამა, რომელიც პირველი სთხოვს შესახებ თუ როგორ მრავალი დღის განმავლობაში არსებობს თვის და შემდეგ სთხოვს რამდენი pennies შესახებ მიიღებს პირველ დღეს. პროგრამა უნდა მაშინ გამოთვლა თანხა, რომ მომხმარებელს ექნება დაგროვილი დასასრულს თვის და არიან იგი. ჩვენ შეიძლება დაარღვიოს ამ პროგრამის მდე შევიდა რამდენიმე ამოცანები. ჩვენ უნდა გამოიწვიოს for მრავალჯერადი შესახებ პორტები - დღე და თვის განმავლობაში, და pennies პირველ დღეს. ჩვენ უნდა შევინარჩუნოთ კვალს რა თანხა მომხმარებელს განახლება და ყოველ დღეს, გაორმაგდა ოდენობით pennies რომ იღებენ. და ბოლოს, ჩვენ ბეჭდვა მათი საბოლოო ჯამში, ამ დოლარს. მოდით დაძლევის შესახებ შეყვანის პირველი. მე ვაპირებ გახსნას apples.c, მოკლე პროგრამა, რომელიც ეხება ერთად პორტები და შედეგები. ზედა აქ, მე შედის რამდენიმე საქართველოს ბიბლიოთეკების, რომ მე უნდა - CS50 ბიბლიოთეკაში და სტანდარტის I / O ბიბლიოთეკა. I ბეჭდვა სწრაფი გამოყენებით printf ფუნქცია დან სტანდარტული I / O ბიბლიოთეკა. მაგრამ ფაქტობრივი რითაც საქართველოს შესახებ ხდება შემდეგი ხაზი ამ GetInt ფუნქცია CS50 ბიბლიოთეკა. GetInt იღებს შეიტანენ შესახებ და უზრუნველყოფს, რომ შეტანის არის მთელი რიცხვი. ასე რომ, შესანახად მომხმარებლის წვლილის შეტანა რიცხვი i, სხვაობა 1 დან i, შემდეგ კი ამობეჭდოთ ახალი მნიშვნელობით, თუ i. მას შემდეგ, რაც შედგენის apples.c გამოყენებით ბრძანება "მიიღოს ვაშლის," მე მაქვს შემსრულებელი ფაილი ვაშლი. მიმდინარე, რომ, მე შეტანის 1. პროგრამა მეუბნება, რომ მე მაქვს 0 ვაშლის დატოვა. ასე რომ, რომელიც მუშაობდა როგორც მოსალოდნელი იყო. მოდით აწარმოებს ამ ერთხელ და შეყვანის უარყოფითი 1. ახლა, რომელსაც უარყოფითი თანხის ვაშლის ნამდვილად არ აქვს აზრი, მაგრამ პროგრამა იღებს, რადგან უარყოფითი 1, ასევე, ეს არის მთელი რიცხვი. ახლა კი პროგრამა ან მონსტრის შიგნით პროგრამა ჭამს უარყოფითი ვაშლის და ახლა მე მაქვს უარყოფითი 2 ვაშლი. Hm, ისე, რომ ერთი გაკვეთილი - მიუხედავად იმისა, რომ GetInt ფუნქცია და დაკავშირებული ფუნქციები, ისევე როგორც GetFlow ან GetString მიიღოს უფლება მონაცემთა ტიპის, თქვენ უნდა დავრწმუნდეთ, რომ შეტანის აკეთებს აზრი თქვენი პროგრამა. In pennies, იგი ამას არ გააკეთებს, უბრალოდ ნაჩქარევი ამისთვის რიცხვი, თქვენ უნდა მიიღოს დარწმუნებული ვარ, რომ შესახებ პორტები რიცხვი რომ აზრი მოცემულ კონტექსტში. თვე შეიძლება მხოლოდ 28, 29, 30, 31 დღის განმავლობაში. ჩვენ გვინდა, რომ მუდმივად მოითხოვენ მოქმედებს მთელი რიცხვი. თუ ისინი შეტანის რიცხვი გარეთ ჩვენი მიღებული საზღვრები, ჩვენ შეგახსენებთ მათ ისევ და ისევ, სანამ არ გვაძლევს სწორი რიცხვი. შეგახსენებთ, "განმეორებითი სანამ" ბლოკის Scratch? შეგიძლიათ გააკეთოთ მსგავსი მშენებლობა in C გამოყენებით ", ხოლო" მარყუჟის ან "გაკეთება, ხოლო" ციკლი. ხოლო მარყუჟის სტრუქტურა მდგომარეობაში რომ უნდა შეიკრიბა ორგანოს მარყუჟის შეასრულოს. ეს უნდა გამოიყურებოდეს ცოტა მსგავსი, იმიტომ, რომ მდგომარეობა არის, ისევე, როგორც Scratch ბლოკები კუთხეების და გადადის ფრჩხილები საქართველოს ", ხოლო" ციკლი. ასე რომ, მდგომარეობა ამოწმებს მთელი რიცხვი ფარგლებში შესაბამისი ფარგლებს გარეთ. შეგიძლიათ გამოიწვიოს მთელი გამოყენებით GetInt და მაშინ შეასრულოს თქვენი "ხოლო" მარყუჟის, იმეორებს სწრაფი და ბეჭდვა მითითებები, ხოლო შეყვანის არ არის სწორი. კიდევ ერთი გზა, რათა უზრუნველყოს სწორი შესახებ შეყვანა არის გამოყენებით "გაკეთება, ხოლო" მარყუჟის რომელიც ძალიან გავს მიუხედავად იმისა, რომ ციკლი. "ამის გაკეთება, ხოლო" მარყუჟის გაუშვებს კოდი შიგნით ორგანო პირობა და შემდეგ ამოწმებს თუ არა მდგომარეობა შეხვდა თუ არა. ეს არის სასარგებლო მოპოვების შესახებ შეყვანა, რადგან თქვენ იცით, რომ თქვენ უნდა უბიძგონ მათ ერთხელ მაინც. თუ პირობა არ შესრულდა, პროგრამა განახორციელებს ხაზის თქვენი "გაკეთება, ხოლო" ციკლი. თუ პირობა დაკმაყოფილებულია, თუმცა, მარყუჟის განმეორდება "ამის გაკეთება, ხოლო" მარყუჟის for Validating შესახებ შეყვანის იქნება ასე გამოიყურება. ვაცხადებ ცვლადი N, GetInt და მაშინ ვიმეორებ, სანამ ო მოქმედებს. და ეს პროცესი, მე ავუხსენი, გამოყენებით მთელი რიცხვი მონაცემების ტიპის, რომელიც თქვენ გამოიყენოს დღეებში თვეში. მაგრამ ჩვენ ვიცით, რომ რიგი pennies იქნება წყობის up სწრაფად, რათა მოხდეს შესანახად უფრო დიდი ციფრები, გამოიყენოს მონაცემთა ტიპის LongLong, მაგრამ მახსოვს იგივე პრინციპი დადასტურება ვრცელდება. გასაოცარია, ასე რომ ერთხელ ჩვენ გვაქვს ორი მოქმედი პორტები from შესახებ - დღეების თვის და pennies პირველ დღეს - ჩვენ შეგვიძლია გადაადგილება გადატანა მომდევნო პროგრამის ნაწილი. პირველ დღეს, მომხმარებელს იწყება თუმცა ბევრი pennies ისინი მითითებული და თანხის pennies, რომ მათ მიიღოს მომდევნო დღეს გაორმაგდა. ასე რომ აზრი შენარჩუნება სიმღერა ამ ორი თანხები - რა თანხა მომხმარებელს აქვს და როგორ ბევრი pennies ისინი მიეცეს. ახლა, აკეთებს რაღაც 28 დან 31 დღის განმავლობაში არის განმეორებითი, მოდით გამოვიყენოთ "და" მარყუჟის to iterate მეტი დღით თვის, განახლებაზე საერთო და penny შეადგენს ყოველ ჯერზე. "მათთვის" მარყუჟის syntax შეიცავს შემდეგ - ინიციალიზაციისას, მდგომარეობაშია, და განახლება. შენი "და" მარყუჟის იქნება ინიციალიზაცია ცვლადი, როდესაც იგი პირველი შემოაღებს ციკლი. თუ პირობა დაკმაყოფილებულია, სხეულის საქართველოს მარყუჟის განახორციელებს. ამის შემდეგ განახლება განახორციელებს. თუ მდგომარეობა კვლავ შეხვდა, მარყუჟის განახორციელებს და განახლება და ვიმეორებ, რადგან თქვენი მდგომარეობა აფასებს ჭეშმარიტი. აი "და" მარყუჟის რომ ყოფს მთელი რიცხვი P 2 სულ 10 ჯერ. შენიშვნა, რა განაცხადა რიცხვი P გარეთ ჩემი "და" მარყუჟის, ისე, რომ მთელი რიცხვი შეიძლება იყოს ხელმისაწვდომი გარეთ "და" ციკლი. მას შემდეგ, რაც თვე გავიდა, დროა ვუთხრა შესახებ, თუ რა თანხა ისინი მიღებული. პერ სპეც, თქვენ უნდა ვუთხრათ შესახებ რამდენი დოლარი, არ რამდენი pennies, მათ აქვთ. მაგრამ ჯერჯერობით, თქვენ დაცული სიმღერა ტოტალური და pennies გამოყენებით LongLongs, რომლებიც მთელი ნომრები. არსებობს 100 pennies დოლარიდან 1, ასე რომ, თუ არ რიგი pennies არის მრავალჯერადი 100, თქვენ უნდა წარმოადგენს ათობითი ადგილებში. გაორმაგდა autotype საშუალებას თქვენ ამის გაკეთება. ასე როგორ უნდა გარდაქმნას წარმომადგენელი pennies to დოლარი? მოდით შევხედოთ pi.c. ეს პროგრამა იღებს LongLong big_pi და ყოფს მას 100,000 და ბეჭდავს შედეგი ხუთ ათობითი ადგილებში. თუ გვინდოდა არიან ოთხი ათობითი ადგილები, მაშინ ჩვენ შეგვიძლია მხოლოდ შეცვლის ამ ნომერი აქ. მოდით გადარჩენა, შეადგინოს pi და ამის შემდეგ დაინახავთ შედეგი, რომელსაც ჩვენ ველით, რომ იყოს 3,1415 - პირველი ხუთი ციფრი pi. ეს არ არის, თუმცა. და რატომ? ასევე, ვინაიდან big_pi არის LongLong, რაც მთელი რიცხვი, რომელიც არ შენარჩუნება სიმღერა decimals. მოდიფიკაცია უნდა მიიღოს არის გაყოფა. მე უნდა მიიღო მონაწილეობა, რათა ორმაგი აქ ადრე გამყოფი, რადგან ორადგილიანი ვერ ინარჩუნებს სიმღერა ათობითი ადგილებში. და მე ვაპირებ დაამატოთ ახალი ხაზი აქ უკეთესი გაფორმებით. აქ ჩვენ გვაქვს ეს - 3,1416. თქვენ შეამჩნევთ, რომ ეს ბეჭდავს 3.1416 ნაცვლად 3,1415 როგორც მოსალოდნელი იყო. ეს იმიტომ, რომ მას ტურად დროს დაყოფის პროცესი, განსხვავებით მხოლოდ truncating ღირებულება. ახლა თქვენ უნდა შეეძლოს ბეჭდვა საბოლოო ჯამში სწორად, რომელიც სრულდება პროგრამა. გილოცავთ. ჩემი სახელი Zamyla. და ეს იყო pennies. [მუსიკალური სათამაშო]