Ovako mi glasi zadatak:
Projektovati na jeziku c++ klase sa sledecim opisom:
Tacka u ravni je zadata x i y koordinatama i podrazumevane vrednosti su(0,0). Tacka moze da se konstruise i zadavanjem dve koordinate. Moze da se ispita da li tacka pripada prvom kvadrantu (smatrati da nenegativni delovi osa pripadaju prvom kvadrantu). Datoteka koja sadrzi tacke ima u svakom redu po jednu tacku, tj. dva podatka x i y koordinate. Postoje operatori za upis i citanje tacke iz fajla.
Apstraktna figura ima mogucnost izracunavanja velicine koja je jednaka rastojanju izmedju dve medjusobno najudaljenije tacke figure, metode za ucitavanje figure iz fajla i upisivanje figure u fajl i metod za ispitivanje da li figura pripada prvom kvadrantu.
Krug je figura odredjena centrom i poluprecnikom, podrazumeva se centar(1,1), poluprecnik 1. Datoteka sa krugovima sadrzi po jedan krug u svakom redu, prvo je centar kruga (x i y koordinate), a zatim poluprecnik. Postoje operatori za upis i citanje kruga iz fajla.
Trougao je figura odredjena sa 3 tacke, podrazumevaju se tacke(0,0), (0,1), (1,0). Datoteka sa trouglovima sadrzi po jedan trougao u svakom redu , tj. 3 tacke. Postoje operatori za upis i citanje trougla iz fajla.
Sastavite na jeziku c++ glavni program koji preko glavnog ulaza procita maksimalnu velicinu figure i imena datoteka u kojima se nalaze figure. Datoteke koje se ucitavaju imaju samo jednu vrstu figura sto je oznaceno u prvom redu datoteke: “T” ako sadrzi trouglove i “K” ako sadrzi krugove. Iz fajlova se ucitavaju figure koje se zajednicki obradjuju. U jedan fajl se upisuju sve figure cije sve tacke pripadaju prvom kvadrantu, i cija je velicina manja od maksimalne zadate velicine. Greske obradjivati izuzecima.
Napisala sam klase, al ne znam kako da uradim glavni program. Nadam se da ce mi neko pomoci...
Code:
Tacka.h
#pragma once
#include <iostream>
using namespace std;
class Tacka
{
private:
double m_x;
double m_y;
public:
Tacka();
Tacka(double x, double y);
Tacka(const Tacka& t);
virtual ~Tacka();
bool uPrvomKvadrantu();
double x();
double y();
void x(double x);
void y(double y);
double rastojanje(const Tacka& t);
void read(istream& in);
void write(ostream& out)const;
friend istream& operator>>(istream& in, Tacka& t);
friend ostream& operator<<(ostream& out, const Tacka& t);
};
Tacka.cpp
#include "StdAfx.h"
#include "Tacka.h"
#include <math.h>
Tacka::Tacka()
: m_x(0), m_y(0)
{
}
Tacka::Tacka(double x, double y)
:m_x(x), m_y(y)
{
}
Tacka::~Tacka()
{
}
Tacka::Tacka(const Tacka& t)
: m_x(t.m_x), m_y(t.m_y)
{
}
bool Tacka::uPrvomKvadrantu()
{
if(m_x >= 0 && m_y >= 0)
return true;
return false;
}
double Tacka::x()
{
return m_x;
}
double Tacka::y()
{
return m_y;
}
void Tacka::x(double x)
{
m_x=x;
}
void Tacka::y(double y)
{
m_y=y;
}
double Tacka::rastojanje(const Tacka& t)
{
double dx = m_x - t.m_x;
double dy = m_y - t.m_y;
return sqrt(dx*dx + dy*dy);
}
void Tacka::read(istream& in)
{
in >> m_x >> m_y;
}
void Tacka::write(ostream& out)const
{
out << m_x << ' ' << m_y << ' ' ;
}
istream& operator>>(istream& in, Tacka& t)
{
t.read(in);
return in;
}
ostream& operator<<(ostream& out, const Tacka& t)
{
t.write(out);
return out;
}
AFigura.h
#pragma once
#include <iostream>
using namespace std;
class AFigura
{
public:
AFigura();
virtual ~AFigura();
virtual double rastojanje(const AFigura& f)=0;
virtual bool uPrvomKvadrantu()=0;
virtual void read(istream& in)=0;
virtual void write(ostream& out)const=0;
friend istream& operator>>(istream& in, AFigura& f);
friend ostream& operator<<(ostream& out, const AFigura& f);
};
AFigura.cpp
#include "StdAfx.h"
#include "AFigura.h"
AFigura::AFigura()
{
}
AFigura::~AFigura()
{
}
istream& operator>>(istream& in, AFigura& f)
{
f.read(in);
return in;
}
ostream& operator<<(ostream& out, const AFigura& f)
{
f.write(out);
return out;
}
Trougao.h
#pragma once
#include "AFigura.h"
#include "Tacka.h"
class Trougao :public AFigura
{
private:
Tacka m_a;
Tacka m_b;
Tacka m_c;
public:
Trougao();
virtual ~Trougao();
Trougao(const Tacka& a, const Tacka& b, const Tacka& c);
virtual bool uPrvomKvadrantu();
virtual double velicina();
void read(istream& in);
void write(ostream& out)const;
};
Trougao.cpp
#include "StdAfx.h"
#include "Trougao.h"
Trougao::Trougao()
: m_a(0,0), m_b(0,1), m_c(1,0)
{
}
Trougao::~Trougao()
{
}
Trougao::Trougao(const Tacka& a, const Tacka& b, const Tacka& c)
: m_a(a), m_b(b), m_c(c)
{
}
bool Trougao::uPrvomKvadrantu()
{
if(m_a.uPrvomKvadrantu()&& m_b.uPrvomKvadrantu()&& m_c.uPrvomKvadrantu())
return true;
return false;
}
double Trougao::velicina()
{
double r1 = m_a.rastojanje(m_b);
double r2 = m_a.rastojanje(m_c);
double r3 = m_b.rastojanje(m_c);
double r = (r1 > r2) ? r1 : r2;
r = (r > r3) ? r : r3;
return r;
}
void Trougao::read(istream& in)
{
in >> m_a >> m_b >> m_c;
}
void Trougao::write(ostream& out)const
{
out << m_a << ' ' << m_b << ' ' << m_c << ' ';
}
Krug.h
#pragma once
#include "afigura.h"
#include "Tacka.h"
class Krug : public AFigura
{
private:
Tacka m_centar;
double m_r;
public:
Krug();
Krug(const Tacka& centar, double r);
virtual ~Krug();
virtual bool uPrvomKvadrantu();
virtual double velicina();
void read(istream& in);
void write(ostream& out)const;
};
Krug.cpp
#include "StdAfx.h"
#include "Krug.h"
Krug::Krug()
: m_centar(1,1), m_r(1)
{
}
Krug::~Krug()
{
}
Krug::Krug(const Tacka& centar, double r)
: m_centar(centar), m_r(r)
{
}
bool Krug::uPrvomKvadrantu()
{
if(m_centar.x() >=0 && m_centar.y() >=0 && m_centar.x() >= m_r && m_centar.y() >= m_r)
return true;
return false;
}
double Krug::velicina()
{
return 2* m_r;
}
void Krug::read(istream& in)
{
in >> m_centar >> m_r;
}
void Krug::write(ostream& out)const
{
out << m_centar << ' ' << m_r << ' ' ;
}
Glavni program
#include "stdafx.h"
#include <stdio.h>
#include "Tacka.h"
#include "AFigura.h"
#include "Krug.h"
#include "Trougao.h"
int main(int argc, _TCHAR* argv[])
{
ODAVDE NISTA NE ZNAM!!!!!!!!!!
}
return 0;
}
Tacka.h
#pragma once
#include <iostream>
using namespace std;
class Tacka
{
private:
double m_x;
double m_y;
public:
Tacka();
Tacka(double x, double y);
Tacka(const Tacka& t);
virtual ~Tacka();
bool uPrvomKvadrantu();
double x();
double y();
void x(double x);
void y(double y);
double rastojanje(const Tacka& t);
void read(istream& in);
void write(ostream& out)const;
friend istream& operator>>(istream& in, Tacka& t);
friend ostream& operator<<(ostream& out, const Tacka& t);
};
Tacka.cpp
#include "StdAfx.h"
#include "Tacka.h"
#include <math.h>
Tacka::Tacka()
: m_x(0), m_y(0)
{
}
Tacka::Tacka(double x, double y)
:m_x(x), m_y(y)
{
}
Tacka::~Tacka()
{
}
Tacka::Tacka(const Tacka& t)
: m_x(t.m_x), m_y(t.m_y)
{
}
bool Tacka::uPrvomKvadrantu()
{
if(m_x >= 0 && m_y >= 0)
return true;
return false;
}
double Tacka::x()
{
return m_x;
}
double Tacka::y()
{
return m_y;
}
void Tacka::x(double x)
{
m_x=x;
}
void Tacka::y(double y)
{
m_y=y;
}
double Tacka::rastojanje(const Tacka& t)
{
double dx = m_x - t.m_x;
double dy = m_y - t.m_y;
return sqrt(dx*dx + dy*dy);
}
void Tacka::read(istream& in)
{
in >> m_x >> m_y;
}
void Tacka::write(ostream& out)const
{
out << m_x << ' ' << m_y << ' ' ;
}
istream& operator>>(istream& in, Tacka& t)
{
t.read(in);
return in;
}
ostream& operator<<(ostream& out, const Tacka& t)
{
t.write(out);
return out;
}
AFigura.h
#pragma once
#include <iostream>
using namespace std;
class AFigura
{
public:
AFigura();
virtual ~AFigura();
virtual double rastojanje(const AFigura& f)=0;
virtual bool uPrvomKvadrantu()=0;
virtual void read(istream& in)=0;
virtual void write(ostream& out)const=0;
friend istream& operator>>(istream& in, AFigura& f);
friend ostream& operator<<(ostream& out, const AFigura& f);
};
AFigura.cpp
#include "StdAfx.h"
#include "AFigura.h"
AFigura::AFigura()
{
}
AFigura::~AFigura()
{
}
istream& operator>>(istream& in, AFigura& f)
{
f.read(in);
return in;
}
ostream& operator<<(ostream& out, const AFigura& f)
{
f.write(out);
return out;
}
Trougao.h
#pragma once
#include "AFigura.h"
#include "Tacka.h"
class Trougao :public AFigura
{
private:
Tacka m_a;
Tacka m_b;
Tacka m_c;
public:
Trougao();
virtual ~Trougao();
Trougao(const Tacka& a, const Tacka& b, const Tacka& c);
virtual bool uPrvomKvadrantu();
virtual double velicina();
void read(istream& in);
void write(ostream& out)const;
};
Trougao.cpp
#include "StdAfx.h"
#include "Trougao.h"
Trougao::Trougao()
: m_a(0,0), m_b(0,1), m_c(1,0)
{
}
Trougao::~Trougao()
{
}
Trougao::Trougao(const Tacka& a, const Tacka& b, const Tacka& c)
: m_a(a), m_b(b), m_c(c)
{
}
bool Trougao::uPrvomKvadrantu()
{
if(m_a.uPrvomKvadrantu()&& m_b.uPrvomKvadrantu()&& m_c.uPrvomKvadrantu())
return true;
return false;
}
double Trougao::velicina()
{
double r1 = m_a.rastojanje(m_b);
double r2 = m_a.rastojanje(m_c);
double r3 = m_b.rastojanje(m_c);
double r = (r1 > r2) ? r1 : r2;
r = (r > r3) ? r : r3;
return r;
}
void Trougao::read(istream& in)
{
in >> m_a >> m_b >> m_c;
}
void Trougao::write(ostream& out)const
{
out << m_a << ' ' << m_b << ' ' << m_c << ' ';
}
Krug.h
#pragma once
#include "afigura.h"
#include "Tacka.h"
class Krug : public AFigura
{
private:
Tacka m_centar;
double m_r;
public:
Krug();
Krug(const Tacka& centar, double r);
virtual ~Krug();
virtual bool uPrvomKvadrantu();
virtual double velicina();
void read(istream& in);
void write(ostream& out)const;
};
Krug.cpp
#include "StdAfx.h"
#include "Krug.h"
Krug::Krug()
: m_centar(1,1), m_r(1)
{
}
Krug::~Krug()
{
}
Krug::Krug(const Tacka& centar, double r)
: m_centar(centar), m_r(r)
{
}
bool Krug::uPrvomKvadrantu()
{
if(m_centar.x() >=0 && m_centar.y() >=0 && m_centar.x() >= m_r && m_centar.y() >= m_r)
return true;
return false;
}
double Krug::velicina()
{
return 2* m_r;
}
void Krug::read(istream& in)
{
in >> m_centar >> m_r;
}
void Krug::write(ostream& out)const
{
out << m_centar << ' ' << m_r << ' ' ;
}
Glavni program
#include "stdafx.h"
#include <stdio.h>
#include "Tacka.h"
#include "AFigura.h"
#include "Krug.h"
#include "Trougao.h"
int main(int argc, _TCHAR* argv[])
{
ODAVDE NISTA NE ZNAM!!!!!!!!!!
}
return 0;
}
[Ovu poruku je menjao ivanafunky dana 18.06.2008. u 20:58 GMT+1]
[Ovu poruku je menjao X Files dana 19.06.2008. u 11:28 GMT+1]