Note that there are some explanatory texts on larger screens.

plurals
  1. POConverting numbers by Euclidean algorithm and the Horner's method
    primarykey
    data
    text
    <p>I have some trouble with my code in C. It doesn't convert the number as it should be. This is the euclidean algorithm to transform a given number to another number with a different base. "precision" is the amount of digits after comma.</p> <pre><code>static char* euclid(float number, int base, int precision) { //create a buffer for holding the resulting string char* resultString = createBuffer(number, base, precision); int numbTemp; int numbDiv; float maxExponent = 0; while (number &gt;= pow((float)base, (float)maxExponent)) { maxExponent++; } maxExponent--; if (maxExponent &lt; 0) { maxExponent = 0; } while (maxExponent &gt;= 0) { numbDiv = number / pow(base, maxExponent); *resultString += converIntToChar(numbDiv); numbTemp = numbDiv * pow(base, maxExponent); number -= numbTemp; maxExponent--; if(maxExponent &lt; 0 &amp;&amp; precision &gt;0) { *resultString += ","; while(precision &gt; 0) { numbDiv = number / pow(base, maxExponent); numbTemp = numbDiv * pow(base, maxExponent); *resultString += convertIntToChar(numbDiv); number = number - numbTemp; maxExponent--; precision--; } } } return resultString; } </code></pre> <p>converting number to character:</p> <pre><code>static char convertIntToChar(int number) { if (0 &lt;= number &amp;&amp; 10 &gt; number) { return number + '0'; } else if (16 &gt; number) { return number - 10 + 'A'; } else { return '\0'; } } </code></pre> <p>The input for the "number" is always a number to the base 10. I tried it for example with 170 and as result I wanted to have 170 (which is to the base 10) returned as a number to the base 16, which is AA. But what I get as result is �. Could you help me to find the the problem. Besides I use linux. So I use the gcc compiler. Also I am trying to implement Horner's method and I get the same result as above (�) My code for the Horner's method.</p> <pre><code>static char* horner(float number, int base, int precision) { // create a buffer for holding the resulting string. char* resultString = createBuffer(number, base, precision); int numbDiv = 0; int numbTemp = 0; int numbConv = 0; do { numbDiv = number / base; numbTemp = numbDiv * base; numbConv = number - numbTemp; number = numbDiv; *resultString += convertIntToChar(numbConv); } while (number != 0); return resultString; } </code></pre> <p>regards Hagi</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload