Ich habe eine Caesar-Chiffre codiert, die in den meisten Tests funktioniert, aber in einigen Fällen fehlschlägt. Mehr zu den Testdetails sind https://www.hackerrank.com/challenges/caesar-cipher-1Caesar Cipher Code Fehler
Grundinfo: Die Verschlüsselung verschlüsselt nur Buchstaben, Symbole usw. bleiben unverschlüsselt.
schlägt auf diesen Fall:
90
!m-rB`-oN!.W`cLAcVbN/CqSoolII!SImji.!w/`Xu`uZa1TWPRq`uRBtok`xPT`lL-zPTc.BSRIhu..-!.!tcl!-U
62
dem 90 n (Zeichen im String) ist, zweite Polygonzugs in Array s, und 62 ist k (Menge der Brief Rotationen)
Einsicht in der Fehler meines Codes sehr
geschätzt-Code wird:
int main(){
int n;
scanf("%d",&n);
char* s = (char *)malloc(10240 * sizeof(char));
scanf("%s",s);
int k;
scanf("%d",&k);
if (k>26) {
k%=26;
}
int rotation;
for(int i = 0; i<n; i++) {
if (s[i] >= 'a' && s[i] <= 'z') {
if((s[i] + k) > 'z') {
rotation = (s[i] - 26) + k;
s[i] = rotation;
} else {
s[i] = s[i]+k;
}
} else if (s[i] >= 'A' && s[i] <= 'Z') {
if((s[i] + k) >= 'Z') {
rotation = (s[i] - 26) + k;
s[i] = rotation;
} else {
s[i] = s[i]+k;
}
}
}
for(int i=0; i<n; i++) {
printf("%c", s[i]);
}
return 0;
}
* Wie * hat es auf diesem Fall fehlschlagen ? Bitte sei spezifischer. –
Haben Sie auch debugged? Dies ist fast definitiv nur ein einmaliger Indexierungsfehler. – Carcigenicate
Es ist nicht das Problem, aber 'scanf ("% s ", s); ist anfällig für einen Pufferüberlauf. Der beste Weg, um sicherzustellen, dass Sie im Produktionscode niemals etwas Ähnliches machen, ist, sich daran zu gewöhnen, so etwas nie zu tun, selbst bei Spielzeugproblemen. –