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

 



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

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

Программа «Гараж» В гараже предприятия имеются автомобили, которые используются различными
цехами и службами завода: ГАЗ, МАЗ, УАЗ, ВАЗ, ЛАЗ, КамАЗ, ЗИЛ, КрАЗ, ТАТРА, ФОРД. Задайте
количество заводских служб и цехов, а также наборы машин, эксплуатируемых этими подразделениями.
Постройте и распечатайте: Множество автомобилей, которые используются всеми подразделениями;
Множество автомобилей, которые имеет хотя бы одна служба; Множество автомобилей, которых нет ни в
одном цехе;. Два множества: первое множество должно включать в себя машины, работающие во всех
службах завода, а второе – эксплуатирующиеся хотя бы в одной из них; Два множества: первое множество
должно включать в себя автомобили, работающие хотя бы в одном цехе, а второе – машины, которых нет
ни в одном цехе; Два множества: первое множество должно включать в себя машины, которые не
используются ни одной заводской службой, а второе – автомобили, работающие во всех службах (10)
Код:
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.
Ответить с цитированием
Ответ



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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2018

ВКонтакте   Facebook   Twitter