JavaScript

C# Шифр Цезаря Разложите все по полочкам, что каждая строчка делает? начиная c Empty Я полный чайник. Спасибо огромное

Console.WriteLine("Введите слово, которое нужно зашифровать: ");
string s = Console.ReadLine();
string abc = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяаб";

int l = 2;
int a;
string code=string.Empty;
for(int i =0; i<s.Length;i++)
{
int pos;
char c = s[i];
pos = abc.IndexOf(c);
a = pos + l;
code += abc[a];
}
Console.WriteLine(code);
Console.ReadLine();
Объявляем переменную code типа string и сразу же присваиваем ей значение string.Empty
string code=string.Empty;

string.Empty живет в классе string. Оно readonly, чтобы никто не поменял это значение. Но надо учесть, что работает эта штука все таки медленнее, чем ''. Но не создает новый instance.

Ну здесь точно все просто - цикл по i по всей длине строки s.Length
for(int i =0; i<s.Length;i++)
{
Объявили переменную pos типа int, пока ничего не присвоили
int pos;
Объявили переменную c типа char, присвоили ей значение i-ого символа строки s (строка очень похожа на массив в обращении)
char c = s[i];
Теперь в переменную pos сохраняем позицию символа c в алфавите. IndexOf = метод, который возвращает позицию первого вхождения искомого в строке символа (счет с нуля, если нет - вернет -1)
pos = abc.IndexOf(c);

Здесь вычисляется позиция нового символа в алфавите, которым будет заменен текущий символ c.
a = pos + l;

Ну собственно теперь в строку code добавляем справа новый символ из алфавита.
code += abc[a];
}

Все, цикл окончился, мы получили шифровку строки s новой строкой code.
Console.WriteLine(code);
Console.ReadLine();
Azamat Ereshov
Azamat Ereshov
8 050
Лучший ответ
1. Читайте документацию:
https://msdn.microsoft.com/ru-ru/library/system.string.empty(v=vs.110).aspx
Заодно подтяните английский.

2. int pos = abc.IndexOf(c); проще сделать так, чтобы не усложнять код.
3. Название переменной l никак не описывает её назначение. Например её можно назвать offset. К тому же это константа, а не переменная.
4. code += abc[a]; не очень эффективная конструкция (или совсем неэффективная т. к. ресурсозатратная), но для новичков пойдёт. Если придётся работать с большими текстами, вы повесите свой комп этой конструкцией.
5. string code=string.Empty; это то же самое, что и string code = ""; (пустая строка)
6. Эти все многочисленные a,b только мусорят код. Лучше напишите code += abc[pos + offset];
7. При offset > 2 код выбросит ошибку.

Чтобы всё разложить по полочкам, начните изучать основы программирования по порядку: переменные, if, циклы, массивы для начала. И всё это закреплять практически. Пытаться вникнуть в то, чего не знаешь, это плохой метод.