Monday, November 21, 2016

Presentation and code for Nov. 21 - Classes

Presentations:

Starting point code for tonight:
#include <iostream>
#include <string>
#include <cmath>
#include <vector>
using namespace std;

struct Point {
    double x, y;
    
    Point (double xx, double yy);
    Point (Point &p);
    Point ();
    
    double distanceTo (Point other);
    string contents ();
    void print ();
};

struct Triangle {
    Point a, b, c;
    
    Triangle (Point aa, Point bb, Point cc);
    string contents ();
    double area ();
};

// POINT functions
//
// this causes problems and I didn't figure out why
//
Point::Point (double xx, double yy) {
  x = xx;
  y = yy;
}
 
Point::Point (Point &p) {
  x = p.x;
  y = p.y;
}

Point::Point () {
    x = 0; y = 0;
}

double Point::distanceTo (Point other) {
    // Pythagoream Theorem a^2 + b^2 = c^2
    double dx = other.x - x;
    double dy = other.y - y;
    return (sqrt (dx * dx + dy * dy));
}

string Point::contents () {
    return  "{ " + to_string(x) + ", " +
    to_string(y) + " }";
}

void Point::print () {
    cout << contents ();
}

// TRIANGLE functions
//
// Constructor
//
Triangle::Triangle (Point aa, Point bb, Point cc) {
    a = aa;
    b = bb;
    c = cc;
}

string Triangle::contents () {
    return "{ " + a.contents() + ", " +
    b.contents() + ", " +
    c.contents() + " }";
}

double Triangle::area () {
    // Compute the area of a triangle from its corner points
    
    // 1. Compute the lengths of the side
    double dbc = b.distanceTo(c);
    double dac = a.distanceTo(c);
    double dab = a.distanceTo(b);
    
    // 2. Plug the lengths into the standard formula
    double s = (dbc + dac + dab) / 2;
    double t = s * (s-dbc) * (s-dac) * (s-dab);
    return sqrt (t); // <cmath>
}

int main(int argc, const char * argv[]) {
    
    Point p ( 42, 17 );
    Point q ( 17, 42 );
    double d = p.distanceTo(q);
    cout << d << endl;
    d = q.distanceTo(p);
    cout << d << endl;
    cout << p.contents();
    cout << endl;
    
    Triangle t ( p, q, { 100, 100 } );
    cout << t.area();
    cout << endl;

    return 0;
}

No comments:

Post a Comment