Майзаков Максим Александрович Разработка модулей автоматической генерации заданий с решениями по теме «Дискретное логарифмирование» диплом
Вид материала | Диплом |
СодержаниеПриложение 2. Документация для программиста. Метод Полига-Хеллмана. |
- Мозжевилов Максим Александрович Разработка модулей генерации заданий и решений по теме, 891.19kb.
- Дидин Максим Александрович Переславль-Залесский Гимназия 7 7 7 7 7 7 7 7 56 диплом, 189.17kb.
- Дидин Максим Александрович Переславль-Залесский Гимназия 10 8 3 10 10 15 8 64 диплом, 103.28kb.
- Разработка урока по теме: «Развитие мышления через постановку проблемно творческих, 84.71kb.
- Отчет о выполеннии ниокр по теме Разработка унифицированных функциональных модулей, 219.08kb.
- Методы подготовки тестов по информатике и программированию, 55.02kb.
- Лоскутов Савва Александрович г. Асбест >26,5 диплом, 483.81kb.
- От двоичного кодирования к системам автоматической генерации кода, 2820.18kb.
- Тест №1 (из 6 заданий); Тест №2 (из 5 заданий); Тест №3 (в двух вариантах из 10 заданий);, 336.57kb.
- Название проекта, 6.03kb.
Приложение 2. Документация для программиста.
Общая информация относительно всех модулей.
Таблица простых чисел и соответствующие им порождающие элементы заранее сгенерированы и хранятся в двух текстовых файлах: simple.txt содержит все простые числа от 7 до 2557, а файл gener.txt – их порождающие.
Чтение данных из файла и заполнение соответствующих массивов происходит следующим образом:
string[] SimpleArr = System.IO.File.ReadAllLines(@"prost.txt");
string[] PorojArr = System.IO.File.ReadAllLines(@"poroj.txt");
Так же в каждом модуле присутствует массив символов:
private char[] abc = { 'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ы', 'э', 'ю', 'я'};
Его элементы используется для нумерации заданий при экспорте в Microsoft Office Word.
Экспорт данных происходит в Microsoft Office Word через COM - объект Microsoft.Office.Interop.Word. Поэтому в каждый проект нужно добавить на него ссылку:
Используем именно двенадцатую версию, так как она является наиболее универсальной и позволяет работать как с Microsoft Office Word 2003, так и с Microsoft Office Word 2007:
Затем внутри каждого модуля создаем два экземпляра приложения:
Word.Application wa1 = new Word.Application();
Word.Application wa1 = new Word.Application();
И добавляем по документу в каждый из них:
wrdDoc1 = wa1.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
wrdDoc2 = wa2.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
Вставка текста в документ происходит следующим образом:
wa1.Selection.TypeText("Решение:\n");
Для сохранения используется следующая конструкция:
Object oName = @Application.StartupPath + "/task.doc";
wrdDoc1.SaveAs(ref oName, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
Object saveChanges = Word.WdSaveOptions.wdDoNotSaveChanges;
Object originalFormat = Word.WdOriginalFormat.wdWordDocument;
Object routeDocument = Type.Missing;
((Word._Application)wa1).Quit(ref saveChanges, ref originalFormat, ref routeDocument);
wa1 = null;
Ро-метод Полларда.
В данном методе дополнительно используется нестандартная функция по вычислению наибольшего общего делителя двух чисел:
private int NOD(int x, int y)
{
…
Return x;
}
И функция поиска обратного элемента в поле по модулю:
private int INV(int x, int y)
{
…
Return x;
}
Метод Полига-Хеллмана.
Из особенностей данного метода стоит отметить использование отдельной процедуры для канонического разложения числа:
private void KANON(int x)
{
...
}
Число, поступающее на вход, раскладывается на простые сомножители. Для хранения множителей применяется массив P[], а для их степеней массив Alf[].