今、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;
}
数値のある桁を調べたいです。
-
KEYONN_
Re:数値のある桁を調べたいです。
あっ、bin2dec関数の最後は、return sum;ですね。(汗
単純ミスをしてしまいました。
まるまる教えるだけじゃなくて、アドバイスでも構いません。
お願いします。
単純ミスをしてしまいました。
まるまる教えるだけじゃなくて、アドバイスでも構いません。
お願いします。
-
管理人
Re:数値のある桁を調べたいです。
xの1の位を返すには 「x%10」ですよね?これは 「(x/1)%10」と同じですね。 xの10の位を返すには 「(x/10)%10」ですよね? xの100の位を返すには 「(x/100)%10」。それなら xのnの位を返すにはどうすればいいですか? そのまま関数にすればいいだけですね。 それから、このプログラムはどこまでご自分で書かれたものでしょうか?
-
KEYONN_
Re:数値のある桁を調べたいです。
管理人さん、アドバイスありがとうございます。
プログラムは、全て自分で書きました。
関数名は、辞書で調べて、考えましたが…
よく分からない部分は、細かく砕いて、プログラミングしてみました。
プログラムは、全て自分で書きました。
関数名は、辞書で調べて、考えましたが…
よく分からない部分は、細かく砕いて、プログラミングしてみました。
-
KEYONN_
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;
}