|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
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. |