2012-04-29 15 views
0

10基数から任意の数の基数に変換しようとしました。私は同じベースを2つの数値を掛けた後、関数は再帰的でなければなりません。再帰関数付き10基数の基数変換器 - C

double convert(int number,int base) 
{ 
    int digit = 1; 
    double sum=0; 
    int i=0; 
    int figure; 
    double end; 
    if(base==10) 
     return number; 

    else 
    { 
     figure = (digit % (digit * 10) - number % digit)/digit; 
     end=pow(base,i); 
     sum+=figure*end; 
     ++i; 
     digit *= 10; 

     convert(figure,base); 

    } 
return sum; 
} 

しかし、私は混乱していますが、動作しません。どうすれば修正できますか?どんなオファーですか? ありがとう。

+1

ちょうど "それは動作しません" 言わないでください。正確な入力、出力、期待される出力を投稿し、これまでに行ったデバッグについて説明します。 –

+0

まず、10個のベースから任意のベースに再帰関数を使って変換しようとします。 – nevra

答えて

3

など。

#include <stdio.h> 

int convert(int number,int base){ 
    if(number == 0 || base==10) 
     return number; 

    return (number % base) + 10*convert(number/base, base); 
} 

int main() { 
    int i; 
    for(i=2;i<=10;++i) 
     printf("%d is %d base(%d)\n", 100, convert(100, i), i); 
    return 0; 
} 
+0

はい、ありがとうございます。私は6ベースから10ベースに変換する必要があります、私はあなたが助けてそれを試してみましょう。 :) – nevra

+0

@physee、処理は似ています。 – BLUEPIXY

0
static string ToBase(int n, int @base) 
    { 
     Func<int, string, string> x = null; 
     return (x = (i, j) => 
     { 
      if (i == 0) 
      { 
       return j; 
      } 
      return x(i/@base, i % @base + j); 
     })(n, string.Empty); 
    } 
+1

プログラミング言語が間違っています。これはC#(またはそれが何であれ)ではなくCです。 – refi64