저는 토러스의 종류, 토러스의 부피, 표면적 및 2 개의 입력 반경 : rmajor 및 rminor을 기반으로 한 페인팅/페인팅 비용을 결정하는 프로그램을 작업 중입니다. 유일한 복잡한 부분은 논리 연산자 나 비교 문을 사용할 수 없다는 것입니다. 토러스와 관련된 표면적, 부피 및 비용을 결정할 수 있지만 인쇄 문에 표시된대로 제조 코드를 결정할 수는 없습니다. 해당 제조 코드는 다음과 같다 :논리 연산자를 사용하지 않고 C에서 2 문자를 인쇄하는 방법은 무엇입니까?
- 리 : 링 원환 (rmajor> rminor)
- HN : 혼 원환 (rmajor = rminor)
- SP : 스핀들 원환. (rmajor < rminor)
해당 제조 코드를 각 토러스 유형으로 올바르게 인쇄하려면 어떻게해야합니까?
출력 1 링 원환 체 (RI)로 가정하고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
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
출력 2는이어야한다 : 여기
#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);
}
내 예컨대 출력의 일부이다 : 여기
내 현재 코드 경적 토러스 (Hn). 어떤 도움을 주셔서 감사합니다, 감사합니다!
코드에는 분명한 목적이없는 많은 "마법"번호와 변수가 사용됩니다. 따라하기 쉬운 최소한의 예제를 제시하는 것이 좋습니다. 나는이 라인이 무엇을 의미하는지 알아낼 때 어디에서 시작해야할지 모른다. char1 = (factor1 * (82 - 65)) + (factor2 * (72 - 65)) + (factor3 * (83 - 65)); –
두 숫자를 비교하는 데 왜 세 가지 요인이 필요합니까? – dasblinkenlight
아스키 문자로 수학 게임을하는 대신에'if'명령문을 쓰고 사용하면 안 될까요? – infixed