Ahoj,
Zkoušel jsem udělat program na zakodovani textu. Funguje je mi ale prijde mi velice slozity hlavne v te casti kde menim pismena. Neporadil by mi nekdo jak to udelat efektivneji?
Dekuji zde je zdrojak.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace KodovaniZpravy
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Zadej text, ktery chete zakodovat.");
string text = Console.ReadLine();
text = text.ToLower();
Zakodovani(text);
Console.ReadKey();
}
private static void Zakodovani(string text)
{
char[] polePismenOriginal = new char[text.Length];
char[] polePismenZakodovane = new char[text.Length];
int i = 0;
char a;
int y = 0;
string samohlasky = "aeiouy"; // definice znaku samohlasky
string souhlasky = "hkrdtn"; // definice znaku souhlasky
foreach (char s in text)
{
polePismenOriginal[i] = s;
i++;
}
for (int x = 0; x < text.Length; x++)
{
a = polePismenOriginal[x];
a.ToString();
if (samohlasky.Contains(a))
{
if (a == 'a')
{
y = 1;
}
if (a == 'e')
{
y = 2;
}
if (a == 'i')
{
y = 3;
}
if (a == 'y')
{
y = 4;
}
if (a == 'o')
{
y = 5;
}
if (a == 'u')
{
y = 0;
}
switch (y)
{
case 0:
a = 'a';
break;
case 1:
a = 'e';
break;
case 2:
a = 'i';
break;
case 3:
a = 'y';
break;
case 4:
a = 'o';
break;
case 5:
a = 'u';
break;
default:
Console.WriteLine("Chyba = najit bug");
break;
}
}
if (souhlasky.Contains(a))
{
if (a == 'h')
{
y = 1;
}
if (a == 'k')
{
y = 2;
}
if (a == 'r')
{
y = 3;
}
if (a == 'd')
{
y = 4;
}
if (a == 't')
{
y = 5;
}
if (a == 'n')
{
y = 0;
}
switch (y)
{
case 0:
a = 'h';
break;
case 1:
a = 'k';
break;
case 2:
a = 'r';
break;
case 3:
a = 'd';
break;
case 4:
a = 't';
break;
case 5:
a = 'n';
break;
default:
Console.WriteLine("Chyba = najit bug");
break;
}
}
polePismenZakodovane[x] = a;
Console.Write("{0}", polePismenZakodovane[x]);
}
}
}
}