Should I change something in written code? Compiler says that everything is right — no errors or warnings.
- You are building a new home and you have calculated exactly how much cement you need for the foundation.
- Ideally you'd like to purchase this exact amount of cement, but the store only sells cement in 120-pound bags.
- Each of these bags costs 45 dollars.
Please write a C program that calculates the cost of the cement you will have to purchase to build your foundation.
- Your program should first read a decimal number representing the amount of cement needed (in pounds) for the foundations of your new home.
- Your program should then display the total cost of the cement bags you have to purchase to have enough cement to build your foundation.
- To make your program simpler, you are guaranteed that the amount of cement needed will NEVER be a multiple of 120.
My code so far:
#include <stdio.h>
#include <math.h>
int main(void) {
int price=45, totalPrice, OneBag=120;
float needed;
do
{
printf("Enter the amount of cement you need for your foundation that is not dividable by 120: ");
scanf("%f", &needed);
} while (fmodf(needed, OneBag)==0);
totalPrice = ((int)needed/OneBag+1)*(price);
printf("Total cost of cement you will need for your foundation is %d", totalPrice);
return 0;
}
To be honest, I don't see any real mistakes in your code, but in my opinion, there is room for improvement:
Price per bag and size of a bag, are both constants, which you can actually make clear in your code, this is more readable and it allows the compiler to optimize your code better.
You also don't actually have to check if the input is a multiple of 120, because it is a given that it is not.
There is also something called the
ceil
function (orceilf
if working with floats), which actually takes any number and increases upward to the nearest integer. Which is pretty useful for this assignment.One last thing just because the compiler says it's all right, doesn't mean it actually is.
code: