Рекуррентные соотношения. Задача с шарами - 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;
}
//------------------------------------------------------------------------

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

  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