10進数を2進数に変換するプログラムを作成したのですが、うまく動作しません、どうしても解らないので教えてください。
サンプルコードを元に「define」は5で稼動出来る様にしたいのですが、動作せず困っています。以下の、どの部分を修正すれば変換出来るのでしょうか?
ご教授よろしくお願いいたします。
//10進数文字を数字の2進数で表示
#include "stdafx.h"
#define HEX 5
//「function」:入力文字された文字の処理/////////////////////////////////////
char ToInt( char cInt)
{
int mal=0;
switch (cInt){
case '0':mal=0;break;
case '1':mal=1;break;
case '2':mal=2;break;
case '3':mal=3;break;
case '4':mal=4;break;
case '5':mal=5;break;
case '6':mal=6;break;
case '7':mal=7;break;
case '8':mal=8;break;
case '9':mal=9;break;
}
return (mal);
}
//「function」:入力文字された文字数////////////////////////////////////////////
char HexInt( char eInt)
{
char mul=0;
switch (eInt){
case 0:mul='0';break;
case 1:mul='1';break;
}
return (mul);
}
//「function」:桁数の計算(10×指数を計算)///////////////////////////////////
int HexAcc( int n )
{
int i;
int ans=1;
for( i=0; i<n; i++ ){
ans *= 10;
}
return (ans);
}
int _tmain(int argc, _TCHAR* argv[])
{
int i=0,n=0,j=0,s=0,k=0,m=0,e=0,ans=0, add=0;
char decimal[255], ditto[255],sub[255],temp[255],chg[255],siu[255];
//入力されない場合//
if( 1 > argc ){
}
else{
printf("10進数を入力してください。\n");
return 1;
}
for( k=0; k<255; k++ ){//文字として'0'を代入//
sub[k] = '0';//subに文字として'0'を代入//
temp[k] = '0';//tempに文字として'0'を代入//
chg[k] = '0';//chgに文字として'0'を代入//
siu[k] = '0';//siuに文字として'0'を代入//
}
//入力された文字数を受取る//
for( i=0; argv[1][i] != '\0'; i++ ){
decimal[i] = argv[1][i];
}
decimal[i] = '\0';
//空白文字のチェック//
for( i=0; decimal[i] != '\0'; i++ ){
if( decimal[i] != ' ' ){
ditto[n] = decimal[i];
n++;
}
}
//'\0'を代入(文字列の終端)//
ditto[n]='\0';
//「0」から「9」のループ//
for( n=0; ditto[n] != '\0'; n++ ){
if(( ditto[n] == '0' ) || ( ditto[n] == '1' ) || ( ditto[n] == '2' ) || ( ditto[n] == '3' )
|| ( ditto[n] == '4' ) || ( ditto[n] == '5' ) || ( ditto[n] == '6' )
|| ( ditto[n] == '7' ) || ( ditto[n] == '8' ) || ( ditto[n] == '9' )){
}else{
printf("エラー\n 10進数を入力してください。\n");
return 0;
}
}
//桁数のループ//
for( n=0; ditto[n] != '\0'; n++ ){
m = m + 1 ;
}
//桁数の判断//
if( m <= HEX ){
}else{
printf("エラー\n入力文字数は、%d文字以内にしてください。\n",HEX);
return 0;
}
//subにdittoを代入//
for( n=0; ditto[n] != '\0'; n++){
sub[HEX-m+n] = ditto[n];
}
sub[HEX] = '\0';//'\0'を代入(文字列の終端)//
//sub[0]からsub[9]の計算//
for( n=0; sub[n] != '\0'; n++){
ans = ToInt(sub[n]);
add += ans * HexAcc(HEX-n-1);
}
//2進数の計算・商が0になるまで//
for( n=0; sub[n] != '\0'; n++ ){
temp[n] = add % 2;
add = add / 2;
if( add == 0){
break;
}
}
temp[HEX] = '\0';//'\0'を代入(文字列の終端)//
//桁数のチェック(商・余り)//
for( ; n>=0; n-- ){
e = e++;
}
//temp・値の入替え「tempからchg」//
for( n=0; sub[n] != '\0'; n++ ){
chg[HEX-n-2] = temp[n];
}
chg[HEX]='\0';//'\0'を代入(文字列の終端)//
//2進数に変換//
for( ; n>=0; n-- ){
siu[n] = HexInt(chg[n]);
}
siu[HEX]='\0';//'\0'を代入(文字列の終端)//
printf("\n10進数文字を2進数で変換した値は・・・ %s \n",siu);
}
No.1ベストアンサー
- 回答日時:
十進数を二進数に変換するなら、以下のコードでできます。
#include <stdio.h>
void decToBin(int n)
{
if (n > 1)
decToBin(n / 2);
printf("%d", n % 2);
}
int main(void)
{
int i;
for (i = 0; i <= 100; i++)
decToBin(i), putchar('\n');
return 0;
}
(注)インデントのため、全角空白を使っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
EXCEL/VBA 変数の値をクリップ...
-
processing エラーで、 "cannot...
-
[VBS]変数を定数に変換する方法...
-
整数xxxが大き過ぎますというエ...
-
数値計算??
-
テキストボックスの値を変数に...
-
親ウィンドウの情報をインライ...
-
【VBA】複合代入演算子
-
umu *= 2;てどんな意味があるの...
-
Variant型で宣言してるのにEmpt...
-
jsp~jspにhiddenを使って変数...
-
コマンドプロンプト バッチ|結...
-
C言語 アロー演算子について質...
-
VB2008でデリゲートの代わりに...
-
datagridviewに行...
-
Java認定試験3級の問題です。 ...
-
「%」を使って、偶数か奇数かを...
-
C言語 列挙型(enum型)変数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
C言語 列挙型(enum型)変数について
-
EXCEL/VBA 変数の値をクリップ...
-
整数xxxが大き過ぎますというエ...
-
テキストボックスの値を変数に...
-
[VBS]変数を定数に変換する方法...
-
Variant型で宣言してるのにEmpt...
-
jsp~jspにhiddenを使って変数...
-
processing エラーで、 "cannot...
-
python の 連鎖代入の文法
-
i++と++i ってどう違うのですか?
-
プログラミングで変数と関数の...
-
C言語 アロー演算子について質...
-
「%」を使って、偶数か奇数かを...
-
JavaScriptをURLから直接実行し...
-
VBA 1行で複数の代入を行った...
-
ExcelのVBAでをA列に第0〜19項...
-
無名関数のメリットがよくわか...
-
コマンドプロンプト バッチ|結...
おすすめ情報