Open In App

Draw a circle without floating point arithmetic

Last Updated : 16 Dec, 2022
Suggest changes
Share
Like Article
Like
Report

Given a radius of a circle, draw the circle without using floating point arithmetic.
The following program uses a simple concept. Let the radius of the circle be r. Consider a square of size (2r+1)*(2r+1) around the circle to be drawn. Now walk through every point inside the square. For every point (x,y), if (x, y) lies inside the circle (or x^2+ y^2 < r^2), then print it, otherwise print space.

C++
// C++ program to draw a circle without // floating point arithmetic #include <stdio.h> void drawCircle(int r) {  // Consider a rectangle of size N*N  int N = 2*r+1;  int x, y; // Coordinates inside the rectangle  // Draw a square of size N*N.  for (int i = 0; i < N; i++)  {  for (int j = 0; j < N; j++)  {  // Start from the left most corner point  x = i-r;  y = j-r;  // If this point is inside the circle, print it  if (x*x + y*y <= r*r+1 )  printf(".");  else // If outside the circle, print space  printf(" ");  printf(" ");  }  printf("\n");  } } // Driver Program to test above function int main() {  drawCircle(8);  return 0; } 
Java
// Java program to draw a circle without // floating point arithmetic import java.io.*; class GFG { static void drawCircle(int r)  {   // Consider a rectangle of size N*N   int N = (2*r+1);   int x, y; // Coordinates inside the rectangle   // Draw a square of size N*N.   for (int i = 0; i < N; i++)   {   for (int j = 0; j < N; j++)   {   // Start from the left most corner point   x = i-r;   y = j-r;   // If this point is inside the circle, print it   if (x*x + y*y <= r*r+1 )   System.out.print(".");   else // If outside the circle, print space   System.out.print(" ");   System.out.print(" ");   }   System.out.println();   }  }  // Driver Program to test above function   public static void main (String[] args) {  drawCircle(8);   } //This code is contributed by ajit.  } 
Python3
# Python3 program to draw a circle without  # floating point arithmetic  def drawCircle(r) : # Consider a rectangle of size N*N  N = 2*r + 1 # Draw a square of size N*N.  for i in range(N) : for j in range(N) : # Start from the left most corner point  x = i - r y = j - r # If this point is inside the circle, print it  if (x * x + y * y <= r * r + 1 ) : print(".", end = "") else :# If outside the circle, print space  print(" ", end = "") print(" ", end = "") print() drawCircle(8) # This code is contributed by divyeshrabadiya07. 
C#
// C# program to draw a circle without // floating point arithmetic using System; public class GFG{  static void drawCircle(int r)  {   // Consider a rectangle of size N*N   int N = (2*r+1);   int x, y; // Coordinates inside the rectangle   // Draw a square of size N*N.   for (int i = 0; i < N; i++)   {   for (int j = 0; j < N; j++)   {   // Start from the left most corner point   x = i-r;   y = j-r;   // If this point is inside the circle, print it   if (x*x + y*y <= r*r+1 )   Console.Write(".");   else // If outside the circle, print space   Console.Write(" ");   Console.Write(" ");   }   Console.WriteLine();   }  }  // Driver Program to test above function   static public void Main (){  drawCircle(8);   } //This code is contributed by Sachin.  } 
PHP
<?php // PHP program to draw a circle without // floating point arithmetic function drawCircle($r) { // Consider a rectangle // of size N*N $N = 2 * $r + 1; // Coordinates inside // the rectangle $x; $y; // Draw a square of size N*N. for ($i = 0; $i < $N; $i++) { for ($j = 0; $j < $N; $j++) { // Start from the left  // most corner point $x = $i - $r; $y = $j - $r; // If this point is inside // the circle, print it if ($x * $x + $y * $y <= $r * $r + 1 ) echo "."; // If outside the circle,  // print space else echo " "; echo " "; } echo "\n"; } } // Driver Code drawCircle(8); // This code is contributed by aj_36 ?> 
JavaScript
<script> // javascript program to draw a circle without // floating point arithmetic  function drawCircle(r) {  // Consider a rectangle of size N*N  var N = (2 * r + 1);  var x, y; // Coordinates inside the rectangle  // Draw a square of size N*N.  for (i = 0; i < N; i++)  {  for (j = 0; j < N; j++)   {    // Start from the left most corner point  x = i - r;  y = j - r;  // If this point is inside the circle, print it  if (x * x + y * y <= r * r + 1)  document.write(".&nbsp;");  else // If outside the circle, print space  document.write("&nbsp;&nbsp;");  document.write("&nbsp;&nbsp;");  }  document.write("<br/>");  }  }  // Driver Program to test above function  drawCircle(8); // This code is contributed by gauravrajput1  </script> 

Output
 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 

Time complexity: O(N2)
Auxiliary space: O(1)


Article Tags :

Explore