Write a C function named liquid() that is to accept an integer number and the ad
ID: 665582 • Letter: W
Question
Write a C function named liquid() that is to accept an integer number and the addresses of the variables gallons, quarts, pints, and cups. The passed integer represents the total number of cups, and the function is to determine the number of gallons, quarts, pints, and cups in the passed value. Using the passed addresses, the function should directly alter the respective variables in the calling function. Use the relationships of 2 cups to a pint, 4 cups to a quart, and 16 cups to a gallon.
Include this function in a program, printing the results after the function has run.
If the user enters 27 cups, the output should be:
1 gallon
2 quarts
1 pint
1 cup
and not:
1 gallon
6 quarts
13 pints
27 cups
Explanation / Answer
#include <stdio.h>
#include <math.h>
void liquid(int ,int*,int*,int*,int*);
int main()
{
int num1, gallons, quarts, pints, cups;
printf("Enter the number of cups:");
scanf("%2d",&num1);
liquid(num1, &gallons, &quarts, &pints, &cups);
return 0;
}
void liquid(int x, int *gallons, int *quarts, int *pints, int *cups)
{
static int y;
y = x;
if (y >= 16)
{
*gallons = (y / 16);
printf("The number of gallons is %3d ", *gallons);
}
if (y - (*gallons * 16) >= 4)
{
*quarts = ((y - (*gallons * 16)) / 4);
printf("The number of quarts is %3d ", *quarts);
}
if ((y - (*gallons * 16) - (*quarts * 4)) >= 2)
{
*pints = ((y - (*gallons * 16) - (*quarts * 4)) / 2);
printf("The number of pints is %3d ", *pints);
}
if ((y - (*gallons * 16) - (*quarts * 4) - (*pints *2)) < 2 || y == 0)
{
*cups = (y - (*gallons * 16) - (*quarts * 4) - (*pints *2));
printf("The number of cups is %3d ", *cups);
}
return;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.