Wednesday, July 3, 2024
HomeData ModellingData Structure & AlgorithmLargest sphere that can be inscribed in a right circular cylinder inscribed...

Largest sphere that can be inscribed in a right circular cylinder inscribed in a frustum

Given here is a frustum of height h, top-radius r & base-radius R, which inscribes a right circular cylinder which in turn inscribes a sphere . The task is to find the largest possible volume of this sphere.

Examples: 

Input: r = 5, R = 8, h = 11
Output: 523.333

Input: r = 9, R = 14, h = 20
Output:3052.08

 

 

Approach: Let the height of the cylinder = H, radius of the sphere = x 
We know, the height and radius of the cylinder inscribed within the frustum is equal to the height and top-radius of the frustum respectively(Please refer here).So the height of the cylinder = h, radius of the cylinder = r
Also, radius of the sphere inscribed within a cylinder is equal to radius of the cylinder(Please refer here), so x = r
So, volume of the sphere, V = 4*?*r^3/3.

Below is the implementation of the above approach:

C++




// C++ Program to find the biggest sphere
// that can be inscribed within a right
// circular cylinder which in turn is inscribed
// within a frustum
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the biggest sphere
float sph(float r, float R, float h)
{
 
    // the radii and height cannot be negative
    if (r < 0 && R < 0 && h < 0)
        return -1;
 
    // radius of the sphere
    float x = r;
 
    // volume of the sphere
    float V = (4 * 3.14 * pow(r, 3)) / 3;
 
    return V;
}
 
// Driver code
int main()
{
    float r = 5, R = 8, h = 11;
    cout << sph(r, R, h) << endl;
 
    return 0;
}


Java




// Java Program to find the biggest sphere
// that can be inscribed within a right
// circular cylinder which in turn is inscribed
// within a frustum
import java.lang.Math;
 
class gfg
{
     
// Function to find the biggest sphere
static float sph(float r, float R, float h)
{
 
    // the radii and height cannot be negative
    if (r < 0 && R < 0 && h < 0)
        return -1;
 
    // radius of the sphere
    float x = r;
 
    // volume of the sphere
    float V = (float)(4 * 3.14f * Math.pow(r, 3)) / 3;
 
    return V;
}
 
// Driver code
public static void main(String[] args)
{
    float r = 5, R = 8, h = 11;
    System.out.println(sph(r, R, h));
}
}
 
// This Code is contributed by Code_Mech.


Python3




# Python3 Program to find the biggest sphere
# that can be inscribed within a right
# circular cylinder which in turn is inscribed
# within a frustum
import math as mt
 
# Function to find the biggest sphere
def sph(r, R, h):
 
    # the radii and height cannot
    # be negative
    if (r < 0 and R < 0 and h < 0):
        return -1
 
    # radius of the sphere
    x = r
 
    # volume of the sphere
    V = (4 * 3.14 * pow(r, 3)) / 3
 
    return V
 
# Driver code
r, R, h = 5, 8, 11
print(sph(r, R, h))
 
# This code is contributed by
# Mohit kumar 29


C#




// C# Program to find the biggest sphere
// that can be inscribed within a right
// circular cylinder which in turn is
// inscribed within a frustum
using System;
 
class gfg
{
     
    // Function to find the biggest sphere
    static float sph(float r, float R, float h)
    {
     
        // the radii and height
        // cannot be negative
        if (r < 0 && R < 0 && h < 0)
            return -1;
     
        // radius of the sphere
        float x = r;
     
        // volume of the sphere
        float V = (float)(4 * 3.14f *
                    Math.Pow(r, 3)) / 3;
     
        return V;
    }
     
    // Driver code
    public static void Main()
    {
        float r = 5, R = 8, h = 11;
        Console.WriteLine(sph(r, R, h));
    }
}
 
// This code is contributed by Ryuga


PHP




<?php
// PHP Program to find the biggest sphere
// that can be inscribed within a right
// circular cylinder which in turn is
// inscribed within a frustum Function
// to find the biggest sphere
 
function sph($r, $R, $h)
{
 
    // the radii and height
    // cannot be negative
    if ($r < 0 && $R < 0 && $h < 0)
        return -1;
 
    // radius of the sphere
    $x = $r;
 
    // volume of the sphere
    $V = (4 * 3.14 * pow($r, 3)) / 3;
 
    return $V;
}
 
// Driver code
    $r = 5;
    $R = 8;
    $h = 11;
    echo sph($r, $R, $h);
 
#This Code is contributed by ajit..
?>


Javascript




<script>
 
// javascript Program to find the biggest sphere
// that can be inscribed within a right
// circular cylinder which in turn is inscribed
// within a frustum
 
     
// Function to find the biggest sphere
function sph(r , R , h)
{
 
    // the radii and height cannot be negative
    if (r < 0 && R < 0 && h < 0)
        return -1;
 
    // radius of the sphere
    var x = r;
 
    // volume of the sphere
    var V = ((4 * 3.14 * Math.pow(r, 3)) / 3);
 
    return V;
}
 
// Driver code
 var r = 5, R = 8, h = 11;
document.write(sph(r, R, h).toFixed(5));
 
// This code is contributed by Amit Katiyar
 
</script>


Output: 

523.333

 

Time Complexity: O(1)
Auxiliary Space: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments