Napisałem program obliczający pole i obwód prostokąta. W programie potrzebuję używać pól statycznych (zalecenie nauczyciela) a cały program musi zostać napisany obiektowo. Program wypisuje poprawnie takie wartości jak: dane właściciela, długość, szerokość i ID - problem jednak leży w obliczaniu pola i obwodu, ponieważ zwraca on w tym przypadku wartość 1 (zarówno dla pola jak i obwodu) gdy uruchamiam program (prawdopodobnie w ogóle nie "wchodzi do funkcji").
Oto mój kod:
#include <iostream>
using namespace std;
class dzialkadane
{
public:
float dlugosc;
float szerokosc;
float pole;
float obwod;
int id;
static string wlasciciel;
void obl_pole(float&,float&);
void obl_obwod(float&,float&);
void dane(string& ,float&, float&, float&, float& ,int&);
};
string dzialkadane::wlasciciel = "WLASCICIEL XYZ";
void dzialkadane::obl_pole(float &dlugosc,float &szerokosc)
{
pole=dlugosc*szerokosc;
}
void dzialkadane::obl_obwod(float &dlugosc,float &szerokosc)
{
obwod=(2*dlugosc)+(2*szerokosc);
}
void dzialkadane::dane(string &wlascicieldzialki ,float &dlugoscdz, float &szerokoscdz, float &poledz, float &obwoddz, int &iddz) {
wlascicieldzialki = wlasciciel;
dlugoscdz = dlugosc;
szerokoscdz = szerokosc;
poledz = pole;
iddz = id;
obwoddz = obwod;
}
int main()
{
dzialkadane dane1;
cout<<"Wpisz dlugosc dzialki: ";
cin >> dane1.dlugosc;
cout<<"Wpisz szerokosc dzialki: ";
cin >> dane1.szerokosc;
cout<<"Wpisz id dzialki: ";
cin >> dane1.id;
cout << "Dane pracownika: " << endl;
cout << "Nazwa wlasciciela: " << dzialkadane::wlasciciel <<endl;
cout << "Dlugosc: " << dane1.dlugosc << endl;
cout << "Szerokosc: " << dane1.szerokosc << endl;
cout << "Id: "<< dane1.id <<endl;
cout << "Pole: "<<dzialkadane::obl_pole<<endl;
cout << "Obwod: "<<dzialkadane::obl_obwod<<endl;
return 0;
}
Czy ktoś ma jakiś pomysł, jak to rozwiązać? Z góry dziękuję za pomoc.