Решить задачи с формул алгебры логики!
4. На столе лежат три пачки тетрадей 5-го, 7-го и 10-го классов. На
первой пачке написано: «10 класс», на второй — «5 или 7 класс»,
на третьей — «7 класс». Известно, что ни одна надпись не верна.
В какой пачке лежат тетради 5-го класса?
5. В бутылке, стакане, кувшине и банке находятся молоко, лимонад,
квас и вода. Известно, что вода и молоко не в бутылке. Сосуд с
лимонадом находится между кувшином и сосудом с квасом. В банке — не лимонад и не вода. Стакан находится между банкой и
сосудом с молоком. Как распределены жидкости по сосудам?
6. Определите, кто из подозреваемых участвовал в преступлении,
если известно, что:
а) если Иванов не участвовал или Петров участвовал, то Сидоров
участвовал;
б) если Иванов не учпстмоин.л, то Сидоров не участвовал.
7 . В нарушении правил обмена валюты подозреваются четыре работника банка: A, B, C и D. Известно, что:
а)если А нарушил, то и B нарушил правила обмена валюты;
б) если B нарушил, то C нарушил или А не нарушил;
в) если D не нарушил, то А нарушил, а С не нарушил;
г) если D нарушил, то и A нарушил.
Внимание! Если программа не работает, обновите версию!
begin
// структура строки
// день время канал вид название(возможно, многословное)
// цель: удалив "канал" (третье слово), найти совпадающие строки
var ms:=ReadAllLines('TV.txt');
ms.PrintLines; // чтобы было понятно содержимое файла
Writeln;
var d:=ms.GroupBy(s->(s.ToWords[:2]+s.ToWords[3:]).JoinIntoString(' '))
.Select(t->(t.Key,t.Count)).Where(t->t[1]>1).Select(t->t[0]);
if d.Count=0 then Writeln('Искомые передачи отсутствуют')
else
foreach var s in d do begin
var key:=s.ToWords.Take(2).JoinIntoString;
ms.Where(t->t.ToWords.Take(2).JoinIntoString=key).Printlines;
Writeln
end
end.
Пример
Понедельник 09:00 Первый Новости Новости на Первом
Суббота 19:40 Первый Фильм Кин-дза-дза!
Среда Первый 07:15 НТВ Мультфильм Трое из Простоквашино
Четверг 19:40 Первый Фильм Кин-дза-дза!
Вторник 09:00 Первый Новости Новости на Первом
Понедельник 12:00 Первый Новости Новости на Первом
Пятница 16:40 Россия-1 Мультфильм Трое из Простоквашино
Суббота 19:40 Россия-1 Фильм Кин-дза-дза!
Среда 09:00 Первый Новости Новости на Первом
Четверг 09:00 Первый Новости Новости на Первом
Суббота 19:40 НТВ Фильм Кин-дза-дза!
Суббота 19:40 Первый Фильм Кин-дза-дза!
Суббота 19:40 Россия-1 Фильм Кин-дза-дза!
Суббота 19:40 НТВ Фильм Кин-дза-дза!
var
n,i,z:integer;
begin
readln(n);
z:=1;
for i:=2 to n do
z:=z*i;
writeln(z);
end.
Если программу написать так, то максимальный факториал, которой мы сможем вычислить - 12. Можно integer изменить на real, тогда чуть больше сможем вычислить. Так же можно вычислить через массив, тогда где-то 3000 мы сможем получить.
Если же ввести больше 12 в этой программе, то получится переполнение переменой, из-за чего число пойдёт "по кругу". Т.е. мы получим не 3 000 000 000, а -1 000 000 000, т.к. максимальное число у integer - примерно 2 000 000 000