Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Work_123
- {
- class Program
- {
- /*В методе Translate тебе нужно сделать так, чтобы возвращался символ без сдвига,
- * если символ уже без сдвига выходит за границы алфавита.
- * В противном случае сдвигаешь его и возвращаешь
- */
- /*string text - это какое-то слово на русском
- далее ты каждый символ этого string преобразуешь
- с помощью сдвига и метода Translate, который у тебя уже есть
- */
- /*
- Вторая задача, если быстро справишься с первой: создать метод,
- в который передается строка string и сдвиг (число типа int).
- Необходимо трансформировать эту строку с помощью метода Translate и вернуть.
- То есть метод возвращает соответственно тип string (трансформированную строку)
- */
- //
- static string Transformate(string strokaUser, int translation){
- string stroka = string.Empty;
- var chars = strokaUser.ToCharArray();
- for (int i = 0; i < chars.Length; i++)
- {
- chars[i] = Translate(chars[i], translation);
- stroka = stroka + chars[i];
- }
- return stroka;
- }
- static string Deshifrate(string strokaUser, int translation){
- return Transformate(strokaUser, -translation);
- }
- static char Translate(char symbol, int translation, char min = 'а', char max = 'я'){
- int numMin = (int)min;
- int numMax = (int)max;
- if ((symbol < min) || (symbol > max)) {
- return symbol;
- } else {
- int additTranslation = (int)symbol + translation;
- int newNumbSymb = Clamp(additTranslation, numMin, numMax);
- return Convert.ToChar(newNumbSymb);
- }
- }
- static int Clamp(int current, int min, int max){
- int vspomVar;
- if (current>max){
- vspomVar = current - max;
- if (vspomVar>32) {
- vspomVar = vspomVar - 32;
- vspomVar = Clamp(min + vspomVar - 1, min, max);
- return vspomVar;
- }
- return (min + vspomVar - 1);
- }
- if (current < min)
- {
- vspomVar = min - current;
- if (vspomVar > 32)
- {
- vspomVar = vspomVar - 32;
- vspomVar = Clamp(max - vspomVar + 1, min, max);
- return vspomVar;
- }
- return (max - vspomVar + 1);
- }
- return current;
- }
- static void Main(string[] args)
- {
- char symbol = 'а';
- int numSymbol = (int)symbol;
- int translation = -34;
- Console.WriteLine("Текущий символ {0}", Convert.ToChar(numSymbol));
- char newSymbol = Translate(symbol, translation);
- Console.WriteLine("Символ после сдвига {0}", newSymbol);
- //Сделать тоже самое, но через остаток от деления!!!!!!!!!!!!!!!!!!!!!!!!!!!
- /*Console.WriteLine(Translate('а', 3) == 'г');
- Console.WriteLine(Translate('г', 3) == 'ж');
- Console.WriteLine(Translate('а', 5) == 'е');
- Console.WriteLine(Translate('я', 1) == 'а');
- Console.WriteLine(Translate('я', 3) == 'в');
- Console.WriteLine(Translate('я', -3) == 'ь');
- Console.WriteLine(Translate('а', -3) == 'э');
- Console.WriteLine(Translate('б', -3) == 'ю');
- Console.WriteLine(Translate('б', 32) == 'б');
- Console.WriteLine(Translate('б', -32) == 'б');
- Console.WriteLine(Translate('б', 33) == 'в');
- Console.WriteLine(Translate('б', -33) == 'а');
- Console.WriteLine(Translate('б', 34) == 'г');
- Console.WriteLine(Translate('б', -34) == 'я');
- Console.WriteLine(Translate('б', 64) == 'б');
- Console.WriteLine(Translate('б', -64) == 'б');*/
- Console.WriteLine("Введите любое слово");
- string strokaUser = Console.ReadLine();
- Console.WriteLine("Введите значение сдвига");
- translation = Int32.Parse(Console.ReadLine());
- if (strokaUser!=""){
- Console.WriteLine("Введенное слово => {0} после сдвига => {1}", strokaUser, Transformate(strokaUser, translation));
- }else{
- Console.WriteLine("Не введено ни одного слова");
- }
- Console.WriteLine("Введите слово для дешифрации");
- string deshifracia = Console.ReadLine();
- Console.WriteLine("Введите значение сдвига");
- translation = Int32.Parse(Console.ReadLine());
- if (deshifracia != "")
- {
- Console.WriteLine("Введенное слово => {0} после сдвига => {1}", deshifracia, Deshifrate(deshifracia, translation));
- }
- else
- {
- Console.WriteLine("Не введено ни одного слова");
- }
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement