المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : يلي عندو تمارين برمجة 2


mansor_t
01-19-2008, 11:38 AM
السلام عليكم
يلي عندو تمارين برمجة 2
كلاس المصفوفة

#include<iostream.h>
#include<stdlib.h>
class array{
friend ostream &operator<<(ostream &,array &);
friend istream &operator>>(istream &,array &);


private:
int size;
int *ptr;
public:
array(int=10);
array(array &);
int getsize();
array &operator=(array &);
bool operator==(array &);
bool operator!=(array &);
int &operator[](int);
~array(){delete []ptr;}
};
array::array(int s)
{
size=(s>0?s:10);
ptr=new int[size];
for(int i=0;i<size;i++)
ptr[i]=0;

}
array::array(array &a)
{
size=a.size;
ptr=new int[size];
for(int i=0;i<size;i++)
ptr[i]=a.ptr[i];
}
int array::getsize()
{
return size;
}
array &array::operator =(array &a)
{
if(this!=&a)
{
if(size!=a.size)
{
size=a.size;
delete[]ptr;
ptr=new int[size];
}
for(int i=0;i<size;i++)
ptr[i]=a.ptr[i];
}
return *this;
}
bool array::operator ==(array &a)
{
if(size!=a.size)
return false;
for(int i=0;i<size;i++)
if(ptr[i]!=a.ptr[i])
return false;
return true;
}
bool array::operator !=(array &a)
{
return !(this->operator ==(a));
}
int &array::operator [](int id)
{
if(id<0 || id>=size)
{ cout<<"error id"<<endl;
exit(1);
}
return ptr[id];
}
ostream &operator<<(ostream &out,array &a)
{
for(int i=0;i<a.size;i++)
out<<a.ptr[i]<<endl;
return out;
}
istream &operator>>(istream &in,array &a)
{
for(int i=0;i<a.size;i++)
in>>a.ptr[i];
return in;

}
void main()
{
array a(5);
cout<<a;
cin>>a;
cout<<a[3]<<endl;
a[2]=15;
cout<<a[2]<<endl;

array a1(a);
cout<<a1;
cout<<a[15]<<endl;

}

Golden man
01-19-2008, 01:45 PM
ما شاء الله شيء جميل صديقي.

و لكني أظن أن هناك صنف المكدس هام جدا و هو جائنا في الامتحان العام الماضي فأرجو منك كتابته إذا كان لديك الوقت . لأن هناك من يحتاجه جدا.

و شكرا لك

mansor_t
01-20-2008, 04:27 AM
صنف المكدس


#include<iostream.h>
#include<conio.h>
#include<string.h>
class node
{
int data;
node *right,*left;
public:
node(){data=0;left=0;right=0;}
node(int d){data=d;right=0;left=0;}
int getdata(){return data;}
node *getright(){return right;}
node *getleft(){return left;}
void setdata(int d){data=d;}
void setright(node *r){right=r;}
void setleft(node *l){left=l;}
};
class stack
{
node *top;
public:
stack(){top=0;}
node *gettop(){return top;}
void push(int d)
{
node *p=new node(d);
if(top==0)top=p;
else
{
p->setright(top);
top=p;
}
}
void operator +=(int x)
{
push(x);
}
int pop()
{
node *p=top;
top=top->getright();
int d=p->getdata();
delete p;
return d;
}
int operator --(int)
{
return pop();
}
void print()
{
node *p=top;
while(p!=0)
{
cout<<p->getdata();
p=p->getright();
}
}
void operator [](int x)
{
for(int i=0;i<x;i++)
{
int v;cin>>v;
push(v);
}
}
};
void main()
{
stack s;
s[4];
while(s.gettop()!=0)cout<<s--;
}

mmn87
01-25-2008, 04:49 PM
يا سيدي مشكور على هالجهد وإن شاء الله من المتفوقين بالمادة

مع إني خلصت من هالمادة بعلامات عادية أي فوق المعدل بشوي

بس الحمد لله على كل شيء :):):):):):)