我正在制定一個程序,該程序根據2個輸入半徑rmajor和rminor確定圓環面的類型,圓環體的體積,表面面積和製作成本/繪畫的成本。 唯一複雜的部分是我不能使用邏輯運算符或比較語句。我可以確定與圓環面相關的表面積,體積和成本,但我無法確定製造代碼(如打印報告所示)。相應的製造代碼如下:如何在C中打印2個字符而不使用邏輯操作符?
- RI:環圓環(rmajor> rminor)
- Hn的:喇叭圓環(rmajor = rminor)
- SP:主軸圓環。 (rmajor < rminor)
我該如何正確地將相應的製造代碼打印到每種類型的環面?
這是我的當前代碼:
#include<stdio.h>
#include<math.h>
//GLOABAL DECLARATIONS
#define COST 75.25
#define PAINT 13.65
int main()
{
//LOCAL DECLARATIONS
int rmajor;
int rminor;
int factor1;
int factor2;
int factor3;
char char1;
char char2;
double area;
double volume;
double cost;
double paint;
//EXECUTABLES
printf("Please input major radius (meters): ");
scanf("%d" , &rmajor);
printf("Please input minor radius (meters): ");
scanf("%d", &rminor);
printf("\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n");
volume = (M_PI * pow(rminor,2)) * (2*M_PI*rmajor);
area = (4 * pow(M_PI,2) * rmajor * rminor);
factor1 = rmajor/rminor;
factor2 = rminor/rmajor;
factor1 = (factor1 + 2) % (factor1 + 1);
factor2 = (factor2 + 2) % (factor2 + 1);
factor3 = (factor1 * rmajor) + (factor2 * rminor);
factor3 = factor3/(factor1 + factor2);
char1 = (factor1 * ('R' - 'A')) + (factor2 * ('H' - 'A')) + (factor3 * ('S' - 'A'));
char2 = (factor1 * ('i' - 'A')) + (factor2 * ('n' - 'A')) + (factor3 * ('p' - 'A'));
//printf("\nchar1: %c\n", char1);
//printf("char2: %c\n", char2);
cost = COST * volume;
paint = PAINT * area;
printf("Manufacturing Code: %c%c\n ", 'A' + char1, 'A' + char2);
printf("Surface Area : %13.2f\n", area);
printf("Volume : %13.2f\n", volume);
printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
printf("Cost of building torus ($): %12.2f\n", cost);
printf("Cost of painting torus ($): %12.2f\n", paint);
printf("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
return(0);
}
這裏是我的一些示例輸出:
Please input major radius (meters): 10
Please input minor radius (meters): 5
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Manufacturing Code: ?
Surface Area : 1973.92
Volume : 4934.80
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Cost of building torus ($): 371343.87
Cost of painting torus ($): 26944.02
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
52 lpvinslogin01.itap.purdue.edu ~/CS159/labs/lab03 % a.out
Please input major radius (meters): 7
Please input minor radius (meters): 7
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Manufacturing Code: ▒▒
Surface Area : 1934.44
Volume : 6770.55
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Cost of building torus ($): 509483.78
Cost of painting torus ($): 26405.14
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
輸出1被認爲是一個環圓環(RI)和輸出2應該是一個喇叭狀圓環(Hn)。任何幫助表示讚賞,謝謝!
您的代碼使用了很多「魔術」數字和變量,但沒有明確的目的。你應該考慮構建一個更容易遵循的更簡單的例子。我不知道從哪裏開始,當確定這條線意味着什麼時:'char1 =(factor1 *(82-65))+(factor2 *(72-65))+(factor3 *(83-65)); –
爲什麼你需要三個因素來比較兩個數字? – dasblinkenlight
難道你不能分解並使用'if'語句而不是用ASCII字符來玩數學遊戲嗎? – infixed