Struktury c++

0

Witam!
dlaczego nie moge przypisać wartości zmiennej "pole"

struct figura
{
    double pole;
};

struct elipsa: figura
{
    double pol_os_mala, pol_os_wielka;
    pole = PI * (1.5 * (pol_os_mala + pol_os_wielka) - sqrt(pol_os_mala * pol_os_wielka));
} zmienna1; 

zmienna1.pol_os_mala i zmienna1.pol_os_wielka mają wartości wczesniej wprowadzone w programie

1

Stwórz sobie instancję struktury elipsa, a potem się odwołuj do jego poszczególnych pól.

#include <cmath> // dla stałej M_PI i funkcji sqrt()

using namespace std ;

struct figura
{
    double pole;
};
 
struct elipsa: figura
{
    double pol_os_mala, pol_os_wielka;
} zmienna1; 

int main()
{
	elipsa x ;

	x.pole = M_PI * (1.5 * (x.pol_os_mala + x.pol_os_wielka) - sqrt(x.pol_os_mala * x.pol_os_wielka));
}
0

Chodzi mi o to właśnie zeby zmienna "pole" byla liczona w strukturze..

 #include <cmath> // dla stałej M_PI i funkcji sqrt()
 
using namespace std ;
 
struct figura
{
    double pole;
};
 
struct elipsa: figura
{
    double pol_os_mala, pol_os_wielka;
    pole = M_PI * (1.5 * (pol_os_mala + pol_os_wielka) - sqrt(pol_os_mala * pol_os_wielka));
}; 
 
int main()
{
    elipsa x ;
    x.pol_os_mala = 5;
    x.pol_os_wielka = 3;
    cout<<x.pole;
}

Nie da sie jakoś w ten sposob?

2

nie tak się nie robi;
jeżeli już to

struct elipsa: figura
{
    double pol_os_mala, pol_os_wielka;
    double pole = M_PI * (1.5 * (pol_os_mala + pol_os_wielka) - sqrt(pol_os_mala * pol_os_wielka));
}; 

to się kompiluje, ale i tak to jest ub, i dodatkowo musisz ponownie przeliczyć pole po wprowadzeniu danych;

jak chcesz mieć jakąś watość początkową to musisz mieć też zmienne pozostałe zainicjalizowane;

#include <iostream>
#include <cmath>

using namespace std ;

struct figura
{

};

struct elipsa: figura
{
	double pol_os_mala = 3, pol_os_wielka = 4;
	double pole = 3.14 * (1.5 * (pol_os_mala + pol_os_wielka) - sqrt(pol_os_mala * pol_os_wielka));
};

int main()
{
	elipsa x ;
	cout<<x.pole;
}

rozwiazanie, które policzy Ci pole Od razu po inicjalizacji obiektu to np.:

#include <iostream>
#include <cmath>

using namespace std ;

struct figura
{
	figura(double val) : pole(val) {}
	double pole;
};

struct elipsa : figura
{
	elipsa(double x, double y) :
		figura(3.14 * (1.5 * (x + y) - sqrt(x * y)))
	{}
};

int main()
{
	elipsa x(3, 4);
	cout<<x.pole;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1