Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2011, 21:17   #1
Елена_05
Пользователь
 
Регистрация: 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:perator| (Mnoj &rhs)
{
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:perator& (Mnoj &rhs)
{
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:perator- (Mnoj &rhs)
{
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:perator= (Mnoj rhs)
{
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]
Елена_05 вне форума Ответить с цитированием
Старый 17.05.2011, 21:18   #2
Елена_05
Пользователь
 
Регистрация: 17.05.2011
Сообщений: 55
По умолчанию

Цитата:
Сообщение от Елена_05 Посмотреть сообщение
Прошу помочь, препод задал задание по созданию собственного компонента в Дельфи(компонент по работе с множествами). Дал код программы рабочей. Долго лазила не могу сделать, помогите пожалуйста очень надо!

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:perator| (Mnoj &rhs)
{
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:perator& (Mnoj &rhs)
{
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:perator- (Mnoj &rhs)
{
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:perator= (Mnoj rhs)
{
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]


еще я не понимаю, почему код программы он дал на С++
Елена_05 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание пользовательского исключения 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