The goal is to calculate the total mols in a binary mix given the total volume and vol% concentration.
Trying to pass 3 functions to another function, only two of which take an argument.
One error suggests incompatible type for argument 1 but I'm not seeing it.
The other error suggests the calling function is expecting a *(pointer?) Don't understand that one either.
Thanks for any help
Code:
#include <stdio.h>#include <stdlib.h>
#include <math.h>
#define W_DENS 0.998 //Water density at 20 degrees C
#define E_DENS 07892 //Ethanol density at 20 degrees C
#define MM_W 18.0153 //Molar mass of water - grams per mol. Source NIST
#define MM_E 46.0684 //Molar mass of ethanot grams per mol. Source NIST
#define GAL2L 3.785411784 //Gallons to liters factor
/*********FUNCTION PROTOYPES*************************/
double abv_to_abw(double abv); //convert alcohol by volume to alcohol by weight
double abw_to_mf_e(double abw); //convert alcohol by weight to mol fraction of ethanol
double calc_total_mol(double get_input(), double abv_to_abw(double abv), double abw_to_mf_e(double abw));
double get_input(void);
int main()
{
double total_mol = calc_total_mol(get_input(), abv_to_abw(abv), abw_to_mf_e(abw));
printf("\ntotal mols = %lf", total_mol);
return 0;
}
/*********FUNCTION DEFINITIONS*************************/
double get_input(void)
{
double input = 0;
scanf("%lf", &input);
return input;
}
/**********************************/
//alcohol conversion functions abv to abw results are between 0 and 1 and only valid for input between 0 and 1
//From "On the Conversion of Alcohol by Edwin Croissant - R1: 2014*02-16
double abv_to_abw(double abv)
{
const double a = 0.00018684999875047631;
const double b = 0.77602465132552556;
const double c = 0.41803095099103116;
const double d = -2.5221614925275091;
const double f = 9.5827123045656251;
const double g = -19.928886159385002;
const double h = 24.165120890385651;
const double i = -15.830262207383321;
const double j = 4.3390473620304988;
double temp = j;
temp = temp * abv +i;
temp = temp * abv +h;
temp = temp * abv +g;
temp = temp * abv +f;
temp = temp * abv +d;
temp = temp * abv +c;
temp = temp * abv +b;
double abw = temp * abv +a;
return abw;
}
/*******************************/
double abw_to_mf_e(double abw)
{
double mf_e = abw / (abw + MM_E / MM_W * (1-abw));
return mf_e;
}
/*******************************/
double calc_total_mol(double get_input(), double abv_to_abw(double abv), double abw_to_mf_e(double abw))
{
printf("\nEnter Wash Gallons");
double wash_l = get_input() * GAL2L;
printf("\nEnter ABV (between 0 and 1)");
double abv = get_input();
double water_mol = wash_l *(1-abv) *1000 *W_DENS / MM_W;
double abw = abv_to_abw(abv);
double eth_mol = abw_to_mf_e(abw);
return water_mol + eth_mol;
}