今、8桁の2進数を10進数に変換するプログラムをC言語で作っています。
しかし、どうしても、8桁の2進数を10進数で入力した値のx桁を求める関数が作れません
なので、教えてください。お願いします。
作りかけのソースを書き込みます。環境は、WindowsXP,BorlandC++Compiler5.5です。
#include<stdio.h>
#include<math.h>
int bin2dec(int bin)
{
/*8桁の2進数を10進数に変換する関数*/
int i,sum=0;
for(i=0;i<8;i++)
{
if(keta(i)==1) sum+=twotwotime(i);
}
return 0;
}
int twotwotime(int x)
{
/*2のx乗を返す関数*/
return pow(2.0,(double)x);
}
int keta(int x)
{
/*x桁目を返す関数*/
}
int main(void)
{
int bin,dec;
printf("2進数を入力してください。\n");
scanf("%d",&bin);
dec=bin2dec(bin);
printf("10進数に変換すると%dです。\n",dec);
return 0;
}
数値のある桁を調べたいです。
Re:数値のある桁を調べたいです。
あっ、bin2dec関数の最後は、return sum;ですね。(汗
単純ミスをしてしまいました。
まるまる教えるだけじゃなくて、アドバイスでも構いません。
お願いします。
単純ミスをしてしまいました。
まるまる教えるだけじゃなくて、アドバイスでも構いません。
お願いします。
Re:数値のある桁を調べたいです。
xの1の位を返すには 「x%10」ですよね?これは 「(x/1)%10」と同じですね。 xの10の位を返すには 「(x/10)%10」ですよね? xの100の位を返すには 「(x/100)%10」。それなら xのnの位を返すにはどうすればいいですか? そのまま関数にすればいいだけですね。 それから、このプログラムはどこまでご自分で書かれたものでしょうか?
Re:数値のある桁を調べたいです。
管理人さん、アドバイスありがとうございます。
プログラムは、全て自分で書きました。
関数名は、辞書で調べて、考えましたが…
よく分からない部分は、細かく砕いて、プログラミングしてみました。
プログラムは、全て自分で書きました。
関数名は、辞書で調べて、考えましたが…
よく分からない部分は、細かく砕いて、プログラミングしてみました。
Re:数値のある桁を調べたいです。
プログラムが完成しました。 管理人さん、ありがとうございます。 #include<stdio.h> #include<math.h> int bin2dec(int bin) { /*8桁の2進数を10進数に変換する関数*/ int i,sum=0; for(i=0;i<8;i++) { if(keta(bin,i)==1) sum+=_2pow(i); } return sum; } int _2pow(int x) { /*2のx乗を返す関数*/ return pow(2.0,(double)x); } int keta(int x,int n) { /*x桁目を返す関数*/ //0桁目:(x/1)%10 //1桁目:(x/10)%10; //2桁目:(x/100)%10; int k; k=pow(10.0,(double)n); return (x/k)%10; } int main(void) { int bin,dec; printf("2進数を入力してください。\n"); scanf("%d",&bin); dec=bin2dec(bin); printf("10進数に変換すると%dです。\n",dec); return 0; }