1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
//scalar multiplication of a vector
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
void scalar1(double*, int, double, double*); //function using pointer
double scalar2(double*, int, double, int); //function returns a vector
int main (int nNumberofArg, char* pszArgs[])
{
double vector[3]={3.0,4.0,5.0};
double result1[3]={0.0,0.0,0.0};
double result2[3]={0.0,0.0,0.0};
int lengh=3;
double scalar=1.1;
//function passes address of where result goes
scalar1(vector, lengh, scalar, &result1[0]);
for (int index=0; index<lengh; index++)
{
result2[index]=scalar2(vector, lengh, scalar, index);
// function returns one component at a time
}
for (int i=0; i<lengh; i++)
{
cout << "using a pointer the values are ";
cout << result1[i] << endl;
}
for (int i=0; i<lengh; i++)
{
cout << "returning elements array. the values are ";
cout << result2[i] << endl;
}
system("PAUSE");
return 0;
}
// this function uses a pointer
void scalar1(double d_array[], int lengh , double d_scalar, double* p_result)
{
double* ptr=p_result;
double d_scaled_vector[lengh];
for (int i=0; i<lengh; i++)
{
d_scaled_vector[i]=d_scalar*d_array[i]; // scalar muliplication
}
for (int i=0; i<lengh; i++)
{
*(ptr+i)=d_scaled_vector[i]; //ships results out to global array
}
return ;
}
double scalar2(double d_array[], int lengh , double d_scalar, int counter)
{
double d_scaled_vector[lengh];
d_scaled_vector[counter]=d_scalar*d_array[counter]; // scalar muliplication
return d_scaled_vector[counter]; //returns one component at a time for
} // for assignment to global array
|