数値のある桁を調べたいです。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
KEYONN_

数値のある桁を調べたいです。

#1

投稿記事 by KEYONN_ » 17年前

今、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:数値のある桁を調べたいです。

#2

投稿記事 by KEYONN_ » 17年前

あっ、bin2dec関数の最後は、return sum;ですね。(汗
単純ミスをしてしまいました。
まるまる教えるだけじゃなくて、アドバイスでも構いません。
お願いします。

管理人

Re:数値のある桁を調べたいです。

#3

投稿記事 by 管理人 » 17年前

xの1の位を返すには
「x%10」ですよね?これは
「(x/1)%10」と同じですね。
xの10の位を返すには
「(x/10)%10」ですよね?
xの100の位を返すには
「(x/100)%10」。それなら
xのnの位を返すにはどうすればいいですか?
そのまま関数にすればいいだけですね。

それから、このプログラムはどこまでご自分で書かれたものでしょうか?

KEYONN_

Re:数値のある桁を調べたいです。

#4

投稿記事 by KEYONN_ » 17年前

管理人さん、アドバイスありがとうございます。
プログラムは、全て自分で書きました。
関数名は、辞書で調べて、考えましたが…
よく分からない部分は、細かく砕いて、プログラミングしてみました。

KEYONN_

Re:数値のある桁を調べたいです。

#5

投稿記事 by KEYONN_ » 17年前

プログラムが完成しました。
管理人さん、ありがとうございます。

#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;
}

閉鎖

“C言語何でも質問掲示板” へ戻る