Ich benutze diesen Code für Caesars Verschlüsselungsprogramm. c = (alpha + k)% 26; // c = Chiffriertext ASCII-Code, "alphabetischer" ASCII-ASCII-Code, "k" -Schlüssel für verschlüsselten Text; Diese Gleichung gibt mir null (0) für alle 26 Alphabete.Caesars Verschlüsselungsprogramm in C
Vielen Dank!
#include <stdio.h>
#include <stdlib.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>
int main (int argc, string argv[]) {
// took key from user and converted it to int
int k = atoi (argv[1]);
// get plaintext from user
string p = GetString();
int c = 0, alpha = 0;
for (int i = 0, n = strlen(p); i < n; i++)
{
// if it is alphabet else if not alphabet
if (isalpha (p[i]) == true) {
// if it is capital case else lower case
if (isupper(p[i]) == true) {
alpha = p[i] - 65;
// add key to plaintext then take modulas
c = (alpha + k) % 26;
alpha = c + 65;
} else {
alpha = p[i] - 97;
// add key to plaintext then take modulas
c = (alpha + k) % 26;
alpha = c + 97;
}
} else {
alpha = p[i];
}
printf("%c \n", alpha);
}
}
Sind ++ Sie C oder C verwenden. Sie sagen C, aber Sie haben als C++ markiert. – NathanOliver
Haben Sie versucht, es zu debuggen? –
Und nichts mit Ihrem Problem zu tun haben, aber versuchen Sie bitte [* magische Zahlen *] (https://en.wikipedia.org/wiki/Magic_number_%28programming%29) zu vermeiden, wie zum Beispiel '65'. Verwenden Sie stattdessen richtige Zeichenliterale wie "A". –