Рекуррентные соотношения. Задача с шарами - 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(иск).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д