私は、トーラスの種類、トーラスの表面積、表面積、および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);
}
は私の例の出力のいくつかである:1リングトーラス(RI)と出力2であることが想定される
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
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
出力であるべきですホーントーラス(Hn)。どんな助けもありがとう、ありがとう!
あなたのコードでは、明確な目的を持たない多くの「魔法の」数字と変数が使用されます。あなたは、より簡単な、より簡単な例を提示することを検討すべきです。私は、この行が何を意味するかを理解するときに、どこで始めるべきか分かりません:char1 =(factor1 *(82-65))+(factor2 *(72-65))+(factor3 *(83-65)); –
2つの数値を比較するのに3つの要因が必要なのはなぜですか? – dasblinkenlight
ASCII文字で数学ゲームをする代わりに、 'if'ステートメントを分解して使用することはできませんか? – infixed