Есть несколько проблем,
- параметры, предоставленные большинству функций автомобиля, бесполезны
- необходимые параметры не предоставлены (
carCalculate
) - цикл
= 0
с =
(присваивание вместо теста на равенство) - цикл в условии, когда переменная не изменяется
- вызов функций в
main()
без (param)
Этот код должен работать:
int carLength() // <== no need to provide length, it is returned
{
int length;
do
{
printf("\nPlease input the length of the area being carpeted:");
scanf("%d", &length);
} while (length == 0); // <== length is changed within the loop
return length;
}
int carWidth() //Width
{
int width = 0;
do
{
printf("\nPlease input the width of the area being carpeted:");
scanf("%d", &width);
} while (width == 0);
return width;
}
int carCalculate(int width, int length) // <== need to provide values
{
int cost = (width * length) * 20;
return cost;
}
float cardiscount(float cost) //discount
{
float discount = cost - (cost * .1);
return discount;
}
void displaydisc(float discount) //discount
{
printf("\nThe total cost is: %f\n", discount);
}
int main()
{
int length; // <== no need to set to 0, as their values
int width; // are going to be initialized later
int cost;
int discount;
length = carLength();
width = carWidth();
cost = carCalculate(width, length);
discount = cardiscount((float)cost);
displaydisc(discount);
printf("\n Thank you for using this program!");
system("pause");
}
Вы также могли бы попросить функции ввода заполнить значение, указатель которого задан в качестве аргумента, например
int carLength(int *length) {
do {
printf("\nPlease input the length of the area being carpeted:");
scanf("%d", length);
} while (*length == 0);
}
int вызывается main
carLength( &length );