Remove Text Formatting
Loading...

+ Reply to Thread
Results 1 to 4 of 4
  1. #1
    Join Date
    Aug 2003
    Location
    Australia
    Posts
    934

    Default Circumference of circle to many decimal places

    Hi Guys,
    I was involved in a coding challenge to calculate 2 pi r,
    the circumference of a circle, given the radius as input, without any multiplication, division, or floats,
    so I pretended I was using an 8 bit pic It was done in C, but all variables were integers,
    so hopefully this BASIC is a good representation. (only the C was tested).
    Cheers

    Code:
       var word input = 300 ‘ input radius
        var byte twopi[19] = { 0x00,0x00,0x00,0x06,0x02,0x08,0x03,0x01,0x08,0x05,0x03,0x00,0x07,0x01,0x07,0x09,0x05,0x09,0x00 }
        var byte otput[19] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }
        var word adcnt = 0 ‘ counter
        var byte dgcnt = 0 ‘ digit index
        var byte carry = 0 ‘ carry digit
    
    
        while (adcnt < input)  ‘ multiply through addition
            dgcnt = 17 : carry = 0
            while (dgcnt > 0) ‘ cycle the digits
            	otput[dgcnt] = otput[dgcnt] + twopi[dgcnt] + carry : carry = 0 ‘ add digit
              	if (otput[dgcnt] > 9)
     		otput[dgcnt] = otput[dgcnt] - 10 : carry = 1
     		endif ‘ carry digit
                dgcnt = dgcnt - 1
            wend ‘ dgcnt
            if (carry != 0)
    		otput[dgcnt] = otput[dgcnt] + 1
    	endif
            adcnt = adcnt + 1	
    	wend ‘ adcnt
        twopi[18] = 0 // terminate string
    
        // answer: 1884.9555921538758 is the string in the otput array

  2. #2
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    2,566

    Default Re: Circumference of circle to many decimal places

    Nice idea! Thanks for sharing it.

    How can you tell where the decimal dot would be?

    Ioannis

  3. #3
    Join Date
    Aug 2003
    Location
    Australia
    Posts
    934

    Default Re: Circumference of circle to many decimal places

    I think I made a mistake for BASIC. I don’t think you get to populate the first two arrays that way,
    but in some program they would be populated at run time with the input received, so I guess that’s ok.

    The addition is done the same way you were taught to do it on paper in primary school
    You could insert a decimal point with a value such as $2E in the input arrays somewhere, which would also require you keep them aligned.
    For the constant Pi2, it just goes between the first 6 and the 2. Then if the input had a decimal point, the array would have to be rotated so that
    for this example, the decimal point value is also at index 4 int he array. Ignore it in calculation, but remember it’s index to be passed through to the output.
    Still just as you were taught in school on paper. The decimal point is there on paper, but you do nothing with it other than also print it for the output.
    In any case of course, PBP doesn’t actually know the input or the output result as any variable of it’s own, but could still display it on a screen.

  4. #4
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    2,566

    Default Re: Circumference of circle to many decimal places

    The population is a C way and since you developed for C first it was expected I guess

    Ioannis

Similar Threads

  1. Want to display less decimal places on LCD from 16bit ADC
    By Ryan7777 in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 12th June 2015, 22:14
  2. Replies: 2
    Last Post: - 8th April 2012, 15:11
  3. How long does this circle take?
    By IAmTheAnswer in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 9th May 2010, 15:14
  4. Bcd-->Decimal please help
    By memo333 in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 18th January 2006, 12:27
  5. Decimal value
    By leonel in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 7th April 2005, 16:39

Members who have read this thread : 19

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts