Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите найти ошибку (http://www.tehnari.ru/f41/t73975/)

gabriela 26.05.2012 18:40

Помогите найти ошибку
 
const
n=10;
type
bluda=(Borscht,Soup,Salsola,Ear,Okroshka,Pickle,Me atballs,Rice,Roast,Buckwheat,Pasta,Vegetable_stew, Mashed_potatoes,Salads,Casseroles,Cheese_cakes,Jel ly,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[i];
b:=b*d[i]
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 видов блюд.Определить какие виды блюд имеются только на
завтрак, только на ужин,толькои на обед(виды блюд рассматривать как данные
перечислимого типа)

Vladimir_S 26.05.2012 19:12

Прежде всего - уберите чисто ошибки "грамматические": пробелы в фрикадельках и студне. Ну а потом... К сожалению, насколько я знаю, в Паскале НЕ СУЩЕСТВУЕТ способа вывести на печать НАЗВАНИЯ компонентов перечисляемого типа, а потому действие
Код:

for i:=Borscht to Coffee do
 if i in a then write(i, ' ')

не пройдет. Вроде как-то так.

gabriela 26.05.2012 19:38

а как исправить?

Vladimir_S 26.05.2012 20:51

Цитата:

Сообщение от gabriela (Сообщение 738284)
а как исправить?

Честно говоря, не знаю. И вообще Вы тут накрутили такие ужасы: работу с массивами множеств элементов перечисляемого типа... Не, нам бы чего попроще, извините.
А как вывести названия... Ну, вероятно, самым тупым образом: объявить массив
Names:Array[Borscht..Coffee] of String;
а затем 20 операций типа
Names[Borscht]:='Borscht';
Names[Soup]:='Soup';
и т.д. - тогда названия можно вывести. Идиотизм, конечно, сам вижу, но ничего более умного в голову не приходит.
Вскользь замечу: если я правильно помню, Вы пользуетесь Паскалем АВС. Так вот, будь у Вас нормальный Паскаль, можно было бы засунуть строковый массив в константы, а с этим... АВС, который, видите ли, типизированных констант в упор не понимает, только так.


Часовой пояс GMT +4, время: 03:34.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.