Udaljenost objekata

mail@pastecode.io avatar
unknown
plain_text
3 years ago
3.2 kB
12
Indexable
Never
#include<iostream>
using namespace std;

struct udaljenost
{
	int _km;
	int _m;
	int _cm;

	void setKm(int);		//funkcija članica - modifikacija obiljezja _km
	void setM(int);			//funkcija članica  - modifikacija obiljezja _m
	void setCm(int);		//funkcija članica  - modifikacija obiljezja _cm

	int getKm();			//funkcija članica  - za pristup obiljezju _km
	int getM();				//funkcija članica  - za pristup obiljezju _m
	int getCm();			//funkcija članica - za pristup obiljezju _cm

	void infoUdaljenost(); //funkcija članica za ispis svih obiljezja objekta tipa strukture


	float konverzijaKm(int, int, int); //funkcija članica od proslijedjenih parametara (km, m, cm) radi konverziju u kilometre
	float konverzijaKm(udaljenost); //funkcija članica od proslijedjenog parametara (udaljenost) radi konverziju u kilometre


	//funkcija članica racuna udaljenost izmedju objekta 
	//za koji se funkcija članica  poziva i proslijedjenog parametra - vraca objekt tipa udaljenost
	udaljenost izracunUdaljenosti(udaljenost);
};

void udaljenost::setKm(int prosljedjeniKm)
{
	_km = prosljedjeniKm;
}

void udaljenost::setM(int prosljedjeniM)
{
	_m = prosljedjeniM;
}

void udaljenost::setCm(int prosljedjeniCm)
{
	_cm = prosljedjeniCm;
}

int udaljenost::getKm()
{
	return _km;
}
int udaljenost::getM()
{
	return _m;
}
int udaljenost::getCm()
{
	return _cm;
}

void udaljenost::infoUdaljenost()
{
	cout << _km << " km " << _m << " m " << _cm << " cm ";
}

float udaljenost::konverzijaKm(int kilometri, int metri, int centimetri)
{

	int pMetri = metri, pKilometri = kilometri, pCentimetri = centimetri;

	while (pCentimetri > 100)
	{
		pMetri+= 1;
		pCentimetri -= 100;
	} 

	while (pMetri > 1000)
	{
		pKilometri += 1;
		pMetri -= 1000;
	} 

	float konverzija = pKilometri + ((pMetri +0.00) / 1000) + ((pCentimetri +0.0000) / 100000);

	return konverzija;
}

float konverzijaKm(udaljenost* U)
{
	return 	U->konverzijaKm(U->getKm(), U->getM(), U->getCm());
}

udaljenost udaljenost::izracunUdaljenosti(udaljenost U2)
{
	cout << "\n\nobjekat 1 u funkciji " << konverzijaKm(getKm(), getM(), getCm());
	cout << "\nobjekat 2 u funkciji " << U2.konverzijaKm(U2.getKm(), U2.getM(), U2.getCm()) << endl;

	udaljenost U3;

	// dodjela kilometara prvog objekta var a, a drugog var b
	float a = konverzijaKm(getKm(), getM(), getCm()), b = U2.konverzijaKm(U2.getKm(), U2.getM(), U2.getCm());

	// provjera koji je veci, ako su jednaki vratit ce 0 km stoga nije potrebno navoditi uslov
	if (a > b)
		U3.setKm(a - b);

	else
		U3.setKm(b - a);

	return U3;
}

int main()
{
	//demonstrirati rad svih metoda i za objekte i za pokazivace na objekte tipa udaljenost

	// inicijalizacija objekta U1
	udaljenost U1; 
	U1.setKm(3);
	U1.setM(5);
	U1.setCm(500);

	// inicijalizacija objekta U2
	udaljenost U2;
	U2.setKm(7);
	U2.setM(1500);
	U2.setCm(99);

	cout << "km U1 = " << U1.konverzijaKm(U1.getKm(), U1.getM(), U1.getCm());
	cout << "\nkm U2 = " << konverzijaKm(&U2);

	cout << "\nUdaljenost dvaju objekata je " << (U1.izracunUdaljenosti(U2)).getKm() << " Kilometara" ;

	system("pause>0");
	return 0;
}