I'm brand new to C# and I've started to make a cipher decryption program. The code works and runs fine, apart from the odd exception. I'm just looking for ways to improve my code and make more efficient.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Application
{
class Caesar
{
static void Main(string[] args)
{
try{
Console.WriteLine("Enter Key:");
int k = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Press E for Encrypting and D for Decrypting:");
string choice =Convert.ToString(Console.ReadLine()).ToUpper();
switch (choice)
{
case "E": Console.Write("Enter Plain Text:");
string pt = Console.ReadLine();
caesar_cipher(k, pt);
break;
case "D": Console.Write("Enter Cipher :");
string ct = Console.ReadLine();
caesar_decipher(k, ct);
break;
default: Console.WriteLine("You've entered an incorrect option!");
break;
}
}
catch(Exception)
{
Console.WriteLine ("The value you entered is incorrect");
Console.WriteLine ("Press any key to try again");
}
}
static void caesar_cipher(int key, string pt)
{
int size = pt.Length;
char[] value = new char[size];
char[] cipher = new char[size];
for (int r = 0; r < size; r++)
{
value[r] = Convert.ToChar(pt.Substring(r, 1));
}
for (int re = 0; re < size; re++)
{
int count = 0;
int a = Convert.ToInt32(value[re]);
for (int y = 1; y <= key; y++)
{
if (count == 0)
{
if (a == 90)
{ a = 64; }
else if (a == 122)
{ a = 96; }
cipher[re] = Convert.ToChar(a + y);
count++;
}
else
{
int b = Convert.ToInt32(cipher[re]);
if (b == 90)
{ b = 64; }
else if (b == 122)
{ b = 96; }
cipher[re] = Convert.ToChar(b + 1);
}
}
}
string ciphertext = "";
for (int p = 0; p < size; p++)
{
ciphertext = ciphertext + cipher[p].ToString();
}
Console.WriteLine("Cipher Text=");
Console.WriteLine(ciphertext.ToUpper());
}
static void caesar_decipher(int key, string ct)
{
int size = ct.Length;
char[] value = new char[size];
char[] cipher = new char[size];
for (int r = 0; r < size; r++)
{
cipher[r] = Convert.ToChar(ct.Substring(r, 1));
}
for (int re = 0; re < size; re++)
{
int count = 0;
int a = Convert.ToInt32(cipher[re]);
for (int y = 1; y <= key; y++)
{
if (count == 0)
{
if (a == 65)
{ a = 91; }
else if (a == 97)
{ a = 123; }
value[re] = Convert.ToChar(a - y);
count++;
}
else
{
int b = Convert.ToInt32(value[re]);
if (b == 65)
{ b = 91; }
else if (b == 97)
{ b = 123; }
value[re] = Convert.ToChar(b - 1);
}
}
}
string plaintext = "";
for (int p = 0; p < size; p++)
{
plaintext = plaintext + value[p].ToString();
}
Console.WriteLine("Plain Text=");
Console.WriteLine(plaintext.ToLower());
}
}
}
try
and four after anything else. \$\endgroup\$