Я не могу понять, почему эта вещь не скрещивается правильно. Я прочитал несколько других сообщений об этом шифре, и насколько я могу судить, я использую тот же алгоритм, что и они ...Vigenere Cipher Black Hawk Down
Области, закомментированные, являются тестами, которые я пытался проверить, чтобы все прошло правильно. Я считаю, что все прошло правильно, а затем не удалось выполнить алгоритм.
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
string get_message(void);
string scramble(string key, string message);
int main(int argc, string argv[])
{
if(argc == 2)
{
string key;
string message;
key = argv[1];
//printf("KEY: %s<<",key);
message = get_message();
scramble(key, message);
}
else
{
printf("Please enter 2 arguments.\n");
return 1;
}
}
string get_message(void)
{
string message = "";
do
{
message = GetString();
}
while(strlen(message) < 1);
return message;
}
string scramble(string key,string message)
{
for(int i = 0, len = strlen(message), key_len = strlen(key); i < len; i++)
{
int letter = message[i];
//int Tkey = atoi(key[i % key_len]);
//printf("KEY: %d<<\n",Tkey);
if(islower(letter))
{
//printf("KEY(%d)",(key[i % key_len]-97));
letter = (((letter - 97) + (key[i % key_len])) % 26 + 97);
//printf("(%d)",(letter - 97) + (key[i % key_len])%26);
printf("%c",letter);
}
else if(isupper(letter))
{
//printf("(%d)", key[i]);
//printf("(%c)",letter); WE HAVE CORRECT LETTER
letter = (((letter - 65) + (key[i % key_len])) % 26 + 65);
printf("%c",letter);
}
}
printf("\n");
return 0;
}
Что именно ваш вопрос? Каков ваш вклад, что вы ожидаете от вывода? – nvoigt
вывод для: Познакомьтесь со мной в парке в одиннадцать часов утра: Negh zf av huf pcfx bt gzrwep oz Вам нужно будет посмотреть, что такое шифр vigenere, чтобы понять, что он сдвигает буквы. GetString() запрашивает использование ввода, возвращает строку ввода пользователей. Да, я могу использовать strlen для строки. – Krill
Программа запускает его, просто не скрещивается правильно – Krill