Vitdom Skrivet 5 Juni 2008 Rapport Dela Skrivet 5 Juni 2008 (redigerat) Jag påbörjade just ett krypterings program. Allting är klart men den vill inte bete sig som jag vill att den ska. string encryption_engine(int method, int mode, string text) { switch (method) { case 1: // ROT47 for(int i = 0; i < text.size(); i++) if(text[i] >= '!' && text[i] <= '~') { text[i] += 47; if(text[i] > '~') text[i] -= 94; } break; } return text; } Det är meningen att den ska flytta fram varje tecken 47 steg inom ASCIIs !(33) till ~(126) alfabet, och om den kommer utanför det(126+) drar den av 94 för att få tillbaks den till det normala alfabetet. Jag har redan kontrollerat så att ASCII tabellen stämmer med min dator: ! = 33 " = 34 # = 35 $ = 36 % = 37 & = 38 ' = 39 ( = 40 ) = 41 * = 42 + = 43 , = 44 - = 45 . = 46 / = 47 0 = 48 1 = 49 2 = 50 3 = 51 4 = 52 5 = 53 6 = 54 7 = 55 8 = 56 9 = 57 : = 58 ; = 59 < = 60 = = 61 > = 62 ? = 63 @ = 64 A = 65 B = 66 C = 67 D = 68 E = 69 F = 70 G = 71 H = 72 I = 73 J = 74 K = 75 L = 76 M = 77 N = 78 O = 79 P = 80 Q = 81 R = 82 S = 83 T = 84 U = 85 V = 86 W = 87 X = 88 Y = 89 Z = 90 [ = 91 \ = 92 ] = 93 ^ = 94 _ = 95 ` = 96 a = 97 b = 98 c = 99 d = 100 e = 101 f = 102 g = 103 h = 104 i = 105 j = 106 k = 107 l = 108 m = 109 n = 110 o = 111 p = 112 q = 113 r = 114 s = 115 t = 116 u = 117 v = 118 w = 119 x = 120 y = 121 z = 122 { = 123 | = 124 } = 125 ~ = 126 Exempel på körning av mitt program: Encrypter v1.0 Programmed with C++ by Vitdom Instructions: Select encryption method. Menu: 0. Exit. 1. ROT47. Choise: 1 Method: ROT47 Menu: 1. Encrypt. 2. Decrypt. Choise: 1 Text: hej Your encrypted text: ��� Instructions: Select encryption method. Menu: 0. Exit. 1. ROT47. Choise: 0 Men när jag skriver in ! så skriver den ut P, det den ska skriva ut. Men när den passerar 126 gränsen verkar det som att det händer något konstigt, typ som avdragnings satsen inte körs. Jag en idé. Eftersom en tecken variabel(char, vet inte hur det är med string men det fungerar ju, :P) bara kan hantera låga värden, skapar jag en int variabel som man kan hålla beräkningarna som kan hantera större värden, sen när beräkningarna är klara tilldelar man tecken variabeln den nya teckenkoden! :D Ny kod: string encryption_engine(int method, int mode, string text) { int tmpvalue; switch (method) { case 1: // ROT47 for(int i = 0; i < text.size(); i++) if(text[i] >= '!' && text[i] <= '~') { tmpvalue = text[i] + 47; if(tmpvalue > '~') tmpvalue -= 94; text[i] = tmpvalue; } break; } return text; } :P Nu fungerar det. Redigerat 16 Juni 2008 av Vitdom Citera Länk till kommentar Dela på andra sajter More sharing options...
TecWizard Skrivet 16 Juni 2008 Rapport Dela Skrivet 16 Juni 2008 Snyggt du jobbat!!! Det är som f*n att du redan kan programmera bra medan jag inte kan. Jag måste träna mer, har mycket kvar att lära... Citera Länk till kommentar Dela på andra sajter More sharing options...
Rekommendera inlägg
Gå med i konversationen
Du kan skriva nu och registrera dig senare. Om du har ett konto, logga in nu för att posta med ditt konto.