3BHEL FSST Test (Group A)

2023-01-24

Max. 20 points

Name:

Task Max. Achieved
1 2
2 18
Sum 20
Grading: >= 18: 1, 15-17: 2, 12-14: 3, 10-11: 4, <10: 5
  1. Answer the following statements indicating whether they are True or False.
    0-1 correct: 0 points, 2 correct: 2 points.
    Statement True False
    A C++ struct cannot have private members.
    A default constructor is a constructor which can be called with no arguments.
  2. Deklariere eine class Circle die einen Kreis mit zwei Koordinaten für den Mittelpunkt und einen Radius repräsentiert. Die Koordinaten der Kreis-Objekte müssen ohne Einschränkung veränderbar sein und einen Defaultwert von 0 haben. Stelle sicher, dass der Radius niemals kleiner als 0 sein kann. Definiere dazu entsprechende Methoden. Der Defaultwert des Radius soll 1.0 sein. Stelle einen default constructor sowie einen constructor mit Argumenten für die Koordinaten und den Radius zur Verfügung. Weiters sollen die Funktionen long double area() und long double circumference() implementiert werden, die die Fläche und den Umfang des Kreises zurück geben. Verwende M_PIl als Wert für π. Alle Funktionen, die den Kreis nicht ändern, müssen mit dem passenden Schlüsselwort gekennzeichnet sein. (18 points)
    1+1 points for declaring the circle including the semicolon
    1 point for the default constructor
    3 points for the three-argument constructor
    1+1 points for declaring the public data members
    1 point for declaring the private radius
    1 point for the default values of all the data members
    2 points for radius' setter
    1 point for the radius' getter
    2 points for implementing area()
    2 points for implementing circumference()
    1 point for making the above functions and the getter const
    class Circle {
    public:
      Circle() = default;
      Circle(double x, double y, double radius) : x{x}, y{y} {
        this->radius(radius);
      }
      double x {0.0};
      double y {0.0};
      double radius() const { return radius_; }  // getter;
      void radius(double radius) {
        if (radius >= 0) { radius_ = radius; return; }
        std::cerr << "not allowed to set negative radius" << std::endl;
      }
      long double area() const { return M_PIl * radius_ * radius_; }
      long double circumference() const { 2 * return M_PIl * radius_; }
    private:
      double radius_ {1.0};
    };