Я использую этот код для программы шифрования Цезаря. c = (альфа + k)% 26; // c = код ASCII зашифрованного текста, код ASCII алфавита "alpha", ключ k для зашифрованного текста; это уравнение дает мне ноль (0) на всех 26 алфавитах.
Спасибо!
#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);
}
}
65
. Вместо этого используйте правильные символьные литералы, такие как'A'
. - person Some programmer dude   schedule 27.04.2016int main (int argc, string argv[])
. - person kfsone   schedule 27.04.2016string
- это макро-подстановка, спрятанная внутри cs50.h - person user4581301   schedule 27.04.2016string
не может быть функцией в зависимости от способа ее использования. В cs50.h скорее всего есть строчка что-то вроде#define string char *
- person user4581301   schedule 27.04.2016alpha = p[i] - 65;
будетalpha = p[i] - 'A';
- person user4581301   schedule 27.04.201697
на'a'
. - person Weather Vane   schedule 27.04.2016typedef char* string;
и отвечает на один из самых первых вопросов, заданных в комментариях. Это C, а не C ++. У вас здесь не будет занятий. Будьте осторожны, если вы используете этот заголовок с кодом C ++ и определенно не используетеusing namespace std;
, иначе у вас будет конфликт имен междуstring
s. - person user4581301   schedule 27.04.2016