Hi everyone,
I'm writing a program that has to do them following
main() :
-------
3 objects are declared (two of type A and one of type B)
The function frd_fun is called for two objects (B and one of A).
C frd_fun(A a, B b)
--------------------
it returns an object of type C which contains a pointer that points to a
string. This string contains the common elements of the strings in A and B.
The description I give is short cause I don't you to write the code for me,
just point me my mistakes.
I also would like to have a destructor function for all my classes, where I
will deallocate the memory (using delete)
here is my code
// ΑΣΚΗΣΗ 2
// ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ - 7o ΕΞΑΜΗΝΟ 2003-2004
// Όνομα: ΤΖΑΚΑΣ ΑΡΓΥΡΙΟΣ
// AEM : 4625
#include <iostream>
#include <ctype.h>
using namespace std;
class B;
class C;
class A
{
private:
int n;
char* abc;
int dynam; // An einai 0 den exei ginei diniamiki katanomi mnimis
public:
A(); // Default constructor definition
A(int x); // Constructor definition
~A();
//Friend function
friend void frd_fun(A a, B b);
};
A::A()
{
dynam = 0;
cout << endl << "Default constructor A called.";
n = 10;
abc = "ABCDEFGHIJ";
}
A::A(int x)
{
dynam = 1;
cout << endl << "Constructor A called.";
n = x;
abc = new char[n+1];
cout << endl << "Dwse ena string me " << n << " xaraktires --> ";
cin >> abc;
}
A::~A()
{
// if (dynam)
// delete [] abc;
cout << endl << " H klasi A katastrafike";
}
class B
{
private:
int n;
char* abc;
public:
B(int x); // Constructor
B(){ cout << endl << "Default constructor B called.";} // Default
constructor
~B(); // Destructor
//Friend function
friend void frd_fun(A a, B b);
};
B::B(int x)
{
cout << endl << "Constructor B called.";
n = x;
abc = new char[n+1];
cout << endl << "Dwse ena string me " << n << " xaraktires --> ";
cin >> abc;
for (int i = 0; i < n; i++)
{
if (isalpha(abc[i]))
abc[i]=toupper(abc[i]);
}
}
B::~B()
{
cout << endl << " H klasi B katastrafike";
}
class C
{
private:
int n;
char* abc;
public:
C(int x); // Constructor definition
~C(); // Destructor
void setAbc(char* txt);
};
C::C(int x)
{
cout << endl << "Constructor C called.";
n = x;
abc = new char[n+1];
}
C::~C()
{
cout << endl << " H klasi B katastrafike";
}
void C::setAbc(char* txt)
{
abc = txt;
}
void frd_fun(A a, B b)
{
C c2(1);
char common_abc[10];
for (int i = 0; i < a.n; i++)
{
for (int k = 0; k < b.n; k++)
{
if (a.abc[i] == b.abc[k])
common_abc[i] = a.abc[i];
}
}
c2.setAbc(common_abc);
cout << common_abc;
}
int main()
{
int k = 0, l = 0; // ΟΡΙΣΜΑΤΑ Ν ΓΙΑ ΤΗΣ ΣΥΝΑΡΤΗΣΕΙΣ ΑΡΧΙΚΩΝ ΣΥΝΘΗΚΩΝ
// ΤΩΝ ΚΛΑΣΕΩΝ Α ΚΑΙ Β
cout << endl << "Tha oristoun 2 antikeimena typou A,"
<< endl << " ena gia kathe ekdosi tis sinartisis arxikwn sinthikwn."
<< endl << endl << "Dwse to mikos xaraktirwn tou string --> ";
cin >> k;
cout << endl << endl << "Twra tha oristei ena antikeimeno typoy B."
<< endl << "Dwse to mikos xaraktirwn tou string --> ";
cin >> l;
A a1;
A a2(k);
B b(l);
if (k > 10)
frd_fun(a2, b);
else
frd_fun(a1, b);
cout << endl;
return 0;
}