1 00:00:00,000 --> 00:00:11,960 2 00:00:11,960 --> 00:00:13,750 >> ROB Bowden: Hi, saya Rob. 3 00:00:13,750 --> 00:00:17,360 Dan apabila di Rom, biarkan program ini sebagai orang-orang Rom lakukan. 4 00:00:17,360 --> 00:00:22,280 Jadi, perkara pertama yang perlu kita lakukan adalah cek memastikan pengguna sebenarnya memasuki 5 00:00:22,280 --> 00:00:26,670 nombor yang kita mahu berputar setiap watak oleh pada baris arahan. 6 00:00:26,670 --> 00:00:27,740 >> Jadi, kita lihat. 7 00:00:27,740 --> 00:00:30,180 Adalah argc sama dengan 2? 8 00:00:30,180 --> 00:00:34,190 Jika tidak, itu bermakna pengguna sama ada tidak memasukkan nombor yang di 9 00:00:34,190 --> 00:00:37,770 baris arahan atau mereka masuk terlalu banyak perkara pada baris arahan, di mana 10 00:00:37,770 --> 00:00:40,560 kes kita tidak tahu apa yang perlu dilakukan dengan seluruh perkara. 11 00:00:40,560 --> 00:00:45,750 Jadi, selagi argc adalah dua, kita boleh terus dengan seluruh program ini. 12 00:00:45,750 --> 00:00:49,610 >> Sekarang, ingat bahawa argv 1 sentiasa rentetan. 13 00:00:49,610 --> 00:00:52,490 Tetapi kita mahu merawat ia sebagai integer. 14 00:00:52,490 --> 00:00:57,550 Oleh itu, kami menggunakan fungsi atoi yang itulah p disebut set spec untuk menukar 15 00:00:57,550 --> 00:01:02,330 tali argv 1 untuk integer, dan kami menyimpan bahawa dalam utama. 16 00:01:02,330 --> 00:01:06,050 Kami ingin memastikan bahawa integer yang telah dimasukkan bukan negatif. 17 00:01:06,050 --> 00:01:09,490 Dan jika ia adalah, kita ingin mencetak bahawa untuk pengguna bahawa mereka tidak dibenarkan 18 00:01:09,490 --> 00:01:11,980 untuk melakukannya, dan kembali. 19 00:01:11,980 --> 00:01:15,100 >> Jadi, kita mempunyai yang sah nombor dari pengguna. 20 00:01:15,100 --> 00:01:19,780 Tetapi kita perlu untuk mendapatkan rentetan dari pengguna yang kami mahu menyulitkan. 21 00:01:19,780 --> 00:01:25,340 Oleh itu, kita telah lakukan-manakala gelung dan menggunakan mendapatkan tali untuk mendapatkan tali ini dari 22 00:01:25,340 --> 00:01:29,190 pengguna, dan terus mendapatkan tali sehingga mereka benar-benar 23 00:01:29,190 --> 00:01:31,270 memasukkan string yang sah. 24 00:01:31,270 --> 00:01:34,400 >> Apabila kita mempunyai tali itu, kami boleh pergi untuk menyulitkan ia. 25 00:01:34,400 --> 00:01:38,120 Jadi, ini bagi gelung adalah melakukan penyulitan itu. 26 00:01:38,120 --> 00:01:43,250 Perhatikan bahawa kita iterating dari i sama dengan 0 t semua jalan sehingga i setaraf 27 00:01:43,250 --> 00:01:47,790 n, di mana n ditakrifkan sebagai panjang mesej kami, di mana mesej yang 28 00:01:47,790 --> 00:01:50,260 tali yang pengguna yang dimasukkan. 29 00:01:50,260 --> 00:01:54,330 >> Jadi kita iterating ke atas semua watak-watak dalam string. 30 00:01:54,330 --> 00:01:59,740 Dan jika watak adalah huruf besar, maka kita akan beralih dengan menggunakan ini 31 00:01:59,740 --> 00:02:01,860 formula, yang kita akan mendapatkan dalam satu saat. 32 00:02:01,860 --> 00:02:05,260 Dan jika ia huruf kecil, maka kami akan beralih dengan menggunakan ini 33 00:02:05,260 --> 00:02:07,290 formula yang sama. 34 00:02:07,290 --> 00:02:10,850 Dan jika ia tidak dalam huruf besar ataupun huruf kecil - sebagai contoh, ia 35 00:02:10,850 --> 00:02:15,370 boleh menjadi nombor atau simbol - maka kita tidak akan berbuat apa-apa kepadanya. 36 00:02:15,370 --> 00:02:18,220 >> Jadi, apakah formula ini? 37 00:02:18,220 --> 00:02:22,090 Nah, bagaimana kita beralih watak A? 38 00:02:22,090 --> 00:02:27,250 Kami mahu merawat watak Satu nombor 0. 39 00:02:27,250 --> 00:02:30,710 Dan kita mahu merawat watak B sebagai nombor 1, dan sebagainya. 40 00:02:30,710 --> 00:02:35,170 Ia sifar dan pertama watak-watak abjad dan sebagainya. 41 00:02:35,170 --> 00:02:42,900 >> Jadi di sini, mesej i tolak A sepatutnya untuk memberi kita tempat yang bernombor daripada 42 00:02:42,900 --> 00:02:44,400 surat dalam abjad. 43 00:02:44,400 --> 00:02:48,080 Jadi, jika mesej i ialah A, ini akan memberi kita 0. 44 00:02:48,080 --> 00:02:52,880 Sekarang, kita mahu menambah bahawa bilangan pengguna yang mahu 45 00:02:52,880 --> 00:02:54,840 berputar surat oleh. 46 00:02:54,840 --> 00:03:03,280 Jadi, jika mereka masuk 3, maka jika mesej i adalah A, ini akan memberi kita 0 dan ditambah 47 00:03:03,280 --> 00:03:05,400 utama akan memberikan kita 3. 48 00:03:05,400 --> 00:03:09,450 >> Jadi sekarang, kita sedang mempertimbangkan tempat ketiga dalam abjad. 49 00:03:09,450 --> 00:03:12,810 Kami akan melihat mengapa kita perlu arena oleh surat num dalam satu saat. 50 00:03:12,810 --> 00:03:18,700 Tetapi akhirnya, kita mahu menambah kepada berakhir A sekali lagi untuk beralih kita kembali ke dalam 51 00:03:18,700 --> 00:03:22,020 Nilai ASCII bagi aksara ini dan bukan satu tempat yang berangka dalam 52 00:03:22,020 --> 00:03:24,260 abjad watak-watak ini. 53 00:03:24,260 --> 00:03:26,580 >> Jadi, mengapa kita arena oleh surat num? 54 00:03:26,580 --> 00:03:29,960 Ingatlah bahawa kita mahu untuk membalut di sekitar dari akhir abjad itu kepada 55 00:03:29,960 --> 00:03:31,470 bermula abjad. 56 00:03:31,470 --> 00:03:38,530 Jadi, jika pengguna telah memasuki Z, maka menolak A dari yang akan 57 00:03:38,530 --> 00:03:40,520 memberikan kita 25. 58 00:03:40,520 --> 00:03:44,800 Dan jika kunci adalah 3, maka kita akan mempunyai 28. 59 00:03:44,800 --> 00:03:53,000 Tetapi Z perlu membalut sekitar untuk ABC, jadi 28 surat num arena, yang hash ditakrifkan 60 00:03:53,000 --> 00:04:01,890 sebagai 26 yang dijangka, yang akan memberi kita 2, di mana C adalah huruf kedua 61 00:04:01,890 --> 00:04:05,880 abjad, jika anda ingat bahawa adalah surat sifar yang abjad. 62 00:04:05,880 --> 00:04:09,210 >> Jadi itulah sebabnya kita perlu arena oleh surat num. 63 00:04:09,210 --> 00:04:13,540 Sekarang, kita perlu melakukan perkara yang sama tepat untuk huruf kecil, kecuali 64 00:04:13,540 --> 00:04:17,240 ingat bahawa apabila kita berurusan dengan huruf kecil, mereka telah berbeza 65 00:04:17,240 --> 00:04:18,579 Nilai ASCII. 66 00:04:18,579 --> 00:04:24,550 Dan dengan itu kita perlu tolak dan menambah pada untuk beralih ke bawah dari huruf kecil yang 67 00:04:24,550 --> 00:04:30,020 Nilai ASCII dan kemudian kembali ke nilai ASCII huruf kecil asal. 68 00:04:30,020 --> 00:04:33,140 >> Dan akhirnya, yang akan memberi kita mesej yang disulitkan kami. 69 00:04:33,140 --> 00:04:37,780 Dan pada akhirnya, kita hanya mencetak mesej itu, dan itu sahaja. 70 00:04:37,780 --> 00:04:39,875 Nama saya Rob, dan Caesar. 71 00:04:39,875 --> 00:04:49,856