Рекуррентные соотношения. Задача с шарами - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Определить суммарный объем в литрах 12-и вложенных друг в друга шаров со стенками толщиной 5мм. Внутренний диаметр внутреннего шара равен 10см. Принять, что шары вкладываются друг в друга без зазоров.

Решение задачи: «Рекуррентные соотношения. Задача с шарами»

textual
Листинг программы
  1. /*
  2. Используемая формула: Vсф = 4/3 * PI * R^3                (1)
  3. Пусть дано N шаров.
  4. Что такое суммарный объём вложенных друг в друга шаров? - это внутренний объём внешнего шара (Vиск).
  5. Что такое внутренний объём внешнего шара (Vиск)?        - это внутренний радиус внешнего шара (Rвн), подставленный в формулу (1).
  6. Как определить внутренний радиус внешнего шара(Rвн)     - это начальный радиус (Rнач) + все приращения на радиус(H), кроме последнего.
  7. Что такое приращение на радиус?                         - это толщина стенки каждого вложенного шара.
  8. Таким образом, необходимо выразить R(вн). R(вн) = R(нач) + H * (N - 1).
  9. Далее использовать R(вн) в формуле (1).
  10.  
  11. 1.  Выразить H в см.
  12. 2.  Выразить (Dнач) в (Rнач)
  13. 2.  Рассчитать R(вн) в см.
  14. 3.  Рассчитать объём в литрах.
  15. */
  16.  
  17. #include <stdio.h>
  18.  
  19. //5мм / 10 = 0.5 см
  20. #define WALL    0.5
  21. //10см / 2 = 5 см
  22. #define ST_RAD  5.0
  23. #define PI      3.141592653589
  24. #define SPHERE  12
  25.  
  26. //Рассчитать R(вн) в см.
  27. double get_rad(const double st_rad, const double wall, const int sphere);
  28. //Рассчитать V(иск) объём в литрах.
  29. double get_answ(const double r_ins, const double pi);
  30.  
  31. int main()
  32. {
  33.     double r_inside, answer;
  34.  
  35.     r_inside    = get_rad(ST_RAD, WALL, SPHERE);
  36.     answer      = get_answ(r_inside, PI);
  37.  
  38.     fprintf(stdout, "r_inside == %.2f in cubic cm\n", r_inside);
  39.     fprintf(stdout, "the volume in litres: %.2f\n", answer);
  40.  
  41.     return 0;
  42. }
  43. //------------------------------------------------------------------------
  44. double get_rad(const double st_rad, const double wall, const int sphere)
  45. {
  46.     double rad;
  47.  
  48.     rad = st_rad + wall * (sphere - 1);
  49.    
  50.     return rad;
  51. }
  52. //------------------------------------------------------------------------
  53. double get_answ(const double r_ins, const double pi)
  54. {
  55.     double answer;
  56.    
  57.     //В кубических сантиметрах.
  58.     answer = 4.0 / 3.0 * pi * (r_ins * r_ins * r_ins);  
  59.  
  60.     //В литрах.
  61.     return answer / 1000.0;
  62. }
  63. //------------------------------------------------------------------------

Объяснение кода листинга программы

  1. В функции get_rad выражается радиус R(вн) как сумма начального радиуса R(нач) и всех приращений на радиус H, кроме последнего. Приращение на радиус H равно 0.5 см (5мм / 10 = 0.5 см).
  2. В функции get_answ рассчитывается объём V(иск) как произведение числа Пи PI на куб радиуса R(вн) в кубических сантиметрах, а затем переводится в литры, делая скидку на 1000.
  3. В функции main() вызываются функции get_rad и get_answ, передавая им значения начальных параметров, полученных в результате компиляции. Значение R(вн) округляется до двух знаков после запятой и выводится на экран вместе с рассчитанным объёмом V(иск).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут