|
|
zadach199.PAS |
|
{* Задача 199 *}Unit ZADACH199;Interface Implementation Begin writeln('Каждый из N посетителей кафе (N-заданное число) выбрал 3 блюда из предложенного списка, содержащего 10 наименований. Необходимо определить кол-во посетителей, чьи вкусы полностью совпали, напечатать номера выбранных блюд. Порядок перечисления блюд одним посетителем не важен, но каждый из них не может выбрать одно и то же блюдо несколько раз. Помогите, пожалуйста, если не трудно '); End. Program pas13720; Uses zadach199.pas; {* Эту строку можно удалить *} Uses crt; {* Подключаем внешние файлы *} Type {* Используемые типы *} mn = Set Of byte; Const {* Предопределенные *} cf = [1..10]; {для проверки правильности ввода} Var {* Необходимые переменные *} ms : Array[1..100] Of mn; {массив множеств} n : byte; a : byte; b : byte; c : byte; {размер массива, 3 числа для ввода} i : byte; j : byte; k : byte; l : byte; p : byte; t : byte; {разные счетчики циклов} Begin clrscr; {* Стираем всё с экрана *} write('n='); readln(n); writeln('Введите наборы номеров блюд:'); For i := 1 To n Do {* Увеличиваем i от 1 до n с шагом 1 *} Begin ms[i] := []; {множество пустое} Repeat write('a='); readln(a); {вводим 1 число} Until a In cf; {допустимое} include(ms[i], a); {заносим в множество} Repeat write('b='); readln(b); {2 число} Until (b In cf)And(ba); {допустимое и не равно 1} include(ms[i], b); {в множество} Repeat write('c='); readln(c); {3 число} Until (c In cf)And(ca)And(cb); {допустимое и не равно 1 и 2} include(ms[i], c); {в множество} End; For i := 1 To n Do {идем по массиву} Begin k := 0; {совпадений 0} For j := 1 To n Do {идем по "клону" массива} If ms[i] = ms[j] Then k := k + 1; {если совпало, считаем} If k > 1 Then {если больше одного(сам с собой не считаем)} Begin write('Блюда '); For l := 1 To 10 Do {* Переменная l увеличивается с 1 до 10 *} If l In ms[i] Then write(l, ' '); {выводим элементы множества} write(' ', k, ' человек'); {сколько человек} writeln; {* Вывод пустой строки *} For p := 1 To n Do {снова идем по массиву} If ms[p] = ms[i] Then {удаляем все найденные совпадения} Begin For t := p To n - 1 Do {* Цикл для t => [p .. n] *} ms[t] := ms[t + 1]; {сдвигом массива влево} n := n - 1; {уменьшаем размер массива} End; End; End; readln End. 07.08.2014 - Breakpoint - точка остановки 07.08.2014 - Топ-10 самых популярных приложений в Facebook 18.11.2013 - Панель управления и персонализация системы. Windows Vista 18.11.2013 - Логические и физические диски. Windows Vista 18.11.2013 - Удаление файлов и папок 01.11.2013 - Программирование дисковых подсистем: возможности 31.10.2013 - Windows8 или Windows7? 31.10.2013 - Windows8, игры |
|
Non-commercial fansite
|