![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 17.05.2011
Сообщений: 55
|
![]()
Прошу помочь, препод задал задание по созданию собственного компонента в Дельфи(компонент по работе с множествами). Дал код программы рабочей. Долго лазила не могу сделать, помогите пожалуйста очень надо!
class Mnoj { private: int *MnojM, cur, sizeM; public: Mnoj() { sizeM=0; cur=-1; } Mnoj (int size) //конструктор по количеству элементов { MnojM =new int[size]; sizeM =size; cur=-1; } Mnoj (const int arr[], int len) //конструктор из массива { sizeM=len; MnojM=new int[sizeM]; for(int i=0; i<sizeM; i++) MnojM[i]=arr[i]; cur=sizeM-1; } Mnoj (Mnoj &M) { sizeM=M.sizeM; MnojM=new int[sizeM]; for(int i=0; i<sizeM; i++) MnojM[i]=M.MnojM[i]; cur=sizeM-1; } ~Mnoj () {delete[] MnojM;} void Sbros(); //сброс множества void Push (int ch); //установка значения в множество int Pop (); //взятие из множества int CurShow () const; //печать элемента int PustoeMnoj() const; //пустое ли множество int PolnoeMnoj() const; //проверка на заполненность int GetSizeOfMnoj(); //размер множества int GetCurElmOfMnojNum(); //номер последнего элемента множества void UvelichenieMnoj (Mnoj &M, int nLen=1); // увеличение размера множества до заданного void Print() { for(int i=0; i<sizeM; i++) cout<<i<<" element mnojestva ="<<MnojM[i]<<endl; } Mnoj operator| (Mnoj &rhs); //"Или" 2 множеств Mnoj operator& (Mnoj &rhs); //"И" 2 множеств Mnoj operator- (Mnoj &rhs); //"Разность" 2 множеств Mnoj& operator= (Mnoj rhs); }; void Mnoj::Sbros() { cur=-1; } void Mnoj::Push (int ch) { MnojM[++cur]=ch; } int Mnoj::Pop () { return (MnojM[cur--]); } int Mnoj::CurShow () const { return (MnojM[cur]); } int Mnoj::PustoeMnoj() const { return (cur==-1); } int Mnoj::PolnoeMnoj() const { return (cur==sizeM-1); } int Mnoj::GetSizeOfMnoj() { return sizeM; } int Mnoj::GetCurElmOfMnojNum() { return cur; } void Mnoj::UvelichenieMnoj (Mnoj &M, int nLen) { int Len=M.GetSizeOfMnoj(); int *temp=new int[Len]; for(int i=0; i<Len; i++) temp[i]=M.MnojM[i]; M.MnojM= new int[Len+nLen]; for(int i=0; i<Len; i++) M.MnojM[i]=temp[i]; delete[] temp; M.cur=Len-1; M.sizeM=Len+nLen; } Mnoj Mnoj: ![]() { int nsz=sizeM+ rhs.sizeM; if(sizeM<=rhs.sizeM) { for(int i=0; i<sizeM; i++) for(int j=0; j<rhs.sizeM; j++) { if (MnojM[i]==rhs.MnojM[j]) {nsz--; break;} } } else { for(int i=0; i<rhs.sizeM; i++) for(int j=0; j<sizeM; j++) { if (rhs.MnojM[i]==MnojM[j]) {nsz--; break;} } } Mnoj Temp(nsz); bool prov; while(!Temp.PolnoeMnoj()) { for(int i=0; i<sizeM; i++) Temp.Push(MnojM[i]); for(int j=0; j<rhs.sizeM; j++) { for(int k=0; k<sizeM; k++) { if(rhs.MnojM[j]==MnojM[k]) {prov=false; break;} else prov=true; } if(prov) Temp.Push(rhs.MnojM[j]); } } return Temp; } Mnoj Mnoj: ![]() { int nsz=0; for(int i=0; i<sizeM; i++) for(int j=0; j<rhs.sizeM; j++) { if (MnojM[i]==rhs.MnojM[j]) {nsz++; break;} } Mnoj Temp(nsz); while(!Temp.PolnoeMnoj()) { for(int k=0; k<sizeM; k++) for(int j=0; j<rhs.sizeM; j++) { if(MnojM[k]==rhs.MnojM[j]) {Temp.Push(MnojM[k]); break;} } } return Temp; } Mnoj Mnoj: ![]() { int nsz=sizeM; for(int i=0; i<sizeM; i++) for(int j=0; j<rhs.sizeM; j++) { if (MnojM[i]==rhs.MnojM[j]) {nsz--; break;} } Mnoj Temp (nsz); bool prov; while(!Temp.PolnoeMnoj()) { for(int k=0; k<sizeM; k++) { prov=true; for(int j=0; j<rhs.sizeM; j++) { if(MnojM[k]==rhs.MnojM[j]) {prov=false; break;} else prov=true; } if(prov) Temp.Push(MnojM[k]); } } return Temp ; } Mnoj& Mnoj: ![]() { if(this==&rhs) return *this; sizeM=rhs.sizeM; MnojM=new int[sizeM]; for(int i=0; i<sizeM; i++) MnojM[i]=rhs.MnojM[i]; cur=sizeM-1; return *this; } int main() { Mnoj A, B(5); int mas[3]; cout<<"Vvedite elementi massiva (3)"<<endl; for(int i=0; i<3; i++) cin>>mas[i]; Mnoj C(mas,3); int ch; cout<<"Vvedite chislo Elementov Mnojestva A"<<endl; cin>>ch; A.UvelichenieMnoj(A,ch); cout<<"Teper' zapolnim Mnojestvo A:"<<endl; int el=0; while(!A.PolnoeMnoj()) { cout<<"Vvedite element"<<endl; cin>>el; A.Push(el); } cout<<"Zapolnim Mnojestvo B:"<<endl; while(!B.PolnoeMnoj()) { cout<<"Vvedite element"<<endl; cin>>el; B.Push(el); } cout<<"\n\n\n"; cout<<"A:"<<endl; A.Print(); cout<<"\n\n\n"; cout<<"B:"<<endl; B.Print(); cout<<"\n\n\n"; cout<<"C:"<<endl; C.Print(); cout<<"\n\n\n"; cout<<"Novoe Mnojestvo K=A&B:"<<endl; Mnoj K; K=A&B; K.Print(); cout<<"\n\n\n"; cout<<"Novoe Mnojestvo D=A|B:"<<endl; Mnoj D; D=A|B; D.Print(); cout<<"\n\n\n"; cout<<"Novoe Mnojestvo R=A-C:"<<endl; Mnoj R; R=A-C; R.Print(); cout<<"\n\n\n"; while(1); return 0; }[/SIZE] |
![]() |
![]() |
![]() |
#2 | |
Пользователь
Регистрация: 17.05.2011
Сообщений: 55
|
![]() Цитата:
еще я не понимаю, почему код программы он дал на С++ |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание пользовательского исключения | Pti44ka | Общие вопросы .NET | 2 | 02.06.2010 09:16 |
Создание компонента | sashchernun | Компоненты Delphi | 2 | 01.03.2010 00:10 |
Динамическое создание компонента из компонента)) | Impuls1989 | Компоненты Delphi | 8 | 22.10.2009 00:08 |
Создание трехмерного пользовательского интерфейса | NSV | Компоненты Delphi | 25 | 26.06.2009 21:32 |
Создание пользовательского словаря | kekur | Помощь студентам | 4 | 11.03.2008 12:10 |