[ ivanafunky @ 18.06.2008. 16:02 ] @
Ljudi, molim vas pomagajte ovo mi treba hitno!!!! sutra imam ispit...
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;
}




[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]
[ Eurora3D Team @ 19.06.2008. 02:53 ] @
Vidim da kod nije prepisan :) (posto ima gresaka) pa sam ti ispravio. Inace fino je napisano uglavnom ...
Evo i neki komentar.
Klase Trougao i Krug nisu dobro uradjene jer nisu implementirale sve pure virtual funkcije iz apstraktne klase AFigura.
Nije bila implementirana fn rastojanje. Kada nisu implementirane sve pure virtual fn iz bazne klase koja je apstraktna i nova klasa ostaje apstraktna i od nje ne moze da se konstruise objekat. Probaj Trougao t; u main.
Racunanje rastojanja za krug sam napravio od centra do centra a za trougao od prve tacke do prve tacke. Promeni to ako imas vremena...
Promenio sam IO u klasama ...
Imas kod na www.eurora3d.com/es/Geometrija.zip
Fajlovi su za VC++ 6 , za MinGW treba da se sredi redosled includovanja ...
Pozdrav

[ ivanafunky @ 19.06.2008. 10:48 ] @
Hvala vam puno!!!