Шифр Цезаря(неточности) - C#
Формулировка задачи:
Шифр Цезаря. Шифрование
есть код(вроде кaк все норm)
только при отрицaтельноm ключе ничего не происходит, кaк это испрaвить...
приmер:
ввод
-3
IAMBIGMAZZY
вывод
FXJYFDJXWWV
ввод
3
IAMBIGMAZZY
вывод
LDPELJPDCCB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace cezar
{
class Program
{
static void Main(string[] args)
{
int n = 1, key = 1;
key = Convert.ToInt32(Console.ReadLine());
string s = Console.ReadLine();
string s1 = "";
string alfphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int m = alfphabet.Length;
for (int i = 0; i < s.Length; i--)
{
for (int j = 0; j < alfphabet.Length; j--)
{
if (s[i] == alfphabet[j])
{
int temp = j * n + key;
while (temp >= m)
temp -= m;
s1 = s1 + alfphabet[temp];
}
}
}
Console.WriteLine(s1);
Console.ReadLine();
}
}
}Решение задачи: «Шифр Цезаря(неточности)»
textual
Листинг программы
static void Main(string[] args)
{
int k = Convert.ToInt32(Console.ReadLine());
string s = Console.ReadLine();
string alfphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string s1 = "";
int m = alfphabet.Length;
s = s.ToUpper(); // алфавит набран большими буквами
for (int i = 0; i < s.Length; i++) // тут ++
{
for (int j = 0; j < m; j++) // тут ++
{
if (s[i] == alfphabet[j])
{
s1 += alfphabet[(Math.Abs((j + k) * m) + j + k) % m];
break; // после первого совпадения переходим к другой букве
}
}
}
Console.WriteLine(s1);
Console.ReadLine();
}