Code:
/***************************************
* Pupose: Application Exercise *
* Date: July 27, 2011 *
* Author/Reference: C Programming for CS*
* Problem: Write a program that can *
* calculate the area of a parallelogram *
* defined by two vectors and the volume *
* of a parallelepiped defined by three *
* vectors. Input the i, j, and k *
* componenets of each of the three *
* vectors from the keyboard and print *
* the result to the screen. *
****************************************/
/************************************************************************************
*************************************************************************************
** APPLICATION PROGRAM TO CALCULATE
** AREA OF PARRALELOGRAM AND VOLUME OF
** PARALLELEPIPED DEFINED BY VECTORS A, B, AND C
** AREA = LENGTH OF (A CROSS B)
** VOLUME = ABS VALUE OF (A DOT (B CROSS C)
*************************************************************************************
************************************************************************************/
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
/***********************************************************
** FUNCTION PROTOTYPES
***********************************************************/
float dot_product (float g1, float g2, float g3, float h1, float h2, float h3, float k1, float k2, float k3);
void cross_product(float g1, float g2, float g3, float h1, float h2, float h3, float *k1, float *k2, float *k3);
float vector_magnitude(float g1, float g2, float g3);
float area_parallelogram(float g1, float g2, float g3, float h1, float h2, float h3);
float volume_parallelepiped(float g1, float g2, float g3, float h1, float h2, float h3, float *k1, float *k2, float *k3);
void read_input(float *g1, float *g2, float *g3, float *h1, float *h2, float *h3, float *k1, float *k2, float *k3);
void print_output (float a1, float a2, float a3, float b1, float b2, float b3, float c1, float c2, float c3, float area, float volume);
/***********************************************************************************
** FUNCTION main
** VARIABLES
** a1, a2, a3 = COMPONENTS OF VECTOR A
** b1, b2, b3 = COMPONENTS OF VECTOR B
** c1, c2, c3 = COMPONENTS OF VECTOR C
** area = AREA OF PARALLELOGRAM DEFINED BY A AND B
** volume = VOLUME OF PARALLELPIPED DEFINED BY A, B AND C
************************************************************************************/
void main(void)
{
float a1, a2, a3, b1, b2, b3, c1, c2, c3, area, volume;
read_input(&a1, &a2, &a3, &b1, &b2, &b3, &c1, &c2, &c3);
area = area_pareallelogram(a1, a2, a3, b1, b2, b3);
volume = volume_parellelepiped(a1, a2, a3, b1, b2, b3, c1, c2, c3);
print_output(a1, a2, a3, b1, b2, b3, c1, c2, c3, area, volume);
}
/***********************************************************************************
** FUNCTION dot_product
** CALCULATES THE DOT PRODUCT OF TWO VECTORS G AND H
** VARIABLES - INPUT
** g1, g2, g3 = COMPONENTS OF VECTOR G
** h1, h2, h3 = COMPONENTS OF VECTOR H
** RETURN
** SCALAR VALUE OF THE DOT PRODUCT OF G AND H
************************************************************************************/
float dot_product (float g1, float g2, float g3, float h1, float h2, float h3)
{
float g_dot_h;
g_dot_h = g1*h1+g2*h2+g3*h3;
return (g_dot_h);
}
/***********************************************************************************
** FUNCTION cross_product
** CALCULATES THE CROSS PRODUCT OF TWO VECTORS G AND H
** VARIABLES - INPUT
** g1, g2, g3 = COMPONENTS OF VECTOR G
** h1, h2, h3 = COMPONENTS OF VECTOR H
** RETURN
** *k1, *k2, *k3 = COMPONENTS OF VECTOR THAT IS
** THE CROSS PRODUCT
************************************************************************************/
void cross_product(float g1, float g2, float g3, float h1, float h2, float h3, float *k1, float *k2, float *k3)
{
*k1 = g2*h3 - g3*h2;
*k2 = -(g1*h3 - g3*h1);
*k3 = g1*h2 - g2*h1;
}
/***********************************************************************************
** FUNCTION vector_magnitude
** CALCULATES THE MAGNITUDE OF A VECTOR G
** VARIABLES - INPUT
** g1, g2, g3 = COMPONENTS OF VECTOR G
** RETURN
** SCALAR VALUE OF THE MAGNITUDE OR LENGTH OF G
************************************************************************************/
float vector_magnitude(float g1, float g2, float g3)
{
float mag;
mag = sqrt((pow(g1, 2))+(pow(g2, 2))+(pow(g3, 2)));
return(mag);
}
/***********************************************************************************
** FUNCTION area_parellelogram
** CALCULATES THE AREA OF A PARALLELOGRAM DEFINED BY
** TWO VECTORS G AND H
** AREA = MAGNITUDE OF (G CROSS H)
** VARIABLES - INPUT
** g1, g2, g3 = COMPONENTS OF VECTOR G
** h1, h2, h3 = COMPONENTS OF VECTOR H
** RETURN
** AREA OF THE PRALLELOGRAM
** FUNCTION CALLS
** CALLS cross_product TO CALCULATE G CROSS H
** CALLS vector_magnitude TO GET MAGNITUDE OF (G CROSS H)
**
************************************************************************************/
float area_parallelogram(float g1, float g2, float g3, float h1, float h2, float h3)
{
float k1, k2, k3, area;
cross_product(g1, g2, g3, h1, h2, h3, &k1, &k2, &k3);
area = vector_magnitude(k1, k2, k3);
return(area);
}
/***********************************************************************************
** FUNCTION volume_paralelepiped
** CALCULATES THE VOLUME OF A PARALLELEPIPED DEFINED BY
** THREE VECTORS G, H AND K
** VOLUME = ABS VALUE OF [G DOT (H CROSS K)]
** VARIABLES - INPUT
** g1, g2, g3 = COMPONENTS OF VECTOR G
** h1, h2, h3 = COMPONENTS OF VECTOR H
** k1, k2, k3 = COMPONENTS OF VECTOR K
** d1, d2, d3 = COMPONENTS OF VECTOR D
** RETURN
** VOLUME OF THE PARALLELEPIPED
** FUNCTION CALLS
** CALLS cross_product TO CALCULATE D = H CROSS K
** CALLS dot_product TO GET [G dot H]
**
************************************************************************************/
float volume_parallelepiped(float g1, float g2, float g3, float h1, float h2, float h3, float *k1, float *k2, float *k3)
{
float d1, d2, d3, volume;
cross_product(h1, h2, h3, k1, k2, k3, &d1, &d2, &d3);
volume = fabs(dot_product(g1, g2, g3, d1, d2, d3));
return(volume);
}
/***********************************************************************************
** FUNCTION cross_product
** CALCULATES THE CROSS PRODUCT OF TWO VECTORS G AND H
** VARIABLES - INPUT
** *g1, *g2, *g3 = COMPONENTS OF VECTOR G
** *h1, *h2, *h3 = COMPONENTS OF VECTOR H
** *k1, *k2, *k3 = COMPONENTS OF VECTOR K
************************************************************************************/
void read_input(float *g1, float *g2, float *g3, float *h1, float *h2, float *h3, float *k1, float *k2, float *k3)
{
printf("Enter vector A (a1 a2 a3): \n");
scanf("%f %f %f", &*g1, &*g2, &*g3);
printf("Enter vector B (b1 b2 b3): \n");
scanf("%f %f %f", &*h1, &*h2, &*h3);
printf("Enter vector C (c1 c2 c3): \n");
scanf("%f %f %f", &*k1, &*k2, &*k3);
}
/***********************************************************************************
** FUNCTION cross_product
** CALCULATES THE CROSS PRODUCT OF TWO VECTORS G AND H
** VARIABLES - INPUT
** a1, a2, a3 = COMPONENTS OF VECTOR A
** b1, b2, b3 = COMPONENTS OF VECTOR B
** c1, c2, c3 = COMPONENTS OF VECTOR C
** area = area of parallelogram
** volume = volume of parallelepiped
************************************************************************************/
void print_output (float a1, float a2, float a3, float b1, float b2, float b3, float c1, float c2, float c3, float area, float volume)
{
printf("\n\n\r The input vectors are: \n\n"
"\r i j k \n"
"\r %5.2f %5.2f %5.2f \n"
"\r %5.2f %5.2f %5.2f \n"
"\r %5.2f %5.2f %5.2f \n\n\n\n", a1, a2, a3, b1, b2, b3, c1, c2, c3);
printf("The results are : \n\n"
"\rArea of parallelogram (AxB)"
"\rVolume of parallelepiped (abs(A dot(BxC))= %f \n\n", area, volume);
}
My problem here is that the error is