Use reference instead of pointer

This commit is contained in:
Inex Code 2020-09-11 08:53:27 +00:00
parent eeb0cdd9f0
commit 12724d8307

View file

@ -52,7 +52,6 @@ public:
void show() void show()
{ // Должен выдавать на экран изображение при помощи printf или std::cout { // Должен выдавать на экран изображение при помощи printf или std::cout
// TODO реализовать
for (uint y = 0; y < my; y++) for (uint y = 0; y < my; y++)
{ {
for (uint x = 0; x < mx; x++) for (uint x = 0; x < mx; x++)
@ -66,8 +65,6 @@ public:
int get(uint x, uint y) int get(uint x, uint y)
{ {
// TODO реализовать логику
return data[mx * (y) + (x)]; return data[mx * (y) + (x)];
} }
@ -82,34 +79,33 @@ public:
throw(y); throw(y);
} }
data[mx * (y) + (x)] = color; data[mx * (y) + (x)] = color;
// TODO реализовать логику
} }
void copy(Image *original) void copy(Image &original)
{ {
freemem(); freemem();
mx = original->getMx(); mx = original.getMx();
my = original->getMy(); my = original.getMy();
data = (uint *)malloc(sizeof(uint) * mx * my); data = (uint *)malloc(sizeof(uint) * mx * my);
for (uint y = 0; y < my; y++) for (uint y = 0; y < my; y++)
{ {
for (uint x = 0; x < mx; x++) for (uint x = 0; x < mx; x++)
{ {
data[mx * y + x] = original->get(x, y); data[mx * y + x] = original.get(x, y);
} }
} }
} }
// Returns true if equal // Returns true if equal
bool compare(Image *original) bool compare(Image &original)
{ {
if (original->getMx() == mx && original->getMy() == my) if (original.getMx() == mx && original.getMy() == my)
{ {
for (uint y = 0; y < my; y++) for (uint y = 0; y < my; y++)
{ {
for (uint x = 0; x < mx; x++) for (uint x = 0; x < mx; x++)
{ {
if (data[mx * y + x] != original->get(x, y)) if (data[mx * y + x] != original.get(x, y))
{ {
cout << "Not equal: x = " << x << "; y = " << y << "\n"; cout << "Not equal: x = " << x << "; y = " << y << "\n";
return false; return false;
@ -120,7 +116,7 @@ public:
} }
else else
{ {
cout << "original size: " << original->getMx() << "x" << original->getMy() << "\n"; cout << "original size: " << original.getMx() << "x" << original.getMy() << "\n";
cout << "current size: " << mx << "x" << my << "\n"; cout << "current size: " << mx << "x" << my << "\n";
return false; return false;
} }
@ -181,7 +177,6 @@ public:
readfile.open(filename); readfile.open(filename);
if (readfile.is_open()) if (readfile.is_open())
{ {
// TODO
try try
{ {
getline(readfile, line); getline(readfile, line);
@ -221,8 +216,8 @@ int main()
a.show(); a.show();
cout << "Image b \n"; cout << "Image b \n";
b.show(); b.show();
b.copy(&a); b.copy(a);
if (b.compare(&a) == true) if (b.compare(a) == true)
{ {
cout << "a == b after copy\n"; cout << "a == b after copy\n";
} }
@ -247,5 +242,7 @@ int main()
a.read_from_file("image"); a.read_from_file("image");
cout << "Image a, read from file \n"; cout << "Image a, read from file \n";
a.show(); a.show();
a.freemem();
b.freemem();
return 0; return 0;
} }