Реферат по предмету "Программирование"


"Математико"

Челябинский Государственный Педагогический Университет Математико Итальянская игра Курсовая работа по информатике Выполнил Ларин Д.Д студент 452 группы физического факультета. Проверил Кузнецов А.Б. Челябинск 2002 ВВЕДЕНИЕ. 3 Глава 5 Жадные алгоритмы 1. Задача о выборе заявок 5 2.

Правильность алгоритма 3. Когда применим жадный алгоритм 4. Принцип жадного выбора 5. Оптимальность для подзадач 6. Жадный алгоритм или динамическое программирование 10 Глава 1. Применение жадного алгоритма. 2. Правила игры. 3. Руководство пользователя. 4. Заключение. 18

Приложение. 19 Листинг программы 19 Список используемой литературы 30 ВВЕДЕНИЕ. Одним из наиболее важных факторов ускорения научно-технического прогресса, автоматизации и интенсификации производства, создания новых информационных технологий, совершенствования планирования и управления является все более широкое использование в производственной и управленческих сферах электронно-вычислительной техники. Очень широко компьютер используется в логических играх, так как он дает возможность

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

разрабатывать специальные алгоритмы, которые позволяют отрабатывать все возможные ситуации. Изучая разного рода литературу по этому вопросу, можно отметить наличие широкого выбора оптимизационных алгоритмов. Например, динамическое программирование. Но для многих оптимизационных задач есть более простые и быстрые алгоритмы, чем динамическое программирование. В данной работе рассматриваются задачи, которые можно решать с помощью жадных алгоритмов greedy algorithms.

Такой алгоритм делает на каждом шаге локально оптимальный выбор в надежде, что итоговое решение также окажется оптимальным. Это не всегда так но для многих задач такие алгоритмы действительно дают оптимум. Таким образом, сформулируем цель работы разработка программного комплекса логической игры Математико на компьютере, с применением жадного алгоритма. В связи с этим, объектом изучения будет выступать жадный алгоритм.

Исходя из цели исследования, была выдвинута гипотеза о том, что жадный алгоритм необходим для реализации логической игры Математико на компьютере. В ходе выполнения работы решались следующие задачи 1. Проанализировать состояние исследуемой проблемы по существующей на данный момент литературе. 2. Разработать оптимизационный алгоритм для решения различных игровых ситуаций. 3. Разработать программу, позволяющую моделировать игру

Математико на компьютере. Новизна и практическая значимость выполненной работы состоит в том, что Ю Разработан алгоритм для компьютера по решению игровых ситуаций Разработан программный комплекс логической игры Математико. Теоретическое обоснование применения жадного алгоритма изложено в следующей главе. Глава 1. Жадные алгоритмы Для многих оптимизационных задач есть более простые и быстрые алгоритмы,

чем динамическое программирование. В этой главе мы рассматриваем задачи, которые можно решать с помощью жадных алгоритмов greedy algorithms. Такой алгоритм делает на каждом шаге локально оптимальный выбор в надежде, что итоговое решение также окажется оптимальным. Это не всегда так но для многих задач такие алгоритмы действительно дают оптимум. Наш первый пример простая, но не вполне тривиальная задача о выборе заявок .

Далее мы обсуждаем, для каких задач годятся жадные алгоритмы. 1. Задача о выборе заявок Пусть даны n заявок на проведение занятий в одной и той же аудитории. Два разных занятия не могут перекрываться по времени. В каждой заявке указаны начало и коней занятия si и fi для i-й заявки. Разные заявки могут пересекаться, и тогда можно удовлетворить только одну из них.

Мы отождествляем каждую заявку с промежутком si , fi, так что конец одного занятия может совпадать с началом другого, и это не считается пересечением. Формально говоря, заявки с номерами i и j совместны compatible, если интервалы si , fi и sj,fj не пересекаются иными словами, если fi sj или fj si. Задача о выборе заявок activity-selection problem состоит в том, чтобы набрать максимальное количество совместных друг с другом заявок.

Жадный алгоритм работает следующим образом. Мы предполагаем, что заявки упорядочены в порядке возрастания времени окончания f1 f 2 fn 1 Если это не так, то можно отсортировать их за время On log n заявки с одинаковым временем конца располагаем в произвольном порядке. Тогда алгоритм выглядит так f и s массивы Greedy-Activity- Selector s, f 1 n length s 2 A 1 3 j 1 4 for i 2 to n 5 do if si fj 6 then

A A i 7 j i 8 return A Работа этого алгоритма показана на рис.1. Множество F состоит из номеров выбранных заявок, j номер последней из них при этом Fj max fk k A, 17.2 поскольку заявки отсортированы по возрастанию времени окончания. Вначале А содержит заявку номер 1, и j1 строки 2-3. Далее цикл в строках 4-7 ищется заявка, начинающаяся не раньше окончания заявки номер j.

Если таковая найдена, она включается в множество Ф и переменной j присваивается ее номер строки 6-7. Алгоритм Greedy-Activity- Selector требует всего лишь n шагов не считая предварительной сортировки. Как и подобает жадному алгоритму, на каждом шаге он делает выбор так, чтобы остающееся свободным время было максимально. 2. Правильность алгоритма Не для всех задач жадный алгоритм дает оптимальное решение, но для нашей дает. Убедимся в этом. Теорема 1. Алгоритм

Greedy-Activity- Selector дает набор из наибольшего возможного количества совместных заявок. Доказательство. Напомним, что заявки отсортированы по возрастанию времени окончания. Прежде всего докажем, что существует оптимальное решение задачи о выборе заявок, содержащее заявку номер1 с самым ранним временем окончания. В самом деле, если в каком-то оптимальном множестве заявок заявка номер 1 не содержится, то можно заменить в нем заявку с самым ранним временем окончания не заявку

номер 1, что не повредит совместности заявок ибо заявка номер 1 кончается еще раньше, чем прежняя, и не с чем пересечься не может и не изменит их общего количества. Стало быть, можно искать оптимальное решение, начинающееся с жадного выбора. После того, как мы договорились рассматривать только наборы, содержащие заявку номер 1, все несовместные с ней заявки можно выкинуть, и задача сводится к выбору оптимального набора заявок из множества оставшихся

заявок совместных с заявкой номер 1. Другими словами, мы свели задачу к аналогичной задаче с меньшим числом заявок. Рассуждая по индукции, получаем, что, делая на каждом шаге жадный выбор, мы придем к оптимальному решению. i si f i 1 1 4 2 3 5 2 13 0 6 3 14 5 7 4 15 3 8 5 1 46 5 9 6 1 47 6 10 7 1 48 8 11 8 1 49 8 12 9 1 4 810 2 13 10 1 4 811 12 14 11 1 4 8 1 4 8 11 время 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Рис. 1. Работа алгоритма Greedy-Activity-Selector для 11 заявок. Каждая строка на рисунке соответствует одному проходу цикла

в строках 4-7. Серые заявки уже включены в А, белая сейчас рассматривается. Если левый конец белого прямоугольника левее правого конца правого серого стрелка идет влево, то заявка отвергается. В противном случае она добавляется к А. 3. Когда применим жадный алгоритм Как узнать, даст ли жадный алгоритм оптимум применительно к данной задаче Общих рецептов тут нет, но существует две особенности, характерные для задач, решаемых жадными

алгоритмами. Это принцип жадного выбора и свойство оптимальности для подзадач. 4. Принцип жадного выбора Говорят, что к оптимизационной задаче применим принцип жадного выбора greedy-choice property, если последовательность локально оптимальных жадных выборов дает глобально оптимальное решение. Различие между жадными алгоритмами и динамическим программированием можно пояснить так на каждом шаге жадный алгоритм берет самый жирный кусок, а потом уже пытается сделать наилучший выбор среди оставшихся,

каковы бы они ни были алгоритм динамического программирования принимает решение, просчитав заранее последствия для всех вариантов. Как доказать, что жадный алгоритм дает оптимальное решение Это не всегда тривиально, но в типичном случае такое доказательство следует схеме, использованной в доказательстве теоремы 1. Сначала мы доказываем, что жадный выбор на первом шаге не закрывает пути к оптимальному решению для всякого решения есть другое, согласованное с жадным выбором и не худшее первого.

Затем показывается, что подзадача, возникающая после жадного выбора на первом шаге, аналогична исходной, и рассуждение завершается по индукции. 5. Оптимальность для подзадач Говоря иными словами, решаемые с помощью жадных алгоритмов задачи обладают свойством оптимальности для подзадач have optimal substructure оптимальное решение всей задачи содержит в себе оптимальные решения подзадач. С этим свойством мы уже встречались, говоря о динамическом программировании.

Например, при доказательстве теоремы 1 мы видели, что если А оптимальный набор заявок, содержащий заявку номер 1, то А A 1 оптимальный набор заявок для меньшего множества заявок S , состоящего из тех заявок, для которых si f1. 6. Жадный алгоритм или динамическое программирование И жадные алгоритмы, и динамическое программирование

основываются на свойстве оптимальности для подзадач, поэтому может возникнуть искушение применить динамическое программирование в ситуации, где хватило бы жадного алгоритма, или, напротив, применить жадный алгоритм к задаче, в которой он не даст оптимума. Мы проиллюстрируем возможные ловушки на примере двух вариантов классической оптимизационной задачи. Дискретная задача о рюкзаке 0-1 knapsack problem состоит в следующем. Пусть вор пробрался на склад, на котором хранится n вещей.

Вещь номер i стоит vi долларов и весит wi килограммов vi и wi - целые числа. Вор хочет украсть товара на максимальную сумму, причем максимальный вес, который он может унести в рюкзаке, равен W число W тоже целое. Что он должен положить в рюкзак Непрерывная задача о рюкзаке fractional knapsack problem отличается от дискретной тем, что вор может дробить краденые товары на части и укладывать в рюкзак эти части, а не обязательно вещи целиком если

в дискретной задаче вор имеет дело с золотыми слитками, то в непрерывной с золотым песком. Обе задачи о рюкзаке обладают свойством оптимальности для подзадач. В самом деле, рассмотрим дискретную задачу. Вынув вещь номер j из оптимально загруженного рюкзака, получим решение задачи о рюкзаке с максимальным весом W wj и набором из n-1 вещи все вещи, кроме j-й. Аналогичное рассуждение подходит и для непрерывной задачи

вынув из оптимально загруженного рюкзака, в котором лежит w килограммов товара номер j , весь этот товар, получим оптимальное решение непрерывной задачи, в которой максимальный вес равен W- w вместо W, а количество j-го товара равно wj-w вместо wj. Хотя две задачи о рюкзаке и похожи, жадный алгоритм дает оптимум в непрерывной задаче о рюкзаке и не дает в дискретной. В самом деле, решение непрерывной задачи о рюкзаке с помощью жадного алгоритма выглядит

так. Вычислим цены в расчете на килограмм всех товаров цена товара номер i равна viwi . Сначала вор берет по максимуму самого дорогого товара если весь этот товар кончился, а рюкзак не заполнен, вор берет следующий по цене товар, затес следующий, и так далее, пока не наберет вес W. Поскольку товары надо предварительно отсортировать по ценам, на что уйдет время Оn logn, время работы описанного алгоритма будет Оn logn.

Чтобы убедиться в том, что аналогичный жадный алгоритм не обязан давать оптимум в дискретной задаче о рюкзаке, взгляните на рис. 2а. Грузоподъемность рюкзака 50кг, на складе имеются три вещи, весящие 10, 20 и 30кг и стоящие 60, 100 и 120 долларов соответственно. Цена их в расчете на единицу веса равна 6,5 и 4. Жадный алгоритм для начала положит в рюкзак вещь номер 1 однако оптимальное решение включает предметы номер 2 и 3.

Для непрерывной задачи с теми же исходными данными жадный алгоритм, предписывающий начать с товара номер 1, дает оптимальное решение рис. 2в. В дискретной задаче такая стратегия не срабатывает положив в рюкзак предмет номер 1, вор лишается возможности заполнить рюкзак под завязку, а пустое место в рюкзаке снижает цену наворованного в расчете на единицу веса. Здесь, чтобы решить, класть ли данную вещь в рюкзак, надо сравнить решения двух подзадач когда данная вещь заведомо лежит в рюкзаке и когда этой вещи в рюкзаке

заведомо нет. Тем самым дискретная задача о рюкзаке порождает множество перекрывающихся подзадач типичный признак того, что может пригодиться динамическое программирование. И действительно, к дискретной задаче о рюкзаке оно применимо . Рис. 2. В дискретной задаче о рюкзаке жадная стратегия может не сработать. а Вор должен выбрать две вещи из трех с тем, чтобы их суммарный вес не превысил 50кг. б

Оптимальный выбор вторая и третья вещи если положить в рюкзак первую, то выбор оптимальным не будет, хотя именно она дороже всех в расчете на единицу веса. в Для непрерывной задачи о рюкзаке с теми же исходными данными выбор товаров в порядке убывания цены на единицу веса будет оптимален. Вещь3 50 30120 100 100 60 120 602080 100 603030Вещь2 302020Вещь1 20201010101060100120рюкзак 220 160 180 240 а б в Глава 2 1. Применение жадного алгоритма. В логической игре

Математико применение жадного алгоритма необходимо для того, чтобы компьютер принимал наиболее выгодное решение в зависимости от поступаемого из колоды числа. Компьютер должен принимать решение о том, куда ставить выпавшее число по нескольким параметрам 1. Какая наиболее выгодная комбинация может получиться в данной строке столбце или по диагонали 2. Какова вероятность выпадения необходимого числа для данной комбинации из колоды 3.

Компьютер должен перебирать все свободные позиции, выбирать из имеющихся наиболее выгодную. Итак, можно сделать определенные выводы о том, что должен делать компьютер, когда он принимает решение, куда поставить выпавшее число. Рассмотрим процедуру принятия решения компьютером procedure Tform1.MCxinteger x-число которое выпало из колоды var s1,s2real p1,o1,p,o,x1,y1integer qwpat begin MVxMVx-1 массив, который отвечает за числа оставшиеся в колоде s21000 x10 y10 if n1 then число выпавшее

первым ставиться в клетку с координатой 1,1. begin x11 y11 p1 o1 end else for p1 to 5 do for o1 to 5 do if ap,o0andverp,o,x1 then если в данной клетке нет числа, то в нее заносится число begin s10 ap,ox for p11 to 5 do qwp1ap,p1 составляется комбинация по строке s1reitqw и считается е возможный рейтинг for p11 to 5 do qwp1ap1,p составляется комбинация по столбцу s1s1reitqw и считается е возможный рейтингв сумме с предыдущим if po then begin for p11 to 5 do qwp1ap1,p1 составляется комбинация по диагонали

s1s1reitqw и считается е возможный рейтингв сумме с предыдущим end if p6-o then begin for p11 to 5 do qwp1ap1,6-p1 чем меньше рейтинг, тем больше шансов выпасть s1s1reitqw у комбинации см. функцию REIT end if s1 s2 then проверка оптимума для данной позиции begin s2s1 x1p X1 и Y1 необходимые координаты клетки y1o end ap,o0 end stringgrid2.Cellsx1,y1inttostrx Устанавливаем число ax1,y1x mcva,ver if n25 then for p1 to 5 do for o1 to 5 do begin case p of 1cm1oap,

o 2cm2oap,o 3cm3oap,o 4cm4oap,o 5cm5oap,o end case o of 1cm6pap,o 2cm7pap,o 3cm8pap,o 4cm9pap,o 5cm10pap,o end if p6-o then cm12pap,o if po then cm11pap,o end end Компьютер при принятии решения каждый раз обращается к данной процедуре, в которой выпавшее число устанавливается в каждую пустую клетку. Процедура сама выберет оптимальное на данный момент местоположение числа. Следующее число опять попадет в данную процедуру, и для него опять будет принято оптимальное решение,

которое необязательно будет оптимальным в итоге. Это и есть жадный алгоритм. 2. Правила игры. Имеется набор из 52 карточек, на которых записаны числа от 1 до 13, причем карточки с каждым из этих чисел встречаются четырежды. Имеется квадратное поле с 25 клетками. Программа случайным образом извлекает какую-либо из этих карточек и выдает записанное на ней число. Каждый игрок вы и компьютер заносит это число в одну из клеток квадрата.

Так продолжается до тех пор, пока все клетки квадрата не будут заполнены. По окончании игры заполнение соответствующего квадрата оценивается определенным количеством очков. Цель игры разместить числа в клетках так, чтобы набрать наибольшее количество очков в соответствии с данной таблицей Комбинация чиселВ ряду или столбцеПо диагоналиЗа 2 одинаковых числа10 очков20 очковЗа 2 пары одинаковых чисел20 очков30 очковЗа 3 одинаковых числа40 очков50 очковЗа 3 одинаковых числа и два

других одинаковых числа80 очков90 очковЗа 4 одинаковых числа160 очков170 очковЗа 5 последовательных чисел, но необязательно по порядку расположенных50 очков60 очковЗа три раза по 1 и два раза по 13100 очков110 очковЗа числа 1,10,11,12 и 13, но необязательно по порядку расположенных150 очков160 очковЗа 4 единицы200 очков210 очков 3. Руководство пользователя. Перед вами игровое поле Ваше поле - поле, которое заполняете вы сами.

Поле компьютера - поле, которое заполняет компьютер. Число - число, которое выпало, его и надо ставить. Если вы случайно выбрали клетку, которая уже занята другим числом, то вы увидите Если вы хотите поменять цвет формы, полей, то вам необходимо выбрать Файл - Настроить цвет Если вы хотите поменять шрифт, то вам необходимо выбрать

Файл - Настроить шрифт Также вы имеете возможность начать игру заново Файл - Новая игра Для того чтобы выйти из игры необходимо Файл - Выход Если вам необходимо уточнить правила игры, то выберите О программе. После того, как все клетки будут заполнены, вы узнаете результат игры 4. Заключение. В результате исследования литературы по вопросу оптимизации задач, мы отдали предпочтение

использованию жадных алгоритмов, которые дают нам следующие возможности 1. Сократить время принятия решения 2. Проверять все возможные варианты решения на данный момент времени. В ходе работы нами был разработан и реализован жадный алгоритм для логической игры Математико на Delphi 5. Данный программный комплекс представляет собой реализацию логической игры Математико на компьютере с использованием жадного алгоритма.

Жадный алгоритм позволяет компьютеру принимать оптимальное решение для данного числа в данной ситуации, что делает его очень хорошим соперником. У данного программного комплекса есть свои недостатки. Например, если подряд выпадают несколько хороших чисел которые являются какой-нибудь комбинацией, то совсем необязательно, что компьютер поставит их в один ряд. Поэтому в данном случае человек получает некоторое преимущество.

Но когда приходят числа, которые, казалось бы, никак не связаны, то и жадный алгоритм примет оптимальное решение, что скажется на итоге. И в последующих работах недостатки будут устранены. Приложение. Листинг программы unit Unit1 interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, Menus,shellapi type patarray 1 5 of integer ver1array1 5,1 5,1 13

of integer ver2array1 5,1 5 of integer TForm1 classTForm StringGrid1 TStringGrid StringGrid2 TStringGrid Label1 TLabel Label2 TLabel Edit1 TEdit Label3 TLabel Edit2 TEdit Label4 TLabel Edit3 TEdit Label5 TLabel MainMenu1 TMainMenu N1 TMenuItem N2 TMenuItem N3 TMenuItem N4

TMenuItem N5 TMenuItem N6 TMenuItem N7 TMenuItem N8 TMenuItem N9 TMenuItem ColorDialog1 TColorDialog N10 TMenuItem N11 TMenuItem N12 TMenuItem N13 TMenuItem FontDialog1 TFontDialog N14 TMenuItem N15 TMenuItem N16 TMenuItem N17 TMenuItem procedure FormCreateSender

TObject procedure Massiv procedure MCxinteger procedure zanosigw,x,yinteger procedure podschet a pat var sinteger procedure mcvwwver2 var qqver1 procedure StringGrid1MouseDownSender TObject Button TMouseButton Shift TShiftState X, Y Integer function reitzpatreal procedure reittzpatx,yinteger var wever1 procedure N8ClickSender TObject procedure N10ClickSender TObject procedure

N11ClickSender TObject procedure N12ClickSender TObject procedure N13ClickSender TObject procedure N15ClickSender TObject procedure N16ClickSender TObject procedure N2ClickSender TObject procedure N3ClickSender TObject procedure N4ClickSender TObject private Private declarations public Public declarations end var

Form1 TForm1 verver1 qarray1 52 of integer aver2 ig1,ig2,ig3,ig4,ig5,ig6,ig7,ig8,ig9,ig10 ,ig11,ig12pat cm1,cm2,cm3,cm4,cm5,cm6,cm7,cm8,cm9,cm10 ,cm11,cm12pat e,r,n,summainteger MVarray1 13of integer implementation procedure Tform1.Massiv var i,j,binteger begin randomize for i1 to 13 do for j1 to 4 do qi-14ji for i1 to 52 do begin jrandom52 bqi qiqj qjb end end procedure tform1.zanosigw,x,yinteger begin case x of 1ig1yw 2ig2yw 3ig3yw 4ig4yw 5ig5yw end case y of 1ig6xw 2ig7xw 3ig8xw 4ig9xw 5ig10xw

end if x6-y then ig12xw if xy then ig11xw end procedure tform1.podschet a pat var sinteger var zarray1 13 of integer p,l,suminteger begin sum0 for p1 to 13 do zp0 for p1 to 13 do for l1 to 5 do if alp then zpzp1 if z11andz101andz111andz121andz131 then sum150 if z14 then sum200 if z13andz132 then sum100 for p2 to 13 do if zp4 then sum160 for p1 to 13 do if zp3 then for l1 to 13 do if zl2 then sum80 if sum0 then for p1 to 13 do if zp3 then sum40 if sum0 then for p1 to 13 do if zp2 then for lp1 to 13 do if

zl2 then sum20 if sum0 then for p1 to 13 do if zp2 then sum10 if sum0 then for p1 to 9 do if zp1andzp11andzp21andzp31andzp41 then sum50 ssum end R .DFM procedure TForm1.FormCreateSender TObject var p,o,linteger begin form1.left140 form1.top100 for p1 to 5 do for o1 to 5 do for l1 to 13 do verp,o,l1 Massiv for p1 to 25 do if qp 13 then qpq26 for p1 to 5 do for o1 to 5 do ap,o0 for p1 to 13 do MVp4 n1 summa0 edit1.textinttostrq1 end procedure tform1.reittzpat x,yintegervar wever1 var a1,p,

l,l1,nulinteger q1array1 13of integer flboolean begin nul0 for p1 to 5 do if zp0 then nulnul1 for p1 to 13 do q1p0 for p1 to 13 do for l1 to 5 do if zlp then q1pq1p1 1-10-11-12-13 if q11 2andq110 2andq111 2andq112 2andq113 2 andq120andq130andq140andq150andq160andq1 70andq180andq190then begin wex,y,11 wex,y,101 wex,y,111 wex,y,121 wex,y,131 end 1-2-3-4-5 if q11 2andq12 2andq13 2andq14 2andq15 2 andq1100andq1110andq1120andq1130andq160a ndq170andq180andq190then begin wex,y,11 wex,y,41 wex,y,51 wex,y,21 wex,y,31 end 2-3-4-5-6 if q16 2andq12 2andq13 2andq14 2andq15 2

andq1100andq1110andq1120andq1130andq110a ndq170andq180andq190then begin wex,y,61 wex,y,41 wex,y,51 wex,y,21 wex,y,31 end 3-4-5-6-7 if q16 2andq17 2andq13 2andq14 2andq15 2 andq1100andq1110andq1120andq1130andq110a ndq120andq180andq190then begin wex,y,61 wex,y,41 wex,y,51 wex,y,71 wex,y,31 end 4-5-6-7-8 if q16 2andq17 2andq18 2andq14 2andq15 2 andq1100andq1110andq1120andq1130andq110a ndq120andq130andq190then begin wex,y,61 wex,y,41 wex,y,51 wex,y,71 wex,y,81 end 5-6-7-8-9 if q16 2andq17 2andq18 2andq19 2andq15 2 andq1100andq1110andq1120andq1130andq110a

ndq120andq130andq140then begin wex,y,61 wex,y,91 wex,y,51 wex,y,71 wex,y,81 end 6-7-8-9-10 if q16 2andq17 2andq18 2andq19 2andq110 2 andq150andq1110andq1120andq1130andq110an dq120andq130andq140then begin wex,y,61 wex,y,91 wex,y,101 wex,y,71 wex,y,81 end 7-8-9-10-11 if q111 2andq17 2andq18 2andq19 2andq110 2 andq150andq160andq1120andq1130andq110and q120andq130andq140then begin wex,y,111 wex,y,91 wex,y,101 wex,y,71 wex,y,81 end 8-9-10-11-12 if q111 2andq112 2andq18 2andq19 2andq110 2 andq150andq160andq170andq1130andq110andq 120andq130andq140then begin wex,y,111 wex,y,91 wex,y,101 wex,

y,121 wex,y,81 end 9-10-11-12-13 if q111 2andq112 2andq113 2andq19 2andq110 2 andq150andq160andq170andq180andq110andq1 20andq130andq140then begin wex,y,111 wex,y,91 wex,y,101 wex,y,121 wex,y,131 end четверка for p1 to 13 do if q1p3 and nul 0 then begin wex,y,p1 end три2 for p1 to 13 do if q1p3 then for l1 to 13 do if q1l 0 and nul 0 then begin wex,y,l1 end тройка for p1 to 13 do if q1p2 and nul 0 then begin wex,y,p1 end 22 for p1 to 13 do if q1p2 and nul 0 then for l1 to 13 do if q1l 0 and l pthen begin wex,y,l1 end end procedure tform1.mcvwwver2var

qqver1 var p,o,i,l,kinteger zpat begin for p1 to 5 do for o1 to 5 do for i1 to 13 do qqp,o,i0 for p1 to 5 do for o1 to 5 do begin if wwp,o0 then begin for i1 to 5 do ziwwp,i reittz,p,o,qq for i1 to 5 do ziwwi,o reittz,p,o,qq if po then for i1 to 5 do ziwwi,i reittz,p,o,qq if p6-o then for i1 to 5 do ziwwi,6-i reittz,p,o,qq end end end function Tform1.reitzpatreal var a1,p,l,l1,nulinteger q1array1 13of integer r,rmreal flboolean begin r100 rm100 nul0 for p1 to 5 do if zp0 then nulnul1 for p1 to 13 do q1p0 for

p1 to 13 do for l1 to 5 do if zlp then q1pq1p1 1-10-11-12-13 if q11 2andq110 2andq111 2andq112 2andq113 2 andq120andq130andq140andq150andq160andq1 70andq180andq190then begin r1-q11mv1425-n52-n1-q110mv10421-n48-n1-q 111mv11422-n49-n1-q112mv12423-n50-n1-q11 3mv13424-n51-n if r rm then rmr end 1-2-3-4-5 if q11 2andq12 2andq13 2andq14 2andq15 2 andq1100andq1110andq1120andq1130andq160a ndq170andq180andq190then begin r1-q11mv1425-n52-n1-q12mv2421-n48-n1-q13 mv3422-n49-n1-q14mv4423-n50-n1-q15mv5424 -n51-n if r rm then rmr end 2-3-4-5-6 if q16 2andq12 2andq13 2andq14 2andq15 2 andq1100andq1110andq1120andq1130andq110a

ndq170andq180andq190then begin r1-q16mv6425-n52-n1-q12mv2421-n48-n1-q13 mv3422-n49-n1-q14mv4423-n50-n1-q15mv5424 -n51-n if r rm then rmr end 3-4-5-6-7 if q16 2andq17 2andq13 2andq14 2andq15 2 andq1100andq1110andq1120andq1130andq110a ndq120andq180andq190then begin r1-q16mv6425-n52-n1-q17mv7421-n48-n1-q13 mv3422-n49-n1-q14mv4423-n50-n1-q15mv5424 -n51-n if r rm then rmr end 4-5-6-7-8 if q16 2andq17 2andq18 2andq14 2andq15 2 andq1100andq1110andq1120andq1130andq110a ndq120andq130andq190then begin r1-q16mv6425-n52-n1-q17mv7421-n48-n1-q18 mv8422-n49-n1-q14mv4423-n50-n1-q15mv5424

-n51-n if r rm then rmr end 5-6-7-8-9 if q16 2andq17 2andq18 2andq19 2andq15 2 andq1100andq1110andq1120andq1130andq110a ndq120andq130andq140then begin r1-q16mv6425-n52-n1-q17mv7421-n48-n1-q18 mv8422-n49-n1-q19mv9423-n50-n1-q15mv5424 -n51-n if r rm then rmr end 6-7-8-9-10 if q16 2andq17 2andq18 2andq19 2andq110 2 andq150andq1110andq1120andq1130andq110an dq120andq130andq140then begin r1-q16mv6425-n52-n1-q17mv7421-n48-n1-q18 mv8422-n49-n1-q19mv9423-n50-n1-q110mv104 24-n51-n if r rm then rmr end 7-8-9-10-11 if q111 2andq17 2andq18 2andq19 2andq110 2 andq150andq160andq1120andq1130andq110and

q120andq130andq140then begin r1-q111mv11425-n52-n1-q17mv7421-n48-n1-q 18mv8422-n49-n1-q19mv9423-n50-n1-q110mv1 0424-n51-n if r rm then rmr end 8-9-10-11-12 if q111 2andq112 2andq18 2andq19 2andq110 2 andq150andq160andq170andq1130andq110andq 120andq130andq140then begin r1-q111mv11425-n52-n1-q112mv12421-n48-n1 -q18mv8422-n49-n1-q19mv9423-n50-n1-q110m v10424-n51-n if r rm then rmr end 9-10-11-12-13 if q111 2andq112 2andq113 2andq19 2andq110 2 andq150andq160andq170andq180andq110andq1 20andq130andq140then begin r1-q111mv11425-n52-n1-q112mv12421-n48-n1 -q113mv13422-n49-n1-q19mv9423-n50-n1-q11 0mv10424-n51-n

if r rm then rmr end четверка for p1 to 13 do if q1p3 and nul 0 then begin r4-q1pmvp425-n52-n if r rm then rmr end 32 for p1 to 13 do if q1p3 then for l1 to 13 do if q1l 0 and nul 0 then begin r2-q1lmvl425-n52-n if r rm then rmr end тройка for p1 to 13 do if q1p2 and nul 0 then begin r3-q1pmvp425-n52-n if r rm then rmr end 22 for p1 to 13 do if q1p2 and nul 0 then for l1 to 13 do if q1l 0 and l pthen begin r2-q1lmvl425-n52-n if r rm then rmr end for p1 to 13 do if q1p2 and rm100 then begin r0 if r rm then rmr end if rm100 and

nul 3 then rm2rm reitrm end procedure Tform1.MCxinteger var s1,s2real p1,o1,p,o,x1,y1integer qwpat begin MVxMVx-1 s21000 x10 y10 if n1 then begin x11 y11 p1 o1 end else for p1 to 5 do for o1 to 5 do if ap,o0andverp,o,x1 then begin s10 ap,ox for p11 to 5 do qwp1ap,p1 s1reitqw for p11 to 5 do qwp1ap1,p s1s1reitqw if po then begin for p11 to 5 do qwp1ap1,p1 s1s1reitqw end if p6-o then begin for p11 to 5 do qwp1ap1,6-p1 s1s1reitqw end if s1 s2 then begin s2s1 x1p y1o end ap,o0 end if x10 and y10 then for p1 to 5 do for

o1 to 5 do if ap,o0 then begin s10 ap,ox for p11 to 5 do qwp1ap,p1 s1reitqw for p11 to 5 do qwp1ap1,p s1s1reitqw if po then begin for p11 to 5 do qwp1ap1,p1 s1s1reitqw end if p6-o then begin for p11 to 5 do qwp1ap1,6-p1 s1s1reitqw end if s1 s2 then begin s2s1 x1p y1o end ap,o0 end stringgrid2.Cellsx1,y1inttostrx ax1,y1x mcva,ver if n25 then for p1 to 5 do for o1 to 5 do begin case p of 1cm1oap,o 2cm2oap,o 3cm3oap,o 4cm4oap,o 5cm5oap,o end case o of 1cm6pap,o 2cm7pap,o 3cm8pap,o 4cm9pap,o 5cm10pap,o end if p6-o then

cm12pap,o if po then cm11pap,o end end procedure TForm1.StringGrid1MouseDownSender TObject Button TMouseButton Shift TShiftState X, Y Integer var suminteger begin sum0 if n 25and stringgrid1.Cellsstringgrid1.col,stringg rid1.row then begin zanosigqn,stringgrid1.col,stringgrid1.ro w mcqn nn1 stringgrid1.Cellsstringgrid1.col,stringg rid1.rowinttostrqn-1 end else if n 25 then showmessage Занято edit1.textinttostrqn if n26 then begin showmessage

Сейчас подсчитаем podschetig1,sum stringgrid1.Cells1,0inttostrsum summasummasum podschetig2,sum stringgrid1.Cells2,0inttostrsum summasummasum podschetig3,sum stringgrid1.Cells3,0inttostrsum summasummasum podschetig4,sum stringgrid1.Cells4,0inttostrsum summasummasum podschetig5,sum stringgrid1.Cells5,0inttostrsum summasummasum podschetig6,sum stringgrid1.Cells0,1inttostrsum summasummasum podschetig7,sum stringgrid1.Cells0,2inttostrsum summasummasum podschetig8,sum stringgrid1.Cells0,3inttostrsum summasummasum podschetig9,sum stringgrid1.Cells0,4inttostrsum summasummasum podschetig10,sum stringgrid1.Cells0,5inttostrsum

summasummasum podschetig11,sum if sum 0 then begin stringgrid1.Cells0,0inttostrsum10 summasummasum10 end else stringgrid1.Cells0,0inttostr0 podschetig12,sum if sum 0 then begin stringgrid1.Cells0,0stringgrid1.Cells0,0 inttostrsum10 summasummasum10 end else stringgrid1.Cells0,0stringgrid1.Cells0,0 inttostr0 edit2.textinttostrsumma edit2.visibletrue label4.visibletrue showmessageСейчас подсчитаем у компа summa0 podschetcm1,sum stringgrid2.Cells1,0inttostrsum summasummasum podschetcm2,sum stringgrid2.Cells2,0inttostrsum summasummasum podschetcm3,sum stringgrid2.Cells3,0inttostrsum

summasummasum podschetcm4,sum stringgrid2.Cells4,0inttostrsum summasummasum podschetcm5,sum stringgrid2.Cells5,0inttostrsum summasummasum podschetcm6,sum stringgrid2.Cells0,1inttostrsum summasummasum podschetcm7,sum stringgrid2.Cells0,2inttostrsum summasummasum podschetcm8,sum stringgrid2.Cells0,3inttostrsum summasummasum podschetcm9,sum stringgrid2.Cells0,4inttostrsum summasummasum podschetcm10,sum stringgrid2.Cells0,5inttostrsum summasummasum podschetcm11,sum if sum 0 then begin stringgrid2.Cells0,0inttostrsum10 summasummasum10 end else stringgrid2.Cells0,0inttostr0

podschetcm12,sum if sum 0 then begin stringgrid2.Cells0,0stringgrid2.Cells0,0 inttostrsum10 summasummasum10 end else stringgrid2.Cells0,0stringgrid2.Cells0,0 inttostr0 edit3.textinttostrsumma edit3.visibletrue label5.visibletrue if strtointedit2.text strtointedit3.text then showmessageВы выиграли else showmessageВЫ ПРОИГРАЛИ ХА-ХА-ХА end end procedure TForm1.N8ClickSender TObject begin if colordialog1.Execute then form1.Colorcolordialog1.color end procedure

TForm1.N10ClickSender TObject begin if colordialog1.Execute then stringgrid1.Colorcolordialog1.color end procedure TForm1.N11ClickSender TObject begin if colordialog1.Execute then stringgrid1.FixedColorcolordialog1.color end procedure TForm1.N12ClickSender TObject begin if colordialog1.Execute then stringgrid2.Colorcolordialog1.color end procedure TForm1.N13ClickSender TObject begin if colordialog1.Execute then stringgrid2.FixedColorcolordialog1.color end procedure TForm1.N15ClickSender TObject begin if fontdialog1.Execute then stringgrid1.Font.

Assignfontdialog1.Font end procedure TForm1.N16ClickSender TObject begin if fontdialog1.Execute then stringgrid2.Font.Assignfontdialog1.Font end procedure TForm1.N2ClickSender TObject begin ShellExecuteHandle,nil,file.txt,nil,nil, swrestore end procedure TForm1.N3ClickSender TObject var x,y,p,o,linteger begin label4.Visiblefalse label5.Visiblefalse edit3.text

edit2.Text edit3.Visiblefalse edit2.Visiblefalse form1.left140 form1.top100 for x0 to 5 do for y0 to 5 do begin stringgrid1.cellsx,y stringgrid2.cellsx,y end for x1 to 5 do for y1 to 5 do begin stringgrid1.cellsx,y stringgrid2.cellsx,y case x of 1ig1y0 2ig2y0 3ig3y0 4ig4y0 5ig5y0 end case y of 1ig6x0 2ig7x0 3ig8x0 4ig9x0 5ig10x0 end if x6-y then ig12x0 if xy then ig11x0 end for p1 to 5 do for o1 to 5 do for l1 to 13 do verp,o,l1 Massiv for p1 to 25 do if qp 13 then qpq26 for p1 to 5 do for o1 to 5 do ap,o0 for p1 to 13 do

MVp4 n1 summa0 edit1.textinttostrq1 end procedure TForm1.N4ClickSender TObject begin form1.Close end end. Список используемой литературы 1. Архангельский А.Я. Программирование в Delphi 4. М. Бином, 1999 2. Архангельский А.Я. Программирование в Delphi 5. М. Бином, 2000 3. Кордемский Б.А. Математическая смекалка.

М. Гос. изд. физ матем. лит 1958 4. Кормен Т и др. Алгоритмы построение и анализ. М. МЦНМО, 2000 5. Ивин А.А. Логика учеб. для вузов. М. Гардарика, 1999 6. Липский В. Комбинаторика для программистов. М. Мир, 1998 7. Алфрова З.В. Теория алгоритмов. М. Статистика,

1973



Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Литература - Терапия ЖЕЛЕЗОДЕФИЦИТНЫЕ АНЕМИИ
Реферат Горячие точки планеты. Ангола
Реферат Рапсовая блошка
Реферат Учёт оплаты труда на предприятии 4
Реферат Денежная масса: регулирование в условиях инфляции
Реферат Iii научно-практическая конференция арбикон «Корпоративные библиотечные системы: технологии и инновации»
Реферат Экологическая экспертиза и аудит
Реферат Немедленное исполнение решений судов по гражданским делам
Реферат Space Essay Research Paper Evolution a process
Реферат Решение систем линейных алгебраических уравнений
Реферат Элегазовый генераторный выключатель 10 кВ, 63 кА, 8000 А
Реферат Балада про соняшник
Реферат Отражение русской истории в творчестве древнерусских распевщиков
Реферат Совершенствование системы ипотечного жилищного кредитования
Реферат Усовершенствование маркетинговой деятельности на примере Ренийского морского торгового порта