#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
const double EPSILON(1e-12);
// function prototypes
// ENTER FUNCTION PROTOTYPE FOR read_vector HERE.
void read_vector(const double & prompt, double & x, double & y);
// ENTER FUNCTION PROTOTYPE FOR vector_length HERE.
double vector_length (double x, double y);
// ENTER FUNCTION PROTOTYPE FOR write_vector HERE.
void write_vector(const double & prompt, double & x, double & y);
// ENTER FUNCTION PROTOTYPE FOR vector_add HERE.
void vector_add (double & x1, double & y1, double & x2, double & y2, double & x3, double & y3);
// ENTER FUNCTION PROTOTYPE FOR vector_subtract HERE.
void vector_subtract (double & x1, double & y1, double & x2, double & y2, double & x3, double & y3);
// ENTER FUNCTION PROTOTYPE FOR scalar_mult HERE.
void scalar_mult (double & x1, double & y1, double & s, double & x2, double & y2);
// ENTER FUNCTION PROTOTYPE FOR normalize HERE.
void normalize (double & x, double & y);
// ENTER FUNCTION PROTOTYPE FOR perpendicular HERE.
void perpendicular (double & x1, double & y1, double & x2, double & y2);
// *** DO NOT CHANGE ANY CODE IN THE MAIN FUNCTION.
int main()
{
double u1, v1; // coordinates of first vector
double u2, v2; // coordinates of second vector
double u3, v3;
double scalar;
read_vector("Enter first vector (2 floats): ", u1, v1);
read_vector("Enter second vector (2 floats): ", u2, v2);
cout << "Enter scalar multiplier: ";
cin >> scalar;
cout << endl;
write_vector("First vector: ", u1, v1);
write_vector("Second vector: ", u2, v2);
cout << endl;
vector_add(u1, v1, u2, v2, u3, v3);
write_vector("Vector add: ", u3, v3);
vector_subtract(u1, v1, u2, v2, u3, v3);
write_vector("Vector subtract: ", u3, v3);
scalar_mult(u1, v1, scalar, u3, v3);
write_vector("Scalar multiplier: ", u3, v3);
cout << endl;
write_vector("First vector: ", u1, v1);
write_vector("Second vector: ", u2, v2);
perpendicular(u1, v1, u2, v2);
return(0);
}
// DEFINE FUNCTION read_vector HERE.
void read_vector(const double & prompt, double & x, double & y)
{
cout << prompt;
cin >> x >> y;
}
// DEFINE FUNCTION vector_length HERE.
double vector_length (double x, double y)
{
double v_length = sqrt(pow(x, 2) + pow(y, 2));
return (v_length);
}
// DEFINE FUNCTION write_vector HERE.
void write_vector(const double & prompt, double & x, double & y)
{
cout << "(" << x << ", " << y << ") has length" << vector_length(x,y) << endl;
}
// DEFINE FUNCTION vector_add HERE.
void vector_add (double & x1, double & y1, double & x2, double & y2, double & x3, double & y3)
{
x3 = x1 + x2;
y3 = y1 + y2;
}
// DEFINE FUNCTION vector_subtract HERE.
void vector_subtract (double & x1, double & y1, double & x2, double & y2, double & x3, double & y3)
{
x3 = x1 - x2;
y3 = y1 - y2;
}
// DEFINE FUNCTION scalar_mult HERE.
void scalar_mult (double & x1, double & y1, double & s, double & x2, double & y2)
{
x2 = s * x1;
y2 = s * y1;
}
// DEFINE FUNCTION normalize HERE.
void normalize (double & x, double & y)
{
}
// DEFINE FUNCTION perpendicular HERE.
void perpendicular (double & x1, double & y1, double & x2, double & y2)
{
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNtYXRoPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGRvdWJsZSBFUFNJTE9OKDFlLTEyKTsKCi8vIGZ1bmN0aW9uIHByb3RvdHlwZXMKCi8vIEVOVEVSIEZVTkNUSU9OIFBST1RPVFlQRSBGT1IgcmVhZF92ZWN0b3IgSEVSRS4Kdm9pZCByZWFkX3ZlY3Rvcihjb25zdCBkb3VibGUgJiBwcm9tcHQsIGRvdWJsZSAmIHgsIGRvdWJsZSAmIHkpOwoKLy8gRU5URVIgRlVOQ1RJT04gUFJPVE9UWVBFIEZPUiB2ZWN0b3JfbGVuZ3RoIEhFUkUuCmRvdWJsZSB2ZWN0b3JfbGVuZ3RoIChkb3VibGUgeCwgZG91YmxlIHkpOwoKLy8gRU5URVIgRlVOQ1RJT04gUFJPVE9UWVBFIEZPUiB3cml0ZV92ZWN0b3IgSEVSRS4Kdm9pZCB3cml0ZV92ZWN0b3IoY29uc3QgZG91YmxlICYgcHJvbXB0LCBkb3VibGUgJiB4LCBkb3VibGUgJiB5KTsKCi8vIEVOVEVSIEZVTkNUSU9OIFBST1RPVFlQRSBGT1IgdmVjdG9yX2FkZCBIRVJFLgp2b2lkIHZlY3Rvcl9hZGQgKGRvdWJsZSAmIHgxLCBkb3VibGUgJiB5MSwgZG91YmxlICYgeDIsIGRvdWJsZSAmIHkyLCBkb3VibGUgJiB4MywgZG91YmxlICYgeTMpOwoKLy8gRU5URVIgRlVOQ1RJT04gUFJPVE9UWVBFIEZPUiB2ZWN0b3Jfc3VidHJhY3QgSEVSRS4Kdm9pZCB2ZWN0b3Jfc3VidHJhY3QgKGRvdWJsZSAmIHgxLCBkb3VibGUgJiB5MSwgZG91YmxlICYgeDIsIGRvdWJsZSAmIHkyLCBkb3VibGUgJiB4MywgZG91YmxlICYgeTMpOwoKLy8gRU5URVIgRlVOQ1RJT04gUFJPVE9UWVBFIEZPUiBzY2FsYXJfbXVsdCBIRVJFLgp2b2lkIHNjYWxhcl9tdWx0IChkb3VibGUgJiB4MSwgZG91YmxlICYgeTEsIGRvdWJsZSAmIHMsIGRvdWJsZSAmIHgyLCBkb3VibGUgJiB5Mik7CgovLyBFTlRFUiBGVU5DVElPTiBQUk9UT1RZUEUgRk9SIG5vcm1hbGl6ZSBIRVJFLgp2b2lkIG5vcm1hbGl6ZSAoZG91YmxlICYgeCwgZG91YmxlICYgeSk7CgovLyBFTlRFUiBGVU5DVElPTiBQUk9UT1RZUEUgRk9SIHBlcnBlbmRpY3VsYXIgSEVSRS4Kdm9pZCBwZXJwZW5kaWN1bGFyIChkb3VibGUgJiB4MSwgZG91YmxlICYgeTEsIGRvdWJsZSAmIHgyLCBkb3VibGUgJiB5Mik7CgovLyAqKiogRE8gTk9UIENIQU5HRSBBTlkgQ09ERSBJTiBUSEUgTUFJTiBGVU5DVElPTi4KaW50IG1haW4oKQp7CiAgICBkb3VibGUgdTEsIHYxOwkvLyBjb29yZGluYXRlcyBvZiBmaXJzdCB2ZWN0b3IKICAgIGRvdWJsZSB1MiwgdjI7CS8vIGNvb3JkaW5hdGVzIG9mIHNlY29uZCB2ZWN0b3IKICAgIGRvdWJsZSB1MywgdjM7CiAgICBkb3VibGUgc2NhbGFyOwogICAgCiAgICByZWFkX3ZlY3RvcigiRW50ZXIgZmlyc3QgdmVjdG9yICgyIGZsb2F0cyk6ICIsIHUxLCB2MSk7CiAgICByZWFkX3ZlY3RvcigiRW50ZXIgc2Vjb25kIHZlY3RvciAoMiBmbG9hdHMpOiAiLCB1MiwgdjIpOwogICAgCiAgICBjb3V0IDw8ICJFbnRlciBzY2FsYXIgbXVsdGlwbGllcjogIjsKICAgIGNpbiA+PiBzY2FsYXI7CiAgICBjb3V0IDw8IGVuZGw7CiAgICAKICAgIHdyaXRlX3ZlY3RvcigiRmlyc3QgdmVjdG9yOiAiLCB1MSwgdjEpOwogICAgd3JpdGVfdmVjdG9yKCJTZWNvbmQgdmVjdG9yOiAiLCB1MiwgdjIpOwogICAgCiAgICBjb3V0IDw8IGVuZGw7CiAgICAKICAgIHZlY3Rvcl9hZGQodTEsIHYxLCB1MiwgdjIsIHUzLCB2Myk7CiAgICB3cml0ZV92ZWN0b3IoIlZlY3RvciBhZGQ6ICIsIHUzLCB2Myk7CiAgICAKICAgIHZlY3Rvcl9zdWJ0cmFjdCh1MSwgdjEsIHUyLCB2MiwgdTMsIHYzKTsKICAgIHdyaXRlX3ZlY3RvcigiVmVjdG9yIHN1YnRyYWN0OiAiLCB1MywgdjMpOwogICAgCiAgICBzY2FsYXJfbXVsdCh1MSwgdjEsIHNjYWxhciwgdTMsIHYzKTsKICAgIHdyaXRlX3ZlY3RvcigiU2NhbGFyIG11bHRpcGxpZXI6ICIsIHUzLCB2Myk7CiAgICAKICAgIGNvdXQgPDwgZW5kbDsKICAgIAogICAgd3JpdGVfdmVjdG9yKCJGaXJzdCB2ZWN0b3I6ICIsIHUxLCB2MSk7CiAgICB3cml0ZV92ZWN0b3IoIlNlY29uZCB2ZWN0b3I6ICIsIHUyLCB2Mik7CiAgICBwZXJwZW5kaWN1bGFyKHUxLCB2MSwgdTIsIHYyKTsKICAgIAogICAgcmV0dXJuKDApOwp9CgovLyBERUZJTkUgRlVOQ1RJT04gcmVhZF92ZWN0b3IgSEVSRS4KCnZvaWQgcmVhZF92ZWN0b3IoY29uc3QgZG91YmxlICYgcHJvbXB0LCBkb3VibGUgJiB4LCBkb3VibGUgJiB5KQp7CiAgICAKICAgIGNvdXQgPDwgcHJvbXB0OwogICAgY2luID4+IHggPj4geTsKfQoKLy8gREVGSU5FIEZVTkNUSU9OIHZlY3Rvcl9sZW5ndGggSEVSRS4KCmRvdWJsZSB2ZWN0b3JfbGVuZ3RoIChkb3VibGUgeCwgZG91YmxlIHkpCnsKICAgIGRvdWJsZSB2X2xlbmd0aCA9IHNxcnQocG93KHgsIDIpICsgcG93KHksIDIpKTsKICAgIHJldHVybiAodl9sZW5ndGgpOwp9CgoKLy8gREVGSU5FIEZVTkNUSU9OIHdyaXRlX3ZlY3RvciBIRVJFLgoKdm9pZCB3cml0ZV92ZWN0b3IoY29uc3QgZG91YmxlICYgcHJvbXB0LCBkb3VibGUgJiB4LCBkb3VibGUgJiB5KQp7CiAgICBjb3V0IDw8ICIoIiA8PCB4IDw8ICIsICIgPDwgeSA8PCAiKSBoYXMgbGVuZ3RoIiA8PCB2ZWN0b3JfbGVuZ3RoKHgseSkgPDwgZW5kbDsKfQoKCi8vIERFRklORSBGVU5DVElPTiB2ZWN0b3JfYWRkIEhFUkUuCgp2b2lkIHZlY3Rvcl9hZGQgKGRvdWJsZSAmIHgxLCBkb3VibGUgJiB5MSwgZG91YmxlICYgeDIsIGRvdWJsZSAmIHkyLCBkb3VibGUgJiB4MywgZG91YmxlICYgeTMpCnsKICAgIHgzID0geDEgKyB4MjsKICAgIHkzID0geTEgKyB5MjsKfQoKLy8gREVGSU5FIEZVTkNUSU9OIHZlY3Rvcl9zdWJ0cmFjdCBIRVJFLgoKdm9pZCB2ZWN0b3Jfc3VidHJhY3QgKGRvdWJsZSAmIHgxLCBkb3VibGUgJiB5MSwgZG91YmxlICYgeDIsIGRvdWJsZSAmIHkyLCBkb3VibGUgJiB4MywgZG91YmxlICYgeTMpCnsKICAgIHgzID0geDEgLSB4MjsKICAgIHkzID0geTEgLSB5MjsKfQoKLy8gREVGSU5FIEZVTkNUSU9OIHNjYWxhcl9tdWx0IEhFUkUuCgp2b2lkIHNjYWxhcl9tdWx0IChkb3VibGUgJiB4MSwgZG91YmxlICYgeTEsIGRvdWJsZSAmIHMsIGRvdWJsZSAmIHgyLCBkb3VibGUgJiB5MikKewogICAgeDIgPSBzICogeDE7CiAgICB5MiA9IHMgKiB5MTsKfQoKLy8gREVGSU5FIEZVTkNUSU9OIG5vcm1hbGl6ZSBIRVJFLgp2b2lkIG5vcm1hbGl6ZSAoZG91YmxlICYgeCwgZG91YmxlICYgeSkKewoKfQoKLy8gREVGSU5FIEZVTkNUSU9OIHBlcnBlbmRpY3VsYXIgSEVSRS4KCnZvaWQgcGVycGVuZGljdWxhciAoZG91YmxlICYgeDEsIGRvdWJsZSAmIHkxLCBkb3VibGUgJiB4MiwgZG91YmxlICYgeTIpCnsKCn0=
prog.cpp: In function ‘int main()’:
prog.cpp:43:58: error: invalid initialization of reference of type ‘const double&’ from expression of type ‘const char*’
read_vector("Enter first vector (2 floats): ", u1, v1);
^
prog.cpp:12:6: error: in passing argument 1 of ‘void read_vector(const double&, double&, double&)’
void read_vector(const double & prompt, double & x, double & y);
^
prog.cpp:44:59: error: invalid initialization of reference of type ‘const double&’ from expression of type ‘const char*’
read_vector("Enter second vector (2 floats): ", u2, v2);
^
prog.cpp:12:6: error: in passing argument 1 of ‘void read_vector(const double&, double&, double&)’
void read_vector(const double & prompt, double & x, double & y);
^
prog.cpp:50:42: error: invalid initialization of reference of type ‘const double&’ from expression of type ‘const char*’
write_vector("First vector: ", u1, v1);
^
prog.cpp:18:6: error: in passing argument 1 of ‘void write_vector(const double&, double&, double&)’
void write_vector(const double & prompt, double & x, double & y);
^
prog.cpp:51:43: error: invalid initialization of reference of type ‘const double&’ from expression of type ‘const char*’
write_vector("Second vector: ", u2, v2);
^
prog.cpp:18:6: error: in passing argument 1 of ‘void write_vector(const double&, double&, double&)’
void write_vector(const double & prompt, double & x, double & y);
^
prog.cpp:56:40: error: invalid initialization of reference of type ‘const double&’ from expression of type ‘const char*’
write_vector("Vector add: ", u3, v3);
^
prog.cpp:18:6: error: in passing argument 1 of ‘void write_vector(const double&, double&, double&)’
void write_vector(const double & prompt, double & x, double & y);
^
prog.cpp:59:45: error: invalid initialization of reference of type ‘const double&’ from expression of type ‘const char*’
write_vector("Vector subtract: ", u3, v3);
^
prog.cpp:18:6: error: in passing argument 1 of ‘void write_vector(const double&, double&, double&)’
void write_vector(const double & prompt, double & x, double & y);
^
prog.cpp:62:47: error: invalid initialization of reference of type ‘const double&’ from expression of type ‘const char*’
write_vector("Scalar multiplier: ", u3, v3);
^
prog.cpp:18:6: error: in passing argument 1 of ‘void write_vector(const double&, double&, double&)’
void write_vector(const double & prompt, double & x, double & y);
^
prog.cpp:66:42: error: invalid initialization of reference of type ‘const double&’ from expression of type ‘const char*’
write_vector("First vector: ", u1, v1);
^
prog.cpp:18:6: error: in passing argument 1 of ‘void write_vector(const double&, double&, double&)’
void write_vector(const double & prompt, double & x, double & y);
^
prog.cpp:67:43: error: invalid initialization of reference of type ‘const double&’ from expression of type ‘const char*’
write_vector("Second vector: ", u2, v2);
^
prog.cpp:18:6: error: in passing argument 1 of ‘void write_vector(const double&, double&, double&)’
void write_vector(const double & prompt, double & x, double & y);
^