Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.05.2018, 22:57
andrei907813 andrei907813 вне форума
Прохожий
 
Регистрация: 21.05.2018
Сообщения: 1
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Delphi нужна помощь!

Программа «Гараж» В гараже предприятия имеются автомобили, которые используются различными
цехами и службами завода: ГАЗ, МАЗ, УАЗ, ВАЗ, ЛАЗ, КамАЗ, ЗИЛ, КрАЗ, ТАТРА, ФОРД. Задайте
количество заводских служб и цехов, а также наборы машин, эксплуатируемых этими подразделениями.
Постройте и распечатайте: Множество автомобилей, которые используются всеми подразделениями;
Множество автомобилей, которые имеет хотя бы одна служба; Множество автомобилей, которых нет ни в
одном цехе;. Два множества: первое множество должно включать в себя машины, работающие во всех
службах завода, а второе – эксплуатирующиеся хотя бы в одной из них; Два множества: первое множество
должно включать в себя автомобили, работающие хотя бы в одном цехе, а второе – машины, которых нет
ни в одном цехе; Два множества: первое множество должно включать в себя машины, которые не
используются ни одной заводской службой, а второе – автомобили, работающие во всех службах (10)
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
unit Unit1;
  
interface
  
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Grids;
  
type
 TForm1 = class(TForm)
 Label1: TLabel;
 Button1: TButton;
 Button2: TButton;
 Button3: TButton;
 ListBox1: TListBox;
 StringGrid1: TStringGrid;
 Edit1: TEdit;
 Label2: TLabel;
 ListBox2: TListBox;
 Label3: TLabel;
 Button4: TButton;
 Label4: TLabel;
 ListBox3: TListBox;
 Label5: TLabel;
 ListBox4: TListBox;
 procedure Button1Click(Sender: TObject);
 procedure Button2Click(Sender: TObject);
 procedure FormCreate(Sender: TObject);
 procedure Button3Click(Sender: TObject);
 procedure Button4Click(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
type mark=(gz,mz,uz,vz,lz,kz,zl,kr,tt,fr);//перечислимый тип для создания множеств
 mnz=set of mark; //тип множеств
const
 //названия марок автомобилей
 naz:array[mark] of string=('ГАЗ','МАЗ','УАЗ','ВАЗ','ЛАЗ','КамАЗ','ЗИЛ','КрАЗ',
 'ТАТРА','ФОРД');
var
 Form1: TForm1;
 a:array of mnz; //массив множеств
 n:integer;//количество множеств
 mn:integer; //их счетчик
implementation
  
{$R *.dfm}
//заготовка
procedure TForm1.FormCreate(Sender: TObject);
var i:mark;
begin
with ListBox1 do
 begin
 for i:=gz to fr do
 Items.Add(naz[i]);//заполним список
 ExtendedSelect:=false;//сделам возможным
 MultiSelect:=true; //выбор нескольких строк не по порядку
 end;
Button1.Enabled:=true;//включим кнопку 1
Button2.Enabled:=false; //выключим 2,3 и 4
Button3.Enabled:=false;
Button4.Enabled:=false;
with StringGrid1 do
 begin
 fixedrows:=1;
 fixedcols:=0;
 rowcount:=ord(fr)+1;
 end;
end;
//задать размер массива множеств и создание таблицы
procedure TForm1.Button1Click(Sender: TObject);
var k:integer;
begin
val(Edit1.Text,n,k);
if(k<>0)or not(n in [3..10])then
 begin
 ShowMessage('Неверно введено количество цехов');
 Edit1.Clear;
 Edit1.SetFocus;
 exit;
 end;
setlength(a,n);
with StringGrid1 do
 begin
 colcount:=n;
 for k:=0 to n-1 do
 cells[k,0]:='Цех '+inttostr(k+1);
 end;
Button1.Enabled:=false;
Button2.Enabled:=true;
end;
  
//предлагаем заполнинить очередное множество
procedure TForm1.Button2Click(Sender: TObject);
var i:byte;
begin
inc(mn);//увеличим счетчик множества
for i:=0 to ListBox1.Count-1 do
ListBox1.Selected[i]:=false;//уберем выделения
Showmessage('Выберите продукты для множества '+inttostr(mn));
Button2.Enabled:=false;//выключим 2
Button3.Enabled:=true; //включим 3
end;
 //создание и вывод множеств
procedure TForm1.Button3Click(Sender: TObject);
var i,j:byte;
 k:mark;
begin
a[mn-1]:=[];//множество пустое
for i:=0 to Listbox1.Count-1 do //пройдем по списку
if Listbox1.Selected[i] then a[mn-1]:=a[mn-1]+[mark(i)];//выделенные в множество
j:=0;
for k:=gz to fr do //выведем множество в StringGrid
if k in a[mn-1] then
 begin
 inc(j);
 StringGrid1.Cells[mn-1,j]:=naz[k];
 end;
Button2.Enabled:=true;//включим 2
Button3.Enabled:=false; //выключим 3
if mn=n then //если все
 begin
 Button2.Enabled:=false;//выключим 2
 Button3.Enabled:=false; //выключим 3
 Button4.Enabled:=true; //включим 4
 end;
end;
//выполнить задание
//найти марки которые есть во всех цехах
//хотя бы в 1 цехе
//ни в 1 цехе
procedure TForm1.Button4Click(Sender: TObject);
var k:mark;
 f1,f2,f3,w,i:byte;
begin
//есть во всех
f1:=0;
f2:=0;
f3:=0;
for k:=gz to fr do
 begin
 w:=0;
 for i:=0 to n-1 do
 if k in a[i] then w:=w+1;
 if w=0 then
 begin
 f3:=1;
 ListBox4.Items.Add(naz[k]);
 end
 else if w=n then
 begin
 ListBox2.Items.Add(naz[k]);
 f1:=1;
 end
 else if w>0 then
 begin
 ListBox3.Items.Add(naz[k]);
 f2:=1;
 end;
 end;
if f1=0 then ListBox2.Items.Add('Таких марок нет!');
if f2=0 then ListBox3.Items.Add('Таких марок нет!');
if f3=0 then ListBox4.Items.Add('Таких марок нет!')
end;
  
end.
Админ: Пользуемся тегами при оформлении кода!

Помогите сделать задания где начинается два множества. Просто не могу понять как сделать.

Последний раз редактировалось Admin, 22.05.2018 в 22:33.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:40.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025