I am using Turbo c++ 4.5, and everytime I run this program weird errors happen and sometimes it shuts down. Im going to replace the compiler but in the meantime I wanted to know if this program works for anyone else.
Code:
#include <iostream.h>
#include <string.h>
#ifndef BUFFER_H
#define BUFFER_H
//class Buffer
class Buffer {
public:
Buffer();
~Buffer();
void Add(int Pos, char *b);
void ClearBuff();
void DisplayBuff();
private:
char *a;
};
#endif
Buffer::Buffer()
{
a = new char[1999];
}
Buffer::~Buffer()
{
delete[] a;
}
void Buffer::Add(int Pos, char *b)
{
int i = 0;
for (i = 0; i < strlen(b); i++)
{
if (Pos+i > 1999 || Pos+i < 0)
return;
a[Pos+i] = b[i];
}
}
void Buffer::ClearBuff()
{
int i = 0;
for (i = 0; i < 1999; i++)
a[i] = ' ';
}
void Buffer::DisplayBuff()
{
int i = 0;
for (i = 0; i < 1999; i++)
cout << a[i];
}
/******************************************************************************/
#ifndef ITEM_H
#define ITEM_H
// class Item
class Item {
public:
Item();
Item(char *a, float b);
~Item();
float GetPrice() { return Price; }
char *GetName() { return Name; }
void operator = (char *a);
void operator = (float a) { Price = a; }
private:
float Price;
char *Name;
};
#endif
Item::Item(): Price(0.0f), Name(NULL)
{
}
Item::Item(char *a, float b): Price(b), Name(NULL)
{
int i = 0;
if (Name != NULL)
{
if (strlen(Name) == 1)
delete Name;
else
delete[] Name;
}
Name = new char[ strlen(a) + 1 ];
for (i = 0; i < strlen(a); i++)
Name[i] = a[i];
}
Item::~Item()
{
if (Name != NULL)
{
if (strlen(Name) == 1)
delete Name;
else
delete[] Name;
}
}
void Item::operator = (char *a)
{
int i = 0;
if (Name != NULL)
{
if (strlen(Name) == 1)
delete Name;
else
delete[] Name;
}
Name = new char[ strlen(a) + 1];
for (i = 0; i < strlen(a); i++)
Name[i] = a[i];
}
/******************************************************************************/
int xytobuff(int x, int y);
void AddtoBuff(Buffer a, Item *b);
int main()
{
Buffer a;
Item b[5];
b[0] = "Zanahoria";
b[0] = 16.00;
b[1] = "Papa";
b[1] = 19.90;
b[2] = "Cebolla";
b[2] = 9.00;
b[3] = "Pepino";
b[3] = 12.50;
b[4] = "Papaya";
b[4] = 16.00;
b[5] = "Sandia";
b[5] = 26.90;
a.ClearBuff();
AddtoBuff(a, b);
a.DisplayBuff();
return 0;
}
int xytobuff(int x, int y)
{
return x + y * 80;
}
void AddtoBuff(Buffer a, Item *b)
{
int x = 5, y = 1;
int i = 0;
while (i < 5)
{
a.Add(xytobuff(x, y), b[i].GetName());
y++;
i++;
}
}
I know somethings look stupid but I was just messing around triying to fix it, maybe sometimes I dont free the memory or something like that.