Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

Data je struktura sledećeg oblika:

struct mySt {
int x;
int y;
};

U glavnom programu (funkciji main(){ }) formirati tri strukturne


varijabile xa, xb i xc prethodno navedene strukture.
mySt sa, sb, sc; // da li ovde postoji neka razlika u odnosu na
programski jezik C?

Promenljivama x i y strukturnih varijabili xa i xb dodelti početne


vrednosti.
sa.x = 5;

Promenljivama x i y strukturne promenljive xc izračunati vrednosti na


sledeći način:
sc.x = sb.x - sa.x;
sc.x = sb.x - sa.x;

Promenljivama x i y strukturne promenljive xc izračunati vrednosti


korišćenjem funkcije myFv i prenosa parametara po vrednosti.

void myFv(mySt lsa, mySt lsb, mySt lsc) {


lsc.x = lsb.x - lsa.x;
lsc.y = lsb.y - lsa.y;
cout << "lsc.x = " << lsc.x << " lsc.y = " << lsc.y << endl;
lsc.x = -99;
}

...
myFv(sa, sb, sc);
cout << "sc.x = " << sc.x << " sc.y = " << sc.y << endl;

Šta će biti prikazano u glavnom programu nakon izvršavanja prethodnih


programskih redova?

Promenljivama x i y strukturne promenljive xc izračunati vrednosti


korišćenjem funkcije myFr i prenosa parametara po referenci.

void myFr(...) {
...
lsc.x = -99;
}

myFr(sa, sb, sc);


cout << "sc.x = " << sc.x << " sc.y = " << sc.y << endl;
Šta će biti prikazano u glavnom programu nakon izvršavanja prethodnih
programskih redova?

Promenljivama x i y strukturne promenljive xc izračunati vrednosti


korišćenjem funkcije myFp i prenosa parametara korišćenjem pointera.

void myFv(...) {
...
lsc.x = -99;
}

myFp(sa, sb, sc);


cout << "sc.x = " << sc.x << " sc.y = " << sc.y << endl;

Šta će biti prikazano u glavnom programu nakon izvršavanja prethodnih


programskih redova?

void myFp(...) {
...
(*lsc).x = -303;
}

myFp(&sa, &sb, &sc);


cout << "sc.x = " << sc.x << " sc.y = " << sc.y << endl;

Napisati funkciju myFd koja računa Euclidean i Manhattan (Taxicab)


rastojanje između tačaka predstavljenih strukturama xa i xb.

( , )= ( . − . ) +( . − . )

( , )=( . − . )+( . − . )

Napomena: Funkcija računa Euclidean i Manhattan rastojanja između


tačaka, a rastojanja se štampaju u glavnom programu.
.....
#include <iostream>
#include <cmath>
using namespace std;
struct mySt {
int x;
int y;
};
void myFv(mySt lsa, mySt lsb, mySt lsc) {
lsc.x = lsb.x - lsa.x;
lsc.y = lsb.y - lsa.y;
cout << "lsc.x = " << lsc.x << " lsc.y = " << lsc.y << endl;
lsc.x = -99;
}

void myFr(mySt &lsa, mySt &lsb, mySt &lsc) {


lsc.x = lsb.x - lsa.x;
lsc.y = lsb.y - lsa.y;
cout << "lsc.x = " << lsc.x << " lsc.y = " << lsc.y << endl;
lsc.x = -99;
}
void myFp(mySt *lsa, mySt *lsb, mySt *lsc) {
lsc->x = lsb->x - lsa->x;
(*lsc).y = (*lsb).y - (*lsa).y;
cout << "*lsc.x = " << lsc->x << " *lsc.y = " << lsc->y << endl;
(*lsc).x = -303;
}

void myFd(mySt lsb, mySt lsa, double *ed, double *md) {


*ed = sqrt(pow(lsb.x - lsa.x,2) + pow(lsb.y - lsa.y,2));
*md = (lsb.x - lsa.x) + (lsb.y - lsa.y);
}
int main() {
mySt sa, sb, sc;
sa.x = 5;
sa.y = 5;
sb.x = 10;
sb.y = 6;

sc.x = sb.x - sa.x;


sc.y = sb.y - sa.y;

cout << "sc.x = " << sc.x << " sc.y = " << sc.y << endl;

myFv(sa, sb, sc);


cout << "sc.x = " << sc.x << " sc.y = " << sc.y << endl;

myFr(sa, sb, sc);


cout << "sc.x = " << sc.x << " sc.y = " << sc.y << endl;

myFp(&sa, &sb, &sc);


cout << "sc.x = " << sc.x << " sc.y = " << sc.y << endl;

double ed = 0.0;
double md = 0.0;
myFd(sb, sa, &ed, &md);
cout << "ed = " << ed << " md = " << md << endl;

return 0;
}

You might also like