/*
 * Copyright ©2026 Soham Pardeshi. All rights reserved.
 * Permission is hereby granted to students registered for University of
 * Washington CSE 333 for use solely during Summer Quarter 2026 for
 * purposes of the course. No other use, copying, distribution, or
 * modification is permitted without prior written consent. Copyrights
 * for third-party components of this work must be honored. Instructors
 * interested in reusing these course materials should contact the author.
 */

#include "SimplePoint.h"

#include <cmath>
#include <cstdlib>
#include <iostream>


double SimplePoint::Distance(const SimplePoint& p) const {
  double distance = (x_ - p.x_) * (x_ - p.x_);
  distance += (y_ - p.y_) * (y_ - p.y_);
  return sqrt(distance);
}

void SimplePoint::SetLocation(const int x, const int y) {
  x_ = x;
  y_ = y;
}

void PrintSimplePoint(const SimplePoint& pt) {
  std::cout << "SimplePoint: (" << pt.get_x() << ", "
            << pt.get_y() << ")" << std::endl;
}

int main(int argc, char** argv) {
  SimplePoint x;     // invokes synthesized default constructor.
  PrintSimplePoint(x);
  SimplePoint y(x);  // invokes synthesized copy constructor.
  // PrintSimplePoint(y);
  y = x;             // invokes synthesized assignment operator.
  // PrintSimplePoint(y);
  return EXIT_SUCCESS;
}