Hi!
Would you anybody please do check my code given below and say why I am getting Debug Assertion Failed.
I have used visual studio 6. But I think I have problems in my code. Please I do need urgent solution. Please help me.
#include <iostream.h>
int INITIAL = 6;//allocation size
int INCREMENT = 4;//if more allocation needed
int initialSize;//initial number of array elements
class Point
{
int x;
int y;
public:
Point();
Point ( int x, int y );
~Point()
{
cout << "";
}
int get_x();
int get_y();
void set_x(int x);
void set_y(int y);
void print();
};
Point::Point()
{
}
Point::Point(int x, int y)
{
this->x = x;
this->y = y;
}
void Point::set_x(int x)
{
this->x = x;
}
void Point::set_y(int y)
{
this->y = y;
}
int Point::get_x()
{
return x;
}
int Point::get_y()
{
return y;
}
void Point::print()
{
cout << " (" << get_x() << ", " << get_y() << ") " << endl;
}
class Vector_
{
Point *pArray;
int size;
public:
Vector_();
Vector_(Point p[]);
~Vector_()
{
cout << "";
};
int get_size();
int insert(Point p);
int insert(Point p[], int size);
int insert(Point p[], int start, int size );
int del (Point p);
int delat (int Pos);
int delat (int start, int length);
int iselement (Point p);
void displayVector_ ();//Defined
};
Vector_::Vector_()
{
}
Vector_::Vector_(Point p[])
{
if ( initialSize > INITIAL )
{
while (initialSize>INITIAL)
{
INITIAL += INCREMENT;
}
}
pArray = new Point[INITIAL];
pArray = p;
size = initialSize;
}
int Vector_::insert( Point p)
{
if (size+1 >= INITIAL)
{
while (size+1>=INITIAL)
{
INITIAL += INCREMENT;
}
Point *tempPArray;
tempPArray = new Point[INITIAL];
tempPArray = pArray;
tempPArray[size]=p;
size++;
//delete [] pArray;
pArray = new Point[INITIAL];
pArray = tempPArray;
}
else
{
pArray[size] = p;
size++;
}
return size-1;//Return value: in which index the entry is inserted.
}
int Vector_::insert(Point p[], int size)
{
int i, j;
Point *tempPArray;
if ((this->size+size) >= INITIAL)
{
while ((this->size+size) >= INITIAL)
{
INITIAL += INCREMENT;
}
tempPArray = new Point[INITIAL];
tempPArray = pArray;
for (i=0,j=this->size; i<size; i++, j++)
{
tempPArray[j] = p[i];
}
this->size += size;
pArray = new Point[INITIAL];
pArray = tempPArray;
}
else
{
for (i=0,j=this->size; i<size; i++, j++)
{
pArray[j] = p[i];
}
this->size += size;
}
return this->size-size;//index in which the first new entry is inserted.
}
int Vector_::insert(Point p[], int start, int size )
{
//assuming start is a index. start+1 is the nth element
int i, j;
Point *tempPArray;
if (start > this->size)
{
cout << "Error: Start location must be <= " << this->size << endl <<endl;
}
else if ((start+size) >= this->size || (start+size) >= INITIAL)
{
while ((start+size) >= INITIAL)
{
INITIAL += INCREMENT;
}
tempPArray = new Point[INITIAL];
tempPArray = pArray;
for (i=0,j=start; i<size; i++, j++)
{
tempPArray[j] = p[i];
//cout << p[i].get_x() << " " << p[i].get_y();
}
if ( start +size > this->size)
{
this->size = start +size;
}
//pArray = new Point[INITIAL];
pArray = tempPArray;
}
else
{
for (i=0,j=start; i<size; i++, j++)
{
pArray[j] = p[i];
}
}
return start;
}
int Vector_::del (Point p)
{
//delete first occurrence of p
int i, j;
Point *tempPArray;
tempPArray = new Point [size];
int firstOccFound = 0;
int deletedIndex = -1;
if ( iselement(p))
{
for (i=0, j=0; i<size; i++)
{
if (!firstOccFound &&pArray[i].get_x()==p.get_x() && pArray[i].get_y()==p.get_y())
{
firstOccFound = 1;
deletedIndex = i;
continue;
}
tempPArray[j] = pArray[i];
j++;
}
size = j;
pArray = tempPArray;
cout << "Point : (" << p.get_x()<<", "<<p.get_y()<<")" << " is deleted." << endl <<endl;
}
else
{
cout << "No entry deleted."<<endl;
cout << "Error: Point : (" << p.get_x()<<", "<<p.get_y()<<")" << " is not in the vector."<<endl<<endl;
}
return deletedIndex;
}
int Vector_::delat (int Pos)
{
int i, j;
Point *tempPArray;
tempPArray = new Point [size];
if (Pos > size-1)
{
cout << "No entry deleted."<<endl;
cout <<"Error: Position must be less than " << size << endl << endl;
}
else
{
for (i=0, j=0; i<size; i++)
{
if ( i!= Pos)
{
tempPArray[j] = pArray[i];
j++;
}
}
cout << "Point : (" << pArray[Pos].get_x()<<", "<<pArray[Pos].get_y()<<")" << " at Postion "<< Pos << " is deleted." << endl <<endl;
size = j;
pArray = new Point[INITIAL];
pArray = tempPArray;
}
return 1;
}
int Vector_::delat (int start, int length)
{
int i, j;
Point *tempPArray;
tempPArray = new Point [size];
if (start >= size )
{
cout << "No entry deleted."<<endl;
cout << "Error: start: "<<start<<" must be less than Vector Size. Vector size is " << size <<endl<<endl;
}
else if (start+length >= size)
{
cout << "No entry deleted."<<endl;
cout << "Error: ( start: " <<start<< " + length: "<< length << " ) = "<< start+length << " which must be less than the Vector size. Vector size = " << size <<endl<<endl;
}
else
{
cout << "Deleted Point(s) : "<<endl ;
for (i=0, j=0; i<size; i++)
{
if ( i<start || i>start+length-1)
{
tempPArray[j] = pArray[i];
j++;
}
else
{
cout << "\t"<<"("<<pArray[i].get_x()<<", "<<pArray[i].get_y()<<")"<<endl;
}
}
size = j;
pArray = new Point[INITIAL];
pArray = tempPArray;
}
return 1;
}
int Vector_::iselement (Point p)
{
int i;
int found = 0;
for (i=0; i<size; i++)
{
if ( pArray[i].get_x()==p.get_x() && pArray[i].get_y()==p.get_y())
{
found = 1;
break;
}
}
return found;
}
int Vector_::get_size()
{
return size;
}
void Vector_::displayVector_ ()
{
int i;
cout << "The Vector is: "<<endl<<endl;
for (i=0; i<size; i++)
{
cout << "\t";
pArray[i].print();
}
cout <<endl<<endl;
}
void main ()
{
int numPoints;
Point *p;
int i, x, y;
cout << "Enter number of points : ";
cin >>numPoints;
initialSize = numPoints;
p = new Point[initialSize];
for (i=0; i<initialSize;i++)
{
cout << "Point "<<i+1<<endl;
cout << "\t x: ";
cin >> x;
cout << endl<<"\t y: ";
cin >> y;
cout << endl<<endl;
p[i].set_x(x);
p[i].set_y(y);
}
Vector_ v1 (p);
v1.displayVector_();
cout << v1.get_size();
cout << endl << endl << endl;
Point p1[5]=
{
Point(1,2),
Point(3,4),
Point(5,6),
Point(7,8),
Point(9,10),
};
v1.insert(p1, 5);
v1.displayVector_();
Point p2 (11, 11);
v1.insert(p2);
cout << endl << endl << endl;
v1.displayVector_();
cout << endl << endl << endl;
v1.insert(p1, 4, 5);
v1.displayVector_();
Point p3(9,10);
cout << endl << endl << endl;
cout << v1.iselement(p3);
v1.del(p3);
cout << endl << endl << endl;
v1.displayVector_();
v1.delat(3, 1);
cout << endl << endl << endl;
v1.displayVector_();
}