Largest right circular cylinder within a frustum

Given a frustum of height , top-radius & base-radius . The task is to find the volume of biggest right circular cylinder that can be inscribed within it.

**Examples:**

Input: r = 5, R = 10, h = 4Output: 314Input: r = 7, R = 11, h = 6Output: 923.16

**Approach**:

Let:

- The height of the cylinder =
**h1** - Radius of the cylinder =
**r1**

From the figure it is clear that:

- Height of the cylinder = Height of frustum
- Radius of the cylinder = Rop-radius of the frustum

So,

h1 = h r1 = r

Below is the implementation of the above approach:

## C++

`// C++ Program to find the biggest right circular cylinder ` `// that can be fit within a frustum ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to find the biggest right circular cylinder ` `float` `cyl(` `float` `r, ` `float` `R, ` `float` `h) ` `{ ` ` ` `// radii and height cannot be negative ` ` ` `if` `(h < 0 && r < 0 && R < 0) ` ` ` `return` `-1; ` ` ` ` ` `// radius of right circular cylinder ` ` ` `float` `r1 = r; ` ` ` `// height of right circular cylinder ` ` ` `float` `h1 = h; ` ` ` `// volume of right circular cylinder ` ` ` `float` `V = 3.14 * ` `pow` `(r1, 2) * h1; ` ` ` ` ` `return` `V; ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `float` `r = 7, R = 11, h = 6; ` ` ` ` ` `cout << cyl(r, R, h) << endl; ` ` ` ` ` `return` `0; ` `} ` |

## Java

`// Java Program to find the biggest right circular cylinder ` `// that can be fit within a frustum ` ` ` `import` `java.io.*; ` ` ` `class` `GFG { ` ` ` ` ` `// Function to find the biggest right circular cylinder ` ` ` `static` `float` `cyl(` `float` `r, ` `float` `R, ` `float` `h) ` `{ ` ` ` `// radii and height cannot be negative ` ` ` `if` `(h < ` `0` `&& r < ` `0` `&& R < ` `0` `) ` ` ` `return` `-` `1` `; ` ` ` ` ` `// radius of right circular cylinder ` ` ` `float` `r1 = r; ` ` ` `// height of right circular cylinder ` ` ` `float` `h1 = h; ` ` ` `// volume of right circular cylinder ` ` ` `float` `V = (` `float` `)(` `3.14` `* Math.pow(r1, ` `2` `) * h1); ` ` ` ` ` `return` `V; ` `} ` ` ` `// Driver code ` ` ` `public` `static` `void` `main (String[] args) { ` ` ` `float` `r = ` `7` `, R = ` `11` `, h = ` `6` `; ` ` ` ` ` `System.out.print( cyl(r, R, h)); ` ` ` `} ` `} ` `// This code is contributed by anuj_67.. ` |

## Python3

`# Python3 Program to find the biggest right circular cylinder ` `# that can be fit within a frustum ` ` ` `# Function to find the biggest right circular cylinder ` `def` `cyl(r, R, h) : ` ` ` ` ` `# radii and height cannot be negative ` ` ` `if` `(h < ` `0` `and` `r < ` `0` `and` `R < ` `0` `) : ` ` ` `return` `-` `1` ` ` ` ` `# radius of right circular cylinder ` ` ` `r1 ` `=` `r ` ` ` `# height of right circular cylinder ` ` ` `h1 ` `=` `h ` ` ` `# volume of right circular cylinder ` ` ` `V ` `=` `3.14` `*` `pow` `(r1, ` `2` `) ` `*` `h1 ` ` ` ` ` `return` `round` `(V,` `2` `) ` ` ` ` ` `# Driver code ` `if` `__name__ ` `=` `=` `"__main__"` `: ` ` ` ` ` `r, R, h ` `=` `7` `, ` `11` `, ` `6` ` ` ` ` `print` `(cyl(r, R, h)) ` ` ` `# This code is contributed by Ryuga ` |

## C#

`// C# Program to find the biggest right circular cylinder ` `// that can be fit within a frustum ` `using` `System; ` ` ` `class` `GFG { ` ` ` ` ` `// Function to find the biggest right circular cylinder ` `static` `float` `cyl(` `float` `r, ` `float` `R, ` `float` `h) ` `{ ` ` ` `// radii and height cannot be negative ` ` ` `if` `(h < 0 && r < 0 && R < 0) ` ` ` `return` `-1; ` ` ` ` ` `// radius of right circular cylinder ` ` ` `float` `r1 = r; ` ` ` `// height of right circular cylinder ` ` ` `float` `h1 = h; ` ` ` `// volume of right circular cylinder ` ` ` `float` `V = (` `float` `)(3.14 * Math.Pow(r1, 2) * h1); ` ` ` ` ` `return` `V; ` `} ` ` ` `// Driver code ` ` ` `public` `static` `void` `Main () { ` ` ` `float` `r = 7, R = 11, h = 6; ` ` ` ` ` `Console.WriteLine( cyl(r, R, h)); ` ` ` `} ` `} ` `// This code is contributed by anuj_67.. ` |

## PHP

`<?php ` `// PHP Program to find the biggest ` `// right circular cylinder that can ` `// be fit within a frustum ` ` ` `// Function to find the biggest ` `// right circular cylinder ` `function` `cyl(` `$r` `, ` `$R` `, ` `$h` `) ` `{ ` ` ` `// radii and height cannot be negative ` ` ` `if` `(` `$h` `< 0 && ` `$r` `< 0 && ` `$R` `< 0) ` ` ` `return` `-1; ` ` ` ` ` `// radius of right circular cylinder ` ` ` `$r1` `= ` `$r` `; ` ` ` ` ` `// height of right circular cylinder ` ` ` `$h1` `= ` `$h` `; ` ` ` ` ` `// volume of right circular cylinder ` ` ` `$V` `= (3.14 * pow(` `$r1` `, 2) * ` `$h1` `); ` ` ` ` ` `return` `$V` `; ` `} ` ` ` `// Driver code ` `$r` `= 7; ` `$R` `= 11; ` `$h` `= 6; ` ` ` `echo` `cyl(` `$r` `, ` `$R` `, ` `$h` `); ` ` ` `// This code is contributed ` `// by Mukul Singh. ` |

**Output:**

923.16

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.