Appendix E
Home

 

Home
Up

 

Appendix E:
Source Code for vector.h

#include <stdio.h>
#include <iostream.h>
#define LD long double
const int max_len = 80;
const int num_places = 6;
struct vector {LD a, b;};
void assign (vector&, vector);
LD normal(vector);
LD dot(vector, vector);
vector subtract (vector, vector);
vector add (vector, vector);
vector multiply (LD, vector);
void display (vector);
 
//assign a vector to a memory address
void assign (vector &A, vector B)
{
A.a = B.a;
A.b = B.b;
}
//normal of a vector
LD normal (vector A)
{
LD result;
result = sqrt(A.a * A.a + A.b * A.b);
return (result);
}
 
//dot product of two vectors
LD dot (vector A, vector B)
{
LD result;
result = A.a * B.a + A.b * B.b;
return (result);
}
 
 
//subtract two vectors
vector subtract (vector A, vector B)
{
vector result;
result.a = A.a - B.a;
result.b = A.b - B.b;
return (result);
}
 
//add two vectors
vector add (vector A, vector B)
{
vector result;
result.a = A.a + B.a;
result.b = A.b + B.b;
return (result);
}
 
//multiply a vector by a scalar
vector multiply (LD c, vector A)
{
vector result;
result.a = c * A.a;
result.b = c * A.b;
return (result);
}
 
void display(vector A)
{
cout << "\n(" << A.a << "," << A.b << ")";
}
 
//--------------------------------------
//| Extraction module |
//--------------------------------------
long double extract (char in[], int len)
{
int a[max_len], b[max_len], len_a = 0, len_b = 0, sign = 1;
char part = 'a', valid = 't';
long double result = 0;
for (int i = 0; (i < len) && (valid == 't') ; i++)
{
valid = 'f';
if (in[i] == '-')
{
sign *= -1;
valid = 't';
}
if (isdigit(in[i]))
{
if (part == 'a')
a[len_a++] = in[i] - '0';
else
b[len_b++] = in[i] - '0';
valid = 't';
}
if (in[i] == '.')
{
part = 'b';
valid = 't';
}
}
for (i = 0; i < len_a; i++)
result = result * 10 + a[i];
for (i = 0; i < len_b; i++)
result += b[i] / pow(10,i+1);
result *= sign;
return (result);
}
 
void encode (char data[], vector A)
{
int a = A.a,
c = A.b,
i = 0,
len_a = 0,
len_b = num_places,
len_c = 0,
len_d = num_places;
double b = A.a - a,
d = A.b - c;
for (int k = abs(a); k > 0; len_a++)
k /= 10;
for (k = abs(c); k > 0; len_c++)
k /= 10;
data[i++] = '(';
if (A.a < 0)
data[i++] = '-';
for (;len_a > 0; len_a--)
{
data[i++] = int(abs(a)) % 10 + '0';
a /= 10;
}
data[i++] = '.';
for (;len_b > 0; len_b--)
{
b *= 10;
data[i++] = abs(int(b)) % 10 + '0';
}
data[i++] = ',';
if (A.b < 0)
data[i++] = '-';
for (;len_c > 0; len_c--)
{
data[i++] = (abs(c) / int(pow(10,len_c-1))) % 10 + '0';
}
data[i++] = '.';
for (;len_d > 0; len_d--)
{
d *= 10;
data[i++] = abs(int(d)) % 10 + '0';
}
data[i++] = ')';
data[i++] = '\n';
for (; i < max_len; i++)
data[i] = ' ';
}

 

 Back Up Next

 

Email me: x24346@usma.edu
This page was last updated on 12/27/99.