Алгоритм работы программы



Федеральное агентство по образованию

Ульяновский государственный технический университет

Факультет информационных систем и технологий

Кафедра «Вычислительная техника»

Дисциплина «Дискретная математика»

Лабораторная работа

«Операции над множествами»

Вариант №4

Выполнил:

Студент гр. ЭВМд-21

Логинов Н.Н.

Проверил:

Игонин А.Г.

Ульяновск 2011.

Постановка задачи

Реализовать программу, в которой выполняются операции «объединение», «пересечение», «дополнение» и «симметрическая разность» над двумя множествами. Элементы множеств: пары латинских букв. Программа должна быть реализована на языке PHP, и должна проверять корректность введённых данных.

Теоретическая справка

Объедине́ние мно́жеств (тж. су́мма или соедине́ние) в теории множеств — множество, содержащее в себе все элементы исходных множеств.

Пересече́ние мно́жеств в теории множеств — это множество, которому принадлежат те и только те элементы, которые одновременно принадлежат всем данным множествам.

Разность (дополнение) двух множеств — это теоретико-множественная операция, результатом которой является множество, в которое входят все элементы первого множества, не входящие во второе множество.

Симметрическая разность двух множеств — это теоретико-множественная операция, результатом которой является множество элементов этих множеств, принадлежащих только одному из них.

Инструкция по работе с программой

Данная программа выполняет операции над двумя множествами. Множества вводятся в текстовые поля с надписями: Множестово "1" и Множестово "2" HTML формы. Нужная операция активируется с помощью соответствующих переключателей. По умолчанию стоит операция «пересечение». Чтобы получить результат нужно нажать на кнопку «Вычислить». Результат вычислений выводится в нижнее текстовое поле с надписью «Результат».

Алгоритм работы программы

Все данные с формы, при нажатие на кнопку «Вычислить», отправляются в PHP скрипт.

Что делает скрипт:

1.Проверяет, чтобы элементы множества состояли только из латинских букв и чтобы между элементами стояли соответствующие разделители (точка, пробел, запятая). Если проверка находит несоответствие, то выводится сообщение «error» и программа прерывает выполнение.

Пример кода:

$mnozestvo1 = $_GET["mn1"];

$latin = "qwertyuiopasdfghjklzxcvbnm .,";

$isLatin = False;



for($i = 0; $i < strlen($mnozestvo1); $i++){

for($j = 0; $j < strlen($latin); $j++){

if($mnozestvo1[$i] == $latin[$j]){

$isLatin = True;

break;

}else{ $isLatin = False;}

}

if($isLatin != True){

echo "error ";

return;

}

}

2.Если проверка прошла успешно, то строка с элементами множества дробится на массив элементов этого множества.

Пример кода:

$arrayMnoz1 = preg_split("/[ ,.]/", $mnozestvo1);

3.Далее проходим по массиву с элементами множества и проверяем, чтобы каждый элемент состоял только из 2-х символов.

Пример кода:

for($i = 0; $i < count($arrayMnoz1); $i++){

if((strlen($arrayMnoz1[$i]) > 2) || (strlen($arrayMnoz1[$i]) < 2)){

echo "error ";

return;

}

}

4.Над вторым множеством также выполняются пункты 1 ,2 и 3.

5.Из данных переключателей получаем значение выбранного переключателя (p1, p2, p3, p4 – соответствуют операциям над множествами).

Пример кода:

$procName = $_GET["proc"];

6.Далее выполняем код, который соответствует выбранной операции над множествами. Выводим результат и прерываем программу, т.к. проверять следующие условия нет смысла.

Пример кода(объединение):

$result = "";

if ($procName == "p1"){

for ($i=0; $i< count($arrayMnoz1); $i++){

for ($j=0; $j< count($arrayMnoz2); $j++){

if ($arrayMnoz1[$i] == $arrayMnoz2[$j]){

$result = $result.$arrayMnoz1[$i].' ';

break;

}

}

}

echo $result;

return;

}

Исходный код

(HTML)

Множестово "1":


Множестово "2":


{echo" checked ";}?> checked value="p1">Пересечение

{echo" checked ";}?> value="p2">Объединение

{echo " checked ";}?> value="p3">Дополнение

{echo" checked ";}?> value="p4">Сим.разность

Результат:

(PHP)

$procName = $_GET["proc"];

$mnozestvo1 = $_GET["mn1"];

$latin = "qwertyuiopasdfghjklzxcvbnm .,";

$isLatin = False;

for($i = 0; $i < strlen($mnozestvo1); $i++){

for($j = 0; $j < strlen($latin); $j++){

if($mnozestvo1[$i] == $latin[$j]){

$isLatin = True;

break;

}else{

$isLatin = False;

}

}

if($isLatin != True){

echo "error ";

return;

}

}

$arrayMnoz1 = preg_split("/[ ,.]/", $mnozestvo1);

$mnozestvo2 = $_GET["mn2"];

$isLatin = False;

for($i = 0; $i < strlen($mnozestvo2); $i++){

for($j = 0; $j < strlen($latin); $j++){

if($mnozestvo2[$i] == $latin[$j]){

$isLatin = True;

break;

}else{

$isLatin = False;

}

}

if($isLatin != True){

echo "error ";

return;

}

}

$arrayMnoz2 = preg_split("/[ ,.]/", $mnozestvo2);

for($i = 0; $i < count($arrayMnoz1); $i++){

if((strlen($arrayMnoz1[$i]) > 2) || (strlen($arrayMnoz1[$i]) < 2)){

echo "error ";

return;

}

}

for($i = 0; $i < count($arrayMnoz2); $i++){

if((strlen($arrayMnoz2[$i]) > 2) || (strlen($arrayMnoz2[$i]) < 2)){

echo "error ";

return;

}

}

$result = "";

if ($procName == "p1"){

for ($i=0; $i< count($arrayMnoz1); $i++){

for ($j=0; $j< count($arrayMnoz2); $j++){

if ($arrayMnoz1[$i] == $arrayMnoz2[$j]){

$result = $result.$arrayMnoz1[$i].' ';

break;

}

}

}

echo $result;

return;

}

$result = "";

if ($procName == "p2"){

for ($i=0; $i

$result = $result . $arrayMnoz1[$i] . ' ';

}

for ($i=0; $i

$flag = True;

for ($j=0; $j

if ($arrayMnoz2[$i]== $arrayMnoz1[$j]){

$flag=False;

break;

}

}

if($flag==True){

$result = $result . $arrayMnoz2[$i] . ' ';

}

}

echo $result;

return;

}

if ($procName == "p3"){

for ($i=0; $i

$flag = True;

for ($j=0; $j

if ($arrayMnoz1[$i]== $arrayMnoz2[$j]){

$flag=False;

break;

}

}

if($flag==True){

$result = $result . $arrayMnoz1[$i] . ' ';

}

}

echo $result;

}

$result = "";

if ($procName == "p4"){

for ($i=0; $i

$flag = True;

for ($j=0; $j

if ($arrayMnoz1[$i]== $arrayMnoz2[$j]){

$flag=False;

break;

}

}

if($flag==True){

$result = $result . $arrayMnoz1[$i] . ' ';

}

}

for ($i=0; $i

$flag = True;

for ($j=0; $j

if ($arrayMnoz2[$i]== $arrayMnoz1[$j]){

$flag=False;

break;

}

}

if($flag==True){

$result = $result . $arrayMnoz2[$i] . ' ';

}

}

echo $result;

}

?>

Контрольный пример

Содержание

Cодержание…………………………………………………………………….1

Постановка задачи…………………………………………………………….2

Теоретическая справка………………………………………………………..2

Инструкция по работе с программой……………………………………….2

Алгоритм работы программы………………………………………………..2

Исходный код (HTML)…………………………………………………………5

Исходный код (PHP)……………………………………………………………6

Контрольный пример…………………………………………………………..9


5561843018158729.html
5561912781833133.html
    PR.RU™