Решение логических задач Курсовая работа Агеева Алексея, гимн.5, 2002 г.

Презентация:



Advertisements
Похожие презентации
program Stepeny_a; Uses Crt; var a,b,c : real; begin writeln ( Введите числа a и b ); readln ( a, b ); c := a; while c < b do begin writeln (c:8:2) ;
Advertisements

Циклы. Вычислить сумму ряда чисел Program sum; var a: integer; s: real; Begin a:=1; s:=0; while a<600 do begin a:=a+1; s:=s+1/a; end; writeln ( ' s=
Линейные алгоритмы Тема урока:. Задача Составить блок-схему и написать программу на Паскале, меняющую значения переменных а и b местами. Данные вводятся.
Чтобы найти максимальный элемент в массиве и потом производить с ним какие-либо действия, нужно узнать его номер (индекс - I).Чтобы найти максимальный.
Урок в 10 классе Ветвление. Условный оператор. Сложные условия.
Тема: «Понятие квадратная матрица» :17:47.
ЦИКЛ «ДО» i:=1,n действия … FOR i:=1 TO n DO Begin Действия End; …
Решение задач. Вариант 1 1. Чему равна максимальная длина строки? 2. При помощи операций копирования и склейки из слова «жемчужина» составить слова: «чужие»,«муж».
Цель: Показать сходство и различие цикла с параметром в языках программирования QBasic и Turbo Pascal 7.0.
PROGRAM example1; const m=100; var a : ARRAY [1.. m] of INTEGER; i,k,n,q : INTEGER; BEGIN readln (n); randomize; WRITELN('Полученный массив:' ); FOR i.
Шутилина Л.А., A[1,1]A[1,2]A[1,3]A[1,4]A[1,5] A[2,1]A[2,2]A[2,3]A[2,4]A[2,5] A[3,1]A[3,2]A[3,3]A[3,4]A[3,5] A[4,1]A[4,2]A[4,3]A[4,4]A[4,5]
Одномерные массивы в языке программирования Pascal Общие сведения Презентация к уроку - 9 класс.
Program wr_text; var f: text; st: integer; i:integer; begin assign(f,'l1.TXT'); rewrite(f); write('вводите поочередно числа, после ввода очередного числа.
Процедуры и функции обработки строк Шутилина Л.А.
Условие? Действия1Действия2 данет. Задача С клавиатуры вводятся не равные между собой числа а и b. Большее из этих чисел заменить их суммой, а меньшее.
Тема: Цикл с параметром (цикл «Для») На естественном языке Для i от А до В повторять Тело цикла i,a,b- параметры цикла тело цикла – это команды, которые.
Операторы ветвления. Ветвление - такая форма организации действий, при которой в зависимости от выполнения некоторого условия совершается одна или другая.
Pascal: Условный оператор. Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие.
1 Вариант 2. Программа сложное условие program qq; var x: integer; begin writeln('Введите возраст'); read ( x ); and if (x >= 25) and (x = = равно не равно.
Самостоятельная работа по теме «Условный переход».
Транксрипт:

Решение логических задач Курсовая работа Агеева Алексея, гимн.5, 2002 г.

Задача 1 4 Нужно для 4 дежурных - Антипова, Климова, Маркова, и Лебедева-составить график дежурств с соблюдением следующих условий.

Условия 4 1. Если Лебедев не будет дежурить в понедельник, то в понедельник согласен дежурить Климов Если Климов не сможет дежурить ни в понедельник, ни в четверг, то Антипов будет дежурить в понедельник Если Марков не сможет дежурить в четверг, то Климов будет дежурить в среду Если Лебедев придет дежурить во вторник, то Климов не будет дежурить в понедельник Если Антипов не сможет дежурить в понедельник, то Марков не сможет дежурить во вторник.

Найти 4 Каким должен быть график дежурств?

Решение 4 Введем обозначения: L-Лебедев, K-Климов, А-Антипов, М-Марков. 4 Цифры означают :1-понедельник, 2- вторник, 3-среда, 4-четверг.

Согласно условиям задачи составим систему логических уравнений 4 1. Если Лебедев не будет дежурить в понедельник, то в понедельник согласен дежурить Климов. L 1 K 1 Так как L 1 K 1 равносильно L 1 +K 1 L 1 K 1 L 1 +K 1 По закону двойного отрицания (L 1 L 1 ) L 1 +K 1 Сделав все преобразования получаем L 1 K 1 L 1 +K 1 L 1 +K 1 -читается как Лебедев дежурит в понедельник или Климов дежурит в понедельник

По закону эквивалентности 1. М 4 K 3 M 4 +K 3 Читается так: Марков дежурит в четверг или Климов дежурит в среду 2. L 2 K 3 L 2 + K 3 Читается так: Лебедев не дежурит во вторник или Климов не дежурит в понедельник 3. A 1 M 2 A 1 + M 2 Читается так: Антипов дежурит в понедельник или Марков не дежурит во вторник

4 2. Если Климов не сможет дежурить ни в понедельник, ни в четверг, то Антипов будет дежурить в понедельник. (K 1 *K 4 ) A 1 Так как (K 1 *K 4 ) A 1 эквивалентно K 1 *K 4 + A 1 (K 1 *K 4 ) A 1 K 1 *K 4 + A 1 То по закону де Моргана (K 1 *K 4 K 1 +K 4 ) K 1 *K 4 + A 1 K 1 +K 4 + A 1 И по закону двойного отрицания (K 1 +K 4 K 1 +K 4 ) сделав все преобразования мы получаем (K 1 *K 4 ) A 1 K 1 +K 4 + A 1 читается так: Климов будет дежурить в понедельник или в четверг или Антипов будет дежурить в понедельник K 1 +K 4 + A 1

То обстоятельство,что один и тот же человек не может дежурить дважды и в один день могут дежурить два человека зададим формулами 4 L 2 *L K 1 *L K 1 *A K 4 *M L 1 *A 1 0

Программа для решения данной задачи (Pascal) program z1; uses crt; var m2,k1,k3,k4,l2,l1,m4,a1,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f:integer; label 1; begin clrscr; for m2:=0 to 1 do begin for k1:=0 to 1 do begin for k3:=0 to 1 do begin for k4:=0 to 1 do begin

for l2:=0 to 1 do begin for l1:=0 to 1 do begin for m4:=0 to 1 do begin for a1:=0 to 1 do begin f1:=(l1 or k1); f2:=(k1 or k4 or a1); f3:=(m4 or k3); f4:=(not l2 or not k1); f5:=(a1 or not m2); f6:=(not(k1 and k3)) and (not(k3 and k4)) and (not (k1 and k4));

f7:=not(l2 and l1); f8:=not(k1 and l1); f9:=not(k1 and a1); f10:=not(k4 and m4); f11:= not (l1 and a1); f:=f1 and f2 and f3 and f4 and f5 and f6 and f7 and f8 and f9 and f10 and f11; if f=1 then goto 1; end; end; end; end; end;end;end; end; 1:writeln('f k1 k3 k4 l1 l2 m2 m4 a1'); writeln(f,k1:3,k3:4,k4:4,l1:4,l2:4,m2:4,m4:4,a1:4); readln end. Запуск программы

Анализ ответа f1 k1 k3 k4 l1 l2 m2 m4 a Запустив программу мы получили ответ: KALM Из ответа следует: 1. Климов дежурит в понедельник 2. Марков дежурит в четверг 3. Лебедев дежурит в среду т.к из ответа следует что тон не дежурит в понедельник не дежурит во вторник 4. Антипов дежурит во вторник