gpt4 book ai didi

c - 我正在尝试将数据从 calcArea 函数传递到 calcCost 函数,但我遇到了问题

转载 作者:行者123 更新时间:2023-11-30 17:05:10 25 4
gpt4 key购买 nike

我现在正在尝试让我的 calcCost 函数正常工作。它不继承面积变量。有什么想法为什么它不起作用吗?我可以使用 calcArea 函数,但是我可以使用面积值作为 calcCost 面积值吗?我开始尝试在其中放置一个指针,但我对它们还不太熟悉。

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

// Define Constants
#define SALESTAX .07
#define TILEONE 0.78
#define TILETWO 1.59
#define TILETHREE 0.89
#define TILEONECASE 17.44
#define TILETWOCASE 10.89
#define TILETHREECASE 15.50
#define TILESIZE1 2.25
#define TILESIZE2 0.97222
#define TILESIZE3 1.77777
// Prototypes
void welcomeMessage(void);
char SelectChoice();
double getLength();
double getWidth();
double calcArea(double len, double wid);
double calcCost(double area);
void endMessage(void);
//integar return type, parameters are void,Richard's Flooring main function allows users to calculate room area and buy flooring.
int main (void)
{
//declare variables
double len, wid, area, tileNeeded,subTotal, taxTotal, total,cost;
double *dp;
char answer, myChoice;
dp = &area;


// Greets users and identifities program.
welcomeMessage ();
//Loop continues until user is done calculating area and buying flooring.

printf("Choice | Dimesions | Price | Sq.FT.per case|\n 1 | 18 x 18 | $%.2lf | 17.44 |\n 2 | 7 x 20 | $%.2lf | 10.89 |\n 3 | 16 x 16 | $%.2lf | 15.50 |\n",TILEONE, TILETWO, TILETHREE);

myChoice = SelectChoice();
len = getLength();
wid = getWidth();
// calcArea function is a double return type, it calculates the Area entered in by the user, its parameters are double len and double wid
area = calcArea(len,wid);
printf("The area of your room is: %g square feet.\n",area);
calcCost(area);
//Provides users with publisher's name.
endMessage ();

return 0;
}
// no return type, tells users what kind of program they are using, and voids any parameters.
void welcomeMessage (void)
{
printf("Welcome to Richard's Flooring\n");
system ("pause");
return ;
}

// no return type, allows user to select choice
char SelectChoice()
{
char myChoice;

do
{
printf("\nWhich tile choice would you like: ");
scanf(" %c", &myChoice);

switch(myChoice)
{
case '1':
printf("You chose choice: 1");
break;


case '2':
printf("You chose choice: 2");
break;


case '3':
printf("You chose choice: 3");
break;


default:
printf("\nINVALID CHOICE 1 - 3 only!");

}
}

while (myChoice > '3'|| myChoice < '1');
return myChoice;

}

double getLength()
{
double len;
// loop continues until positive numbers are entered.
do
{
printf("\nEnter length of room in feet: ");
scanf(" %lf", &len);
if (len <= 0)
printf("\nLength must be positive number.");
}
while (len <=0);
return len;
}


double getWidth()
{
double wid;
// loop continues until positive numbers are entered.
do
{
printf("\nEnter width of room in feet: ");
scanf(" %lf", &wid);
if (wid <= 0)
printf("\nWidth must be positive number.");
}
while (wid <=0);
return wid;
}

// Double return type, which is returning Area. Calculates the Area in a square or rectangle with the formula length * width. Accepts parameters from double len and double wid.
double calcArea(double len, double wid)
{
double area;
area = (len * wid);
return area;
}

double calcCost(double area)
{
SALESTAX ;
double len, wid, tileNeeded,subTotal, taxTotal, total,cost;
char answer, myChoice;
area = calcArea(len,wid);

do
{


char myChoice;
if (myChoice == '1')
{
tileNeeded = area/TILESIZE1;
}

else if (myChoice == '2')
{
tileNeeded = area/TILESIZE2;
}

else if (myChoice == '3')
{
tileNeeded = area/TILESIZE3;
}
printf("You will need %.2lf pieces of tile\n", tileNeeded);
subTotal = tileNeeded * TILETHREE;
printf("Your subtotal is: $%.2lf \n", subTotal);
taxTotal = subTotal * SALESTAX;
printf("Your sales tax comes out to be: $%.2lf \n", taxTotal);
total = taxTotal + subTotal;
printf("Your grand total is: $%.2lf \n",total);
printf("Would you like to measure another room?\n y or n:");
scanf(" %c", &answer);
}

while (answer == 'y'|| answer == 'Y');
}

// no return type, tells users Richard made the program, voids any parameters
void endMessage (void)
{
printf("\nThese results were provided by Richard Triplett\n");
system ("pause");
return ;
}

最佳答案

在 main 中,您有这些行来计算面积并将其传递给 calcCost:

area = calcArea(len,wid);
printf("The area of your room is: %g square feet.\n",area);
calcCost(area);

这应该可以正常工作,但在 calcCost 中你有:

double  len, wid, tileNeeded,subTotal, taxTotal, total,cost;
char answer, myChoice;
area = calcArea(len,wid);

这会根据 calcCost 中定义的 len 和 wid 变量重新计算面积。这两者都从未设置为特定值,因此它们的值是不确定的,从而导致整体面积不确定。

如果您从 calcCost 中删除 area = calcArea(len,wid); 行,那么您至少将使用正确的面积值。

您还会遇到 myChoice 问题,因为它又在 calcCost 中重新定义,并且具有不确定的值。最简单的解决方案可能是将 myChoice 作为 calcCost 的附加参数并从 main 传入。

calcCost 中的 do 循环也无法按要求工作。每次按下“y”或“Y”时,它都会返回完全相同的答案。 do 循环可能应该迁移到 main 中,但我现在刚刚将其完全删除。

需要改变:

在主要部分

calcCost(area,myChoice);

计算成本

double calcCost(double area, char myChoice)
{
double tileNeeded,subTotal, taxTotal, total,cost;

if (myChoice == '1')
{
tileNeeded = area/TILESIZE1;
}

else if (myChoice == '2')
{
tileNeeded = area/TILESIZE2;
}

else if (myChoice == '3')
{
tileNeeded = area/TILESIZE3;
}
printf("You will need %.2lf pieces of tile\n", tileNeeded);
subTotal = tileNeeded * TILETHREE;
printf("Your subtotal is: $%.2lf \n", subTotal);
taxTotal = subTotal * SALESTAX;
printf("Your sales tax comes out to be: $%.2lf \n", taxTotal);
total = taxTotal + subTotal;
printf("Your grand total is: $%.2lf \n",total);
}

关于c - 我正在尝试将数据从 calcArea 函数传递到 calcCost 函数,但我遇到了问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35423132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com