Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2015, 19:40   #1
юлия117
 
Регистрация: 12.04.2012
Сообщений: 7
По умолчанию роторные машины ,помогите разобраться?

Код:
public char TypeChar(char typedChar)
        {
            Console.WriteLine("Current char: '"+typedChar+"'");
            Console.WriteLine("Rotor state: \n"+GetCurrentState());

            var sourceIndex = Array.IndexOf(alphabet, typedChar);
            StringBuilder path = new StringBuilder();
            path.Append("Path: ");
            var alphabetLength = alphabet.Length;
            // Пусть машина волшебным образом определяет положение буквы на первом диске (как в методичке)
            var currentLetterIndexInRotor1Side1InMemory = sourceIndex;
            var currentLetterIndexInRotor1Side1AsVisible = (sourceIndex - Rotor1Position + alphabetLength) % alphabetLength;
            var outLetterRotor1Side2 = Rotor1[currentLetterIndexInRotor1Side1InMemory];
            // Номер выходного пина первого ротора
            var outLetterRotor1Side2PositionInMemoryRotor1 = Array.IndexOf(alphabet, outLetterRotor1Side2);
            var outLetterRotor1Side2PositionAsVisibleRotor1 = (outLetterRotor1Side2PositionInMemoryRotor1 - Rotor1Position + alphabetLength) % alphabetLength;

            var inputLetterRotor2Side1 = alphabet[(outLetterRotor1Side2PositionAsVisibleRotor1 + Rotor2Position)%alphabetLength];
            var outPutLetterRotor2Side2 = Rotor2[(outLetterRotor1Side2PositionAsVisibleRotor1 + Rotor2Position) % alphabetLength];
            var rotor2OOutputIndex = (Array.IndexOf(alphabet, outPutLetterRotor2Side2) - Rotor2Position+alphabetLength) % alphabetLength;

            var reflectorInputLetter = alphabet[rotor2OOutputIndex];
            var reflectorOutputLetter = Reflector[rotor2OOutputIndex];
            var reflectorOutputIndex = Array.IndexOf(alphabet, reflectorOutputLetter);

            var backwardRotor2Side2InputLetter = alphabet[(reflectorOutputIndex + Rotor2Position + alphabetLength) % alphabetLength];
            var backwardRotor2Side1OutputIndex = (Array.IndexOf(Rotor2, backwardRotor2Side2InputLetter) - Rotor2Position+alphabetLength)%alphabetLength;
            var backwardRotor2Side1OutputLetter = alphabet[(backwardRotor2Side1OutputIndex+Rotor2Position)%alphabetLength];

            var backwardRotor1Side2InputLetter = alphabet[(backwardRotor2Side1OutputIndex + Rotor1Position + alphabetLength) % alphabetLength];
            var backwardRotor1Side1OutputIndex = (Array.IndexOf(Rotor1, backwardRotor1Side2InputLetter) - Rotor1Position + alphabetLength) % alphabetLength;
            var backwardRotor1Side1OutputLetter = alphabet[(backwardRotor1Side1OutputIndex + Rotor1Position) % alphabetLength];


            var transformedLetter = Rotor1[(Rotor1Position+alphabetLength)%alphabetLength];
            var transformedLetterIndexRotor1Side2 = (Array.IndexOf(alphabet, transformedLetter) - Rotor1Position + alphabetLength) % alphabetLength;


            var indexAfterDisk1 = Array.IndexOf(alphabet, Rotor1[(sourceIndex + Rotor1Position)%alphabet.Length]);
            indexAfterDisk1 = (indexAfterDisk1 + Rotor1Position)%alphabet.Length;
            path.Append("'" + typedChar + "'" + "->");
            path.Append("'" + outLetterRotor1Side2 + "'" + "  |  ");
            //path.Append("'" + alphabet[(sourceIndex + Rotor1Position) % alphabet.Length] + "'" + "->");
            //path.Append("'" + Rotor1[(sourceIndex + Rotor1Position) % alphabet.Length] + "'" + "  |  ");

            var indexAfterDisk2 = Array.IndexOf(alphabet, Rotor2[(indexAfterDisk1 + Rotor2Position) % alphabet.Length]);
            path.Append("'" + inputLetterRotor2Side1 + "'" + "->");
            path.Append("'" + outPutLetterRotor2Side2 + "'" + "  |  ");

            var indexAfterRefle = Array.IndexOf(alphabet, Reflector[indexAfterDisk2]);
            path.Append("'" + reflectorInputLetter + "'" + "->");
            path.Append("'" + reflectorOutputLetter + "'" + "  |  ");

            // проходим обратно по второму рефлектору
            path.Append("'" + backwardRotor2Side2InputLetter+ "'" + "->");
            path.Append("'" + backwardRotor2Side1OutputLetter + "'" + "  |  ");

            // проходим обратно по первому рефлектору
            path.Append("'" + backwardRotor1Side2InputLetter + "'" + "->");
            path.Append("'" + backwardRotor1Side1OutputLetter + "'");
                       
            Console.WriteLine(path.ToString());

            RotateDisks();

            return backwardRotor1Side1OutputLetter;
        }

Последний раз редактировалось Stilet; 28.01.2015 в 20:03.
юлия117 вне форума Ответить с цитированием
Старый 28.01.2015, 20:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ух йо... А что тут тебе непонятно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2015, 20:40   #3
юлия117
 
Регистрация: 12.04.2012
Сообщений: 7
По умолчанию

где взаимодействие 2 роторов? и каком образом ...вообще тут по принципу одометра работают, пока первый не пройдет оборот 2 не сдвинется
юлия117 вне форума Ответить с цитированием
Старый 28.01.2015, 20:45   #4
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

что это за тип? var
это какой язык?
SAMOUCHKA вне форума Ответить с цитированием
Старый 28.01.2015, 20:50   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
это какой язык?
C#. Че он тут делает не знаю. Переношу.
Цитата:
где взаимодействие 2 роторов? и каком образом ...вообще тут по принципу одометра работают, пока первый не пройдет оборот 2 не сдвинется
Нескромный вопрос: А автор сего кода далеко ушел?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2015, 21:23   #6
юлия117
 
Регистрация: 12.04.2012
Сообщений: 7
По умолчанию

это трудный вопрос :D ну тут вроде не так трудно..
юлия117 вне форума Ответить с цитированием
Старый 28.01.2015, 21:32   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Та как сказать... РЭМ машины это же не два пальца об асфальт.
И представленный кусок кода, он не отражает их работу. Тут нужно поставить всю программу в редим отладки и проследить какие переменные как меняются, чтоб понять методику.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2015, 21:36   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
что это за тип? var
это какой язык?
C# это.

var это аналог auto из С++ (С++11), например, если его знаете. Автоопределение типа при компиляции.
То есть если
Код:
var obj = new SomeClass();
то вместо var подставится SomeClass.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 28.01.2015 в 21:39.
Alex11223 вне форума Ответить с цитированием
Старый 28.01.2015, 21:38   #9
юлия117
 
Регистрация: 12.04.2012
Сообщений: 7
По умолчанию

lab2_31.rar вот тут весь код
юлия117 вне форума Ответить с цитированием
Старый 28.01.2015, 21:43   #10
юлия117
 
Регистрация: 12.04.2012
Сообщений: 7
По умолчанию

ну это наверное легкий вопрос)) помогите комменты написать))
юлия117 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите разобраться с C# P'er Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 2 12.09.2009 15:33
помогите разобраться vigor53 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 16.12.2008 07:00
Помогите разобраться raxem Помощь студентам 17 14.09.2008 18:08