C/C++

Помогите решить задачу на языке программирования Си, пожалуйста

Элементы равнобедренного прямоугольного треугольника
пронумерованы следующим образом: 1 — катет a, 2 — гипотенуза
c = √2 * a, 3 — высота h, опущенная на гипотенузу (h = c/2), 4 —
площадь S = c·h/2. Дан номер одного из этих элементов и его
значение. Вывести значения остальных элементов данного
треугольника (в том же порядке).
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
double value_positive(const char* msg) {
double v = 0.0;
do {
printf(msg);
scanf_s("%lf", &v);
while (getchar() != '\n');
} while (v <= 0.0);
return v;
}
unsigned number(const char* msg, unsigned mn, unsigned mx) {
unsigned v = 0U;
do {
printf(msg);
scanf_s("%u", &v);
while (getchar() != '\n');
} while (v < mn || v > mx);
return v;
}
int main(void) {
double sqrt2 = sqrt(2.0);
unsigned n;
double x;
double a, c, h, s;
system("chcp 1251 > nul");
while (1) {
n = number("Введите номер: ", 1, 4);
x = value_positive("Введите значение: ");
a = c = h = s = 0.0;
switch (n) {
case 1:
a = x;
c = a * sqrt2;
h = c / 2.0;
s = a * a / 2.0;
break;
case 2:
c = x;
a = c * sqrt2 / 2.0;
h = c / 2.0;
s = a * a / 2.0;
break;
case 3:
h = x;
a = 2 * h / sqrt2;
c = a * sqrt2;
s = a * a / 2.0;
break;
case 4:
s = x;
a = sqrt(2.0 * s);
c = a * sqrt2;
h = c / 2.0;
break;
}
printf("a: %lf\nc: %lf\nh: %lf\nS: %lf\n", a, c, h, s);
}
return 0;
}
Patron Patron
Patron Patron
54 406
Лучший ответ
Константин Бобровский... А можно попросить Вас комментарии ко всем действиям в программе, чтобы понимать что к чему производится?