1 00:00:00,000 --> 00:00:11,960 2 00:00:11,960 --> 00:00:13,750 >> რობ Bowden: Hi, მე Rob. 3 00:00:13,750 --> 00:00:17,360 და როდესაც რომში, მოდით პროგრამა როგორც რომაელები გააკეთოს. 4 00:00:17,360 --> 00:00:22,280 ასე რომ, პირველი, რაც უნდა გავაკეთოთ, არის გამშვები დარწმუნდით შესახებ რეალურად შევიდა 5 00:00:22,280 --> 00:00:26,670 ნომერი, რომელიც ჩვენ გვინდა, რომ როტაცია ყოველ ხასიათი ბრძანებათა ზოლს. 6 00:00:26,670 --> 00:00:27,740 >> ასე რომ, ჩვენ შეამოწმოს. 7 00:00:27,740 --> 00:00:30,180 არის argc უდრის 2? 8 00:00:30,180 --> 00:00:34,190 თუ ეს არ არის, ეს ნიშნავს, რომ მომხმარებელს ან არ შესულხართ ნომერი 9 00:00:34,190 --> 00:00:37,770 ბრძანების ან ისინი შევიდნენ ძალიან ბევრი რამ ბრძანებათა ზოლს, რომელშიც 10 00:00:37,770 --> 00:00:40,560 თუ ჩვენ არ ვიცით, რა უნდა გავაკეთოთ, დანარჩენ რამ. 11 00:00:40,560 --> 00:00:45,750 ასე რომ, რადგან argc იყო ორი, ჩვენ შეგვიძლია გავაგრძელოთ დანარჩენი პროგრამა. 12 00:00:45,750 --> 00:00:49,610 >> ახლა, გვახსოვდეს, რომ argv 1 ყოველთვის სიმებიანი. 13 00:00:49,610 --> 00:00:52,490 მაგრამ ჩვენ გვინდა, რომ მკურნალობა, როგორც რიცხვი. 14 00:00:52,490 --> 00:00:57,550 ასე რომ, ჩვენ ვიყენებთ atoi ფუნქცია, რომ აღნიშნული p კომპლექტი სპეც გარდაქმნას 15 00:00:57,550 --> 00:01:02,330 სიმებიანი argv 1 რიცხვი, და ჩვენ ვინახავთ, რომ გასაღები. 16 00:01:02,330 --> 00:01:06,050 ჩვენ გვინდა დავრწმუნდეთ, რომ მთელი რომ შევიდა არ არის ნეგატიური. 17 00:01:06,050 --> 00:01:09,490 და თუ ეს იყო, ჩვენ გვინდა ბეჭდვა, რომ მომხმარებელს, რომ ისინი არ აძლევენ 18 00:01:09,490 --> 00:01:11,980 ამის გაკეთება, და დაბრუნდება. 19 00:01:11,980 --> 00:01:15,100 >> ასე რომ, ახლა ჩვენ სწორი ნომრის შესახებ. 20 00:01:15,100 --> 00:01:19,780 მაგრამ ჩვენ უნდა მიიღოს სიმებიანი საწყისი შესახებ, რომ ჩვენ გვინდა დაშიფვრა. 21 00:01:19,780 --> 00:01:25,340 ასე რომ, ჩვენ გამოყენებული უნდა გააკეთოს ხოლო loop და გამოიყენოთ მიიღოს string მიიღოს ამ string საწყისი 22 00:01:25,340 --> 00:01:29,190 შესახებ, და გააგრძელებს მიღების string სანამ ისინი რეალურად 23 00:01:29,190 --> 00:01:31,270 შეიყვანოთ სწორი string. 24 00:01:31,270 --> 00:01:34,400 >> მას შემდეგ, რაც ჩვენ გვაქვს, რომ სიმებიანი, ჩვენ შეიძლება ადამიანმა დაშიფვრა იგი. 25 00:01:34,400 --> 00:01:38,120 ასე რომ, ამ for loop აკეთებს რომ კოდირებით. 26 00:01:38,120 --> 00:01:43,250 გაითვალისწინეთ, რომ ჩვენ iterating ეხლა i უდრის 0 t ყველა გზა მდე i შეადგენს 27 00:01:43,250 --> 00:01:47,790 n, სადაც n განისაზღვრება, როგორც სიგრძეზე ჩვენი გზავნილი, სადაც გაგზავნა არის 28 00:01:47,790 --> 00:01:50,260 string რომ მომხმარებელს შევიდა. 29 00:01:50,260 --> 00:01:54,330 >> ასე რომ ჩვენ iterating ყველა სიმბოლოების string. 30 00:01:54,330 --> 00:01:59,740 და თუ ხასიათი ზედა, მაშინ ჩვენ ვაპირებთ გადაეტანა ის გამოყენებით ამ 31 00:01:59,740 --> 00:02:01,860 ფორმულა, რომელიც ჩვენ მისაღებად მეორე. 32 00:02:01,860 --> 00:02:05,260 და თუ იგი ამას, მაშინ ჩვენ გადაიტანოს ის გამოყენებით ეს არის 33 00:02:05,260 --> 00:02:07,290 ძალიან ჰგავს ფორმულა. 34 00:02:07,290 --> 00:02:10,850 და თუ ეს იყო, არც ზედა და არც ამას წერილი - მაგალითად, 35 00:02:10,850 --> 00:02:15,370 შეიძლება ნომერი ან სიმბოლო - მაშინ ჩვენ არ ვაპირებთ არაფრის გაკეთება. 36 00:02:15,370 --> 00:02:18,220 >> ასე რომ, რა არის ეს ფორმულები? 37 00:02:18,220 --> 00:02:22,090 ისე, როგორ უნდა გადაიტანოს ხასიათი? 38 00:02:22,090 --> 00:02:27,250 ჩვენ გვინდა, რომ მკურნალობა ხასიათი როგორც რაოდენობის 0. 39 00:02:27,250 --> 00:02:30,710 და გვინდა, რომ მკურნალობა ხასიათი B, როგორც ნომერ 1, და ა.შ.. 40 00:02:30,710 --> 00:02:35,170 ის zeroth და პირველი სიმბოლო ანბანი და ასე შემდეგ. 41 00:02:35,170 --> 00:02:42,900 >> ასე რომ აქ, გაგზავნა i minus უნდა მოგვცეს რიცხვითი ადგილი 42 00:02:42,900 --> 00:02:44,400 წერილი ანბანი. 43 00:02:44,400 --> 00:02:48,080 ასე რომ, თუ გაგზავნა i არის, ამ აპირებს მოგვცეს 0. 44 00:02:48,080 --> 00:02:52,880 ახლა, ჩვენ გვინდა დავამატოთ, რომ ნომერი, რომელიც მომხმარებელს სურს 45 00:02:52,880 --> 00:02:54,840 როტაცია წერილი. 46 00:02:54,840 --> 00:03:03,280 ასე რომ, თუ ისინი შევიდნენ 3, თუ გაგზავნა მე ვიყავი, ეს მოგვცემს 0 პლუს 47 00:03:03,280 --> 00:03:05,400 გასაღები მოგვცემს 3. 48 00:03:05,400 --> 00:03:09,450 >> ახლა, ჩვენ გავითვალისწინებთ მესამე ადგილი ანბანი. 49 00:03:09,450 --> 00:03:12,810 ჩვენ დავინახავთ, თუ რატომ გვჭირდება mod by num წერილებს მეორე. 50 00:03:12,810 --> 00:03:18,700 მაგრამ საბოლოოდ, ჩვენ გვინდა, რომ დაამატოთ შესახებ, რომ დასრულდება ერთხელ გადაიტანოს us დააბრუნებდა 51 00:03:18,700 --> 00:03:22,020 ASCII ღირებულებების ეს გმირები ნაცვლად რიცხობრივი ადგილები 52 00:03:22,020 --> 00:03:24,260 დამწერლობა ამ სიმბოლოს. 53 00:03:24,260 --> 00:03:26,580 >> ასე რომ, რატომ mod by num წერილებს? 54 00:03:26,580 --> 00:03:29,960 გახსოვდეთ, რომ ჩვენ გვინდა, რომ გადაიტანოთ გარშემო ბოლოდან ანბანი 55 00:03:29,960 --> 00:03:31,470 დაწყებული ანბანი. 56 00:03:31,470 --> 00:03:38,530 ასე რომ, თუ მომხმარებელს შევიდნენ Z, მაშინ subtracting რომ აპირებს 57 00:03:38,530 --> 00:03:40,520 გვაძლევს 25. 58 00:03:40,520 --> 00:03:44,800 და თუ გასაღები იყო 3, მაშინ ჩვენ ვაპირებთ აქვს 28. 59 00:03:44,800 --> 00:03:53,000 მაგრამ Z უნდა გადაიტანოთ გარშემო ABC, ასე 28 mod num წერილებს, რომელიც hash განსაზღვრული 60 00:03:53,000 --> 00:04:01,890 როგორც 26 უნდა მოსალოდნელია, აპირებს us 2, სადაც C არის მეორე წერილი 61 00:04:01,890 --> 00:04:05,880 ანბანი, თუ გახსოვთ, რომ არის zeroth წერილი ანბანი. 62 00:04:05,880 --> 00:04:09,210 >> ასე რომ, თუ რატომ გვჭირდება mod by num წერილები. 63 00:04:09,210 --> 00:04:13,540 ახლა, ჩვენ უნდა გავაკეთოთ იგივე ზუსტი რამ განთავსების ამას წერილები, გარდა იმისა, 64 00:04:13,540 --> 00:04:17,240 მახსოვს, როდესაც ჩვენ საქმე გვაქვს ამას წერილები, მათ აქვთ სხვადასხვა 65 00:04:17,240 --> 00:04:18,579 ASCII ღირებულებებს. 66 00:04:18,579 --> 00:04:24,550 და ამიტომ ჩვენ უნდა სხვაობა და დაამატოთ გადაიტანოს ეს ქვემოთ ამას 67 00:04:24,550 --> 00:04:30,020 ASCII ღირებულებები და შემდეგ უკან, ორიგინალური ამას ASCII ღირებულებებს. 68 00:04:30,020 --> 00:04:33,140 >> და ბოლოს, რომ ყველაფერს მოგვცემს ჩვენი დაშიფრული გაგზავნა. 69 00:04:33,140 --> 00:04:37,780 და ბოლოს, ჩვენ უბრალოდ ამობეჭდოთ რომ გაგზავნა, და რომ არის ის. 70 00:04:37,780 --> 00:04:39,875 ჩემი სახელი არის რობ, და იყო Caesar. 71 00:04:39,875 --> 00:04:49,856