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();
JavaScript
C# Шифр Цезаря Разложите все по полочкам, что каждая строчка делает? начиная c Empty Я полный чайник. Спасибо огромное
Объявляем переменную 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();
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();
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, циклы, массивы для начала. И всё это закреплять практически. Пытаться вникнуть в то, чего не знаешь, это плохой метод.
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, циклы, массивы для начала. И всё это закреплять практически. Пытаться вникнуть в то, чего не знаешь, это плохой метод.
Похожие вопросы
- Объясните код. Что происходит на каждой строчке. Поэтапно.
- С чего начинать учить JavaScript чайнику
- Что такое скрипт??? Можно объяснить как чайник или начинающему программисту. Что бы было понятно. Для чего он нужен?
- Посоветуйте книгу или пособие по программированию, абсолютно с нуля, для чайников.
- Можете объяснить это только попроще и попонятнее т. с для «Чайников»?
- Почему большинство прогеров не ставят точку с запятой в конце строчек кода при разработке приложений на js?
- Если в конце строчки кода не ставить ; в javascript то какие побочные эфекты появятся ?
- В чем разница C++ и Java-Script
- Почему многие предпочитают ЯП C# нежели Javascript при разработки в Unity?
- (JavaScript, C#) Как написать программу которая будет подсчитывать результат после 14 элементов (term)