Рекуррентные соотношения. Задача с шарами - C (СИ)
Формулировка задачи:
Определить суммарный объем в литрах 12-и вложенных друг в друга шаров со стенками толщиной 5мм. Внутренний диаметр внутреннего шара равен 10см. Принять, что шары вкладываются друг в друга без зазоров.
Решение задачи: «Рекуррентные соотношения. Задача с шарами»
textual
Листинг программы
- /*
- Используемая формула: Vсф = 4/3 * PI * R^3 (1)
- Пусть дано N шаров.
- Что такое суммарный объём вложенных друг в друга шаров? - это внутренний объём внешнего шара (Vиск).
- Что такое внутренний объём внешнего шара (Vиск)? - это внутренний радиус внешнего шара (Rвн), подставленный в формулу (1).
- Как определить внутренний радиус внешнего шара(Rвн) - это начальный радиус (Rнач) + все приращения на радиус(H), кроме последнего.
- Что такое приращение на радиус? - это толщина стенки каждого вложенного шара.
- Таким образом, необходимо выразить R(вн). R(вн) = R(нач) + H * (N - 1).
- Далее использовать R(вн) в формуле (1).
- 1. Выразить H в см.
- 2. Выразить (Dнач) в (Rнач)
- 2. Рассчитать R(вн) в см.
- 3. Рассчитать объём в литрах.
- */
- #include <stdio.h>
- //5мм / 10 = 0.5 см
- #define WALL 0.5
- //10см / 2 = 5 см
- #define ST_RAD 5.0
- #define PI 3.141592653589
- #define SPHERE 12
- //Рассчитать R(вн) в см.
- double get_rad(const double st_rad, const double wall, const int sphere);
- //Рассчитать V(иск) объём в литрах.
- double get_answ(const double r_ins, const double pi);
- int main()
- {
- double r_inside, answer;
- r_inside = get_rad(ST_RAD, WALL, SPHERE);
- answer = get_answ(r_inside, PI);
- fprintf(stdout, "r_inside == %.2f in cubic cm\n", r_inside);
- fprintf(stdout, "the volume in litres: %.2f\n", answer);
- return 0;
- }
- //------------------------------------------------------------------------
- double get_rad(const double st_rad, const double wall, const int sphere)
- {
- double rad;
- rad = st_rad + wall * (sphere - 1);
- return rad;
- }
- //------------------------------------------------------------------------
- double get_answ(const double r_ins, const double pi)
- {
- double answer;
- //В кубических сантиметрах.
- answer = 4.0 / 3.0 * pi * (r_ins * r_ins * r_ins);
- //В литрах.
- return answer / 1000.0;
- }
- //------------------------------------------------------------------------
Объяснение кода листинга программы
- В функции get_rad выражается радиус R(вн) как сумма начального радиуса R(нач) и всех приращений на радиус H, кроме последнего. Приращение на радиус H равно 0.5 см (5мм / 10 = 0.5 см).
- В функции get_answ рассчитывается объём V(иск) как произведение числа Пи PI на куб радиуса R(вн) в кубических сантиметрах, а затем переводится в литры, делая скидку на 1000.
- В функции main() вызываются функции get_rad и get_answ, передавая им значения начальных параметров, полученных в результате компиляции. Значение R(вн) округляется до двух знаков после запятой и выводится на экран вместе с рассчитанным объёмом V(иск).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д