Evo samog zadatka:
Definisati klasu Element koja predstavlja apstrakciju hemijskih elemenata. Svaki hemijski element opisan je simbolom (do 2 znaka), rednim brojem u periodnom sistemu elemenata i masenim brojem(približno jednako ukupnom broju protona i neutrona u jezgru atoma).
Klasa Element treba da ima:
a) konstruktor-podrazumijevano kreira element čiji je naziv „* “ ,a redni i maseni broj nula. Inače, element može da se inicijalizuje na osnovu podataka koje konstruktor može da primi kao argumente.
b) funkciju članicu getSimbol- vraća simbol elementa.
Za klasu Element treba preklopiti sljedeće operatore:
a) operator << - na zadatom izlaznom mediju ispisuje simbol elementa. Omogućiti kaskadno pozivanje.
b) operator () – vraća maseni broj elementa.
Razdvojiti interfejs od implementacije,tj. Funkcije članice definisati izvan definicije klase.
Evo kako sam ja to uradio:
Code:
#include <iostream>
using namespace std;
class Element
{
public:
Element();
Element( char *, int , double);
char getSimbol(); // vraca simbol Elementa
friend ostream & operator<< ( ostream &izlaz, const Element &e );// ispisuje simbol Elementa
double operator()(int i); // vraca maseni broj elementa
~Element();
private:
char *simbol;
int redni_broj;
double maseni_broj;
};
Element::Element() // podrazumijevano kreira element ciji je naziv
{ // "*" ,a redni i maseni broj nula.
char *s; s="*";
simbol=new char[1]; strcpy(simbol,s);
int rb=0; redni_broj=rb;
double mb=0; maseni_broj=mb;
}
Element::Element( char *s, int rb, double mb)
{
simbol=new char[2]; strcpy(simbol,s);
redni_broj=rb;
maseni_broj=mb;
}
char Element :: getSimbol()
{
return (*simbol);
}
ostream & operator<<( ostream &izlaz , const Element &e)
{
izlaz << e.simbol;
return izlaz;
}
double Element::operator()(int i) // za redni broj elementa u period.sistem.elem.vraca maseni broj
{
Element e;
e.redni_broj=i;
return e.maseni_broj;
}
Element::~Element()
{
delete[]simbol;
}
main()
{
Element a;
cout << a << endl;
Element b(H,2,1.01);
cout << b;
system("pause");
}
#include <iostream>
using namespace std;
class Element
{
public:
Element();
Element( char *, int , double);
char getSimbol(); // vraca simbol Elementa
friend ostream & operator<< ( ostream &izlaz, const Element &e );// ispisuje simbol Elementa
double operator()(int i); // vraca maseni broj elementa
~Element();
private:
char *simbol;
int redni_broj;
double maseni_broj;
};
Element::Element() // podrazumijevano kreira element ciji je naziv
{ // "*" ,a redni i maseni broj nula.
char *s; s="*";
simbol=new char[1]; strcpy(simbol,s);
int rb=0; redni_broj=rb;
double mb=0; maseni_broj=mb;
}
Element::Element( char *s, int rb, double mb)
{
simbol=new char[2]; strcpy(simbol,s);
redni_broj=rb;
maseni_broj=mb;
}
char Element :: getSimbol()
{
return (*simbol);
}
ostream & operator<<( ostream &izlaz , const Element &e)
{
izlaz << e.simbol;
return izlaz;
}
double Element::operator()(int i) // za redni broj elementa u period.sistem.elem.vraca maseni broj
{
Element e;
e.redni_broj=i;
return e.maseni_broj;
}
Element::~Element()
{
delete[]simbol;
}
main()
{
Element a;
cout << a << endl;
Element b(H,2,1.01);
cout << b;
system("pause");
}
A evo šta mi javlja kao grešku:
In function `int main()':
`H' undeclared (first use this function)