Я работаю над программой, определяющей тип тора, объем этого тора, площадь поверхности и стоимость его изготовления/покраску на основе двух входных радиусов: rmajor и rminor. Единственная сложная часть - я не могу использовать логические операторы или операторы сравнения. Я могу определить площадь поверхности, объем и затраты, связанные с тором, но я не могу определить код производства (как показано в операциях печати). Соответствующие коды Производство заключаются в следующем:Как печатать 2 символа в C без использования логических операторов?
- Ri: кольцо тор (rmajor> rminor)
- Нп: рог тор (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