Проблемы хранения результата
Программа хранение шахматный алгоритм Хотя выше мы разобрали алгоритм который решает нашу задачу, нам нужно как-то сохранить все 92 решения. Для того чтобы потом можно было отобразить на выбор любое из решений, наверное целесообразней хранить координаты одного решения в одной переменной Fr. Итого мы получаем 92 переменных типа integer. Остается только создать оператор который будет заполнять нашу… Читать ещё >
Проблемы хранения результата (реферат, курсовая, диплом, контрольная)
программа хранение шахматный алгоритм Хотя выше мы разобрали алгоритм который решает нашу задачу, нам нужно как-то сохранить все 92 решения. Для того чтобы потом можно было отобразить на выбор любое из решений, наверное целесообразней хранить координаты одного решения в одной переменной Fr. Итого мы получаем 92 переменных типа integer. Остается только создать оператор который будет заполнять нашу переменную Fr, используя для этого значения массива X[1.8]. У нас есть 8 элементов массива X и в каждом может быть значения от 1 до 8, и нам нужно эти 8 элементов представить в виде одной переменной. Поскольку у нас 8 элементов которые могут принимать значения от 1 до 8, попробуем взять восьмизначное десятичное число в котором порядковый номер цифр будет соответствовать номеру элементов массива X, а числа соответственно значениям элементов массива X. Пронумеруем цифры в нашем числе слева на право. Некоторые характеристики соответствующие переменной Fr приведены в таблице.
Значение числа. | 1.8. | 1.8. | 1.8. | 1.8. | 1.8. | 1.8. | 1.8. | 1.8. |
Порядковый Номер (разряд). | ||||||||
Элем. массива. | Х[1]. | X[2]. | X[3]. | X[4]. | X[5]. | X[6]. | X[7]. | X[8]. |
Весовой коэффициент элемента. | 108. | 107. | 106. | 105. | 104. | 103. | 102. | 101. |
Из этого вытекает что наша переменная Fr может равняться числам от 11 111 111 до 88 888 888. В которых порядковый номер цифры отвечает за номер горизонтали, а сама цифра за позицию по вертикали. Определившись с методом, можно приступить к программной реализации.
Одним из возможных решений является алгоритм представленный ниже.
Таким образом для того чтобы получить значение i-того разряда искомого числа необходимо значение Х [i] * на его весовой коэффициент.
Нам потребуется 1 служебная переменная z которая будет отвечать за вес нашего числа. Изначально её приравняем к 100 000 000, создадим цикл в котором будем её делить на 10, уменьшая тем самым вес числа. Поскольку мы будем использовать номер элемента массива x в качестве номера весового коэффициента числа, то мы будем последовательно к Fr прибавлять значение x умноженное на z. В итоге за шаг нашего цикла z уменьшится на 1 порядок, и поменяется номер элемента x, значение которого умноженное на z прибавится к Fr, которое в начале равно 0. При последнем выполнении цикла мы получим в Fr восьмизначное число, отвечающие нужным свойствам. Наш цикл будет примерно таким.
Z=100 000 000.
For I:=1 to 8 do.
Z:= z/10.
fr:= fr+x[I]*z;
Так мы решили задачу хранения результатов, но остается теперь решить как восьмизначное число преобразовать обратно в массив x[1.8]. Для этого нам потребуется один цикл и две служебных переменных, одна z равная 10 000 000 и z1 равная Fr. Z1 нам понадобится для хранения промежуточного результата. При проходе цикла элементу массива x будет приравниваться результат операции целочисленного деления z1 на z, затем из z1 вычитается произведение элемента массива x и z, тем самым уменьшая z1 на 1 порядок. И последней командой цикла является целочисленное деление z на 10, за счет этого z уменьшается на 1 порядок. В конце выполнения всех шагов цикла мы заполняем массив x [1.8] соответствующими значениями.
Z=10 000 000.
Z1=Fr.
For I:=1 to 8 do.
x[i]: = z1 div z.
z1:= z1- x[i]*z.
z:=z div 10;