• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите найти ошибку

gabriela

Новые
Регистрация
10 Май 2012
Сообщения
20
Реакции
0
Баллы
0
Помогите найти ошибку

const
n=10;
type
bluda=(Borscht,Soup,Salsola,Ear,Okroshka,Pickle,Meatballs,Rice,Roast,Buckwheat,Pasta,Vegetable_stew,Mashed_potatoes,Salads,Casseroles,Cheese_cakes,Jelly,Compote,Tea,Coffee);
assort= set of bluda;
menu= array [1..n] of assort;
//-------------------------------------------------
procedure Nal (d:menu;var a,b,c:assort);
var
i:Integer;
begin
a:=[ ];
b:=d[1];
for i:=1 to n do
begin
a:=a+d;
b:=b*d
end;

c:=[Borscht..Coffee]-a
end;
//------------------------------------------------
procedure Print (a:assort);
var
i:bluda;
begin
for i:=Borscht to Coffee do
if i in a then
write(i, ' ')
end;
//-----------------------------------------------
var
mn:menu;
x,y,z:assort;

begin
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Nal(mn,x,y,z);
Writeln;
Print(x);
Writeln('блюда которые имеются и на завтрак, и на обед, и на ужин:');
Print(y);
Writeln;
Print(z);
Readln
end.
В столовой имеются отдельные меню на завтрак, обед и ужин.Известно, что в каждом из этих меню не более 10 видов блюд.Определить какие виды блюд имеются только на
завтрак, только на ужин,толькои на обед(виды блюд рассматривать как данные
перечислимого типа)
 
Прежде всего - уберите чисто ошибки "грамматические": пробелы в фрикадельках и студне. Ну а потом... К сожалению, насколько я знаю, в Паскале НЕ СУЩЕСТВУЕТ способа вывести на печать НАЗВАНИЯ компонентов перечисляемого типа, а потому действие
Код:
for i:=Borscht to Coffee do
 if i in a then write(i, ' ')
не пройдет. Вроде как-то так.
 
а как исправить?
Честно говоря, не знаю. И вообще Вы тут накрутили такие ужасы: работу с массивами множеств элементов перечисляемого типа... Не, нам бы чего попроще, извините.
А как вывести названия... Ну, вероятно, самым тупым образом: объявить массив
Names:Array[Borscht..Coffee] of String;
а затем 20 операций типа
Names[Borscht]:='Borscht';
Names[Soup]:='Soup';
и т.д. - тогда названия можно вывести. Идиотизм, конечно, сам вижу, но ничего более умного в голову не приходит.
Вскользь замечу: если я правильно помню, Вы пользуетесь Паскалем АВС. Так вот, будь у Вас нормальный Паскаль, можно было бы засунуть строковый массив в константы, а с этим... АВС, который, видите ли, типизированных констант в упор не понимает, только так.
 
Назад
Сверху