• 締切済み

2進数を10進数にするプログラム作成について

10進数から2進数に変換するプログラムはできたのですが2進数から10進数に変換するプログラムが作れません。。 値を入力してください:1111←と入力(例) 10進数では15です。 もう一度実行しますか?(1…yes/2…no) というプログラムを作ろう思っています。 うまく作れずエラーばかり起きてしまいます。 どうか教えて下さい。お願いします。

みんなの回答

  • precog
  • ベストアンサー率22% (966/4314)
回答No.3

課題の丸投げはダメです。 うまく動かないプログラムでもいいので、途中まで作ったものを掲載してください。

nagahiro8
質問者

補足

すみません;わかりました。できるだけ頑張ってみます。

  • kyo-mogu
  • ベストアンサー率22% (3398/15359)
回答No.2

エラーは除算0エラー? それと使用するプログラムは? まずプログラム作っていると思うけど、入力前に計算していって確認してみた? 最初の0を割る事でエラーがでるなら、その割る項目がゼロかどうかチェックプログラムを入れてください。 デバッグの段階で各項目がどの値を出しているかモニター出来るようにして確認してみてもいいと思いますよ。 短いプログラムだったら公開してもいいかもね。 昔プログラマだったので、分からないときはそうしていましたよ。 ただし、コボルとフォートランと昔のbasicなら分かるけどね。

回答No.1

せめて言語くらいは教えて。。。

nagahiro8
質問者

補足

すみません、言語のことをすっかり忘れていました;; C言語です。 ちなみに、WindowsのVistaでマイクロソフトのVisual C++を使用しています。

関連するQ&A

  • 素数を求めるプログラム

    素数を求める関数の作り方を調べていたら以下のような プログラムを見つけました。 for文の中は奇数で割り切れるかどうかを調べているということで いいのでしょうか??何故j*j<=kとなっているのでしょうか?? 後、最後のreturn YES;はどのような場合実行されるのでしょうか?? #include<stdio.h> #define YES 1 #define NO 0 int sosu(int k){ int j; if(k == 2) return YES; if(k % 2 == 0) return NO; for(j=3;j*j<=k;j+=2){ if(k % j == 0) return NO; } return YES; }

  • 8進数と16進数で表示するプログラム

    int型変数bに10進数として数値を入力し、その値を実行結果のように8進数と16進数で表示するプログラムを作成しなさい という問題にとりかかっているのですが、いまいち理解できません scanfで値を入力させる項目は必要とわかるのですが、その他がどうしてもわかりません、ご教授して頂ければ幸いです

  • 10進数を2進数に変換するプログラムについて

    キーボードから入力された10進数を2進数に変換するプログラムで入力される数は1~1000の値までが入力できる数です。 配列を使うらしいのですがどのようにアルゴリズムをどのように表したらいいのかわかりません! import java.io.*; class Question7_3{ public static void main(String[] args){ BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); try{ System.out.print("数字を入力してください:"); } System.out.print("入力されたデータを2進数に変換すると:"); }catch(NumberFormatException e){ System.out.println("整数以外が入力されました。"); }catch(IOException e){ System.out.println("例外発生:" + e); } } }

  • プログラムの作成

    講義で与えられたテキストを見ながら作ろうとしたのですが実行できません。お願いします。 プログラムはCで作成すること。 与えられた実数a,bに対し、次の定積分 S=∫xのa乗(1-x)のb乗dx (積分範囲は0~1) の値を台形法により近似的に求めるプログラムを作成してください。 ただし、実数a,b、区間の分割数は実行時にキーボードから入力できるように

  • 8桁の2進数を10進数に変換する方法を教えてください。

    キーボードから2進数を入力した値を10進数に変換し、変換結果を出力する方法が解りません。作成するにあたり仕様があり、私一人では解決できないので相談させていただきました。 <仕様は以下の通りです> (1)このプログラム(8桁の2進数を10進数に変換)をする際は、最後に出力する時(printf)以外は関数を使ってはいけません。 (2)キーボードから2進数を入力させる。 (3)空白(ブランク)が入力されても変換可能にする。 (4)入力された2進数は8桁にし、8桁以上の場合はエラーを出す。 (5)2進数の「0」と「1」以外の文字が入力された場合はエラーを出す。 (6)バイナリ変換をし、変換結果を出力する。 以上になります。 まだ、C言語を勉強を習い始めの初心者です。どうか、ご回答のほど宜しくお願いします。

  • 3つほどプログラムをおしえてください。

    (1)100までの整数をいくつか入力し、10刻みでの個数を表示し、負の数が入力されると整数の入力を終わるプログラムです。各範囲の個数は配列に格納する。 実行結果 65 30 21 95 5 -1 0--- 9 : 1 10--- 19 : 0 20--- 29 : 1 30--- 39 : 1 40--- 49 : 0 50--- 59 : 0 60--- 69 : 1 70--- 79 : 0 80--- 89 : 0 90---100 : 1 (2)数字の文字列を入力し、その文字列に含まれる各数字(文字)'0','1',~'9'の個数を表示するプログラムの作成。 実行結果 1231234567 0: 0 1: 2 2: 2 3: 2 4: 1 5: 1 6: 1 7: 1 8: 0 9: 0 (3) 変数xは、0~1までの0.01刻みの値(101個)を取るとする。このとき、2次関数 f(x)=3x^2+2x+1の値が2.0<f(x)<3.0となるxの値をの個数を求めるプログラムの作成。ただし、xを引数としf(x)の値を返す関数を作成して、それを使用する。 実行結果 number=21 やってるうちにわけがわからなくなってしまいます。どなたかよろしくおねがいします。

  • 10進数→2進数の出力について

    コマンドライン引数から10進数の値を入力して 2進数に変換して出力しようとしています。 ※入力される10進数の値はかなり大きなものを想定しています。 現在は下記のようなコードで変換しようとしていますが失敗しています。 動作環境は『WindowsXP、Activeperl-5.12.4.1205』です。 拙い説明ですが、よろしくお願いいたします。 # コマンドライン引数は「9223372036854775808」 $n = unpack("B8", pack("C", $ARGV[0])); print n; # 実行結果は「11111111」 # 期待している出力結果は「1000・・・000」(←0が64個) 9223372036854775808

    • ベストアンサー
    • Perl
  • 2進数を10進数にしたいです。

    大学の課題で 「キーボードに入力されたに2進数を10進数に直すプログラムを作成せよ」 という課題が出ました。 自分はC言語を始めてまだ1カ月ですが、自分なりに作成してみました。 どこがおかしいか指摘お願いします。 ちなみに大学の授業ではfor文までやりました。 #include <stdio.h> int main(void) { int num,no1,no2,no3,no4,no5,no6,no7,num2=0; do { puts("2進数を入力してください."); scanf("%d", &num); no1=num%10 no2=((num/10)%10)*2 no3=((num/100)%10)*4 no4=((num/1000)%10)*8 no5=((num/10000)%10)*16 no6=((num/100000)%10)*32 no7=((num/1000000)%10)*64 num2=no1+no2+no3+no4+no5+no6+no7 }while(num==0); puts("10進数に変換すると%dです。",num2); return (0); }

  • 10進数を2進数に変換するプログラム

    このアセンブラのプログラムはIN命令によって3桁のレコードに入力された10進数の値を2進数に変換するプログラムです。 INPUT START                      (1) RPUSH                      (2) IN IBUF,ILEN ;レコードを入力       (3)     LD GR0,ILEN                (4) JMI FIN2 ;ファイルの終わり      (5) LD GR1,=0   ;けた数のカウンタ      (6) LD GR4,=0   ;数値の初期化        (7) LOOP2 LD GR3,IBUF,GR1               (8) AND GR3,=#000F ;数字を数値に変換      (9) LD GR5,GR4;ここから↓4つの命令はGR4を10倍する (10) SLL GR5,3;                   (11) SLL GR4,1;                   (12) ADDA GR4,GR5;                  (13) ADDA GR4,GR3                   (14) ADDA GR1,=1                   (15) CPA GR1,GR0                   (16) JMI LOOP2                    (17) LD GR0,GR4                   (18) FIN2 RPOP                         (19) RET ILEN DS 1 IBUF DS 256 END (8)のLOOP2 LD GR3,IBUF,GR1の命令なのですが、「これはIBUFとGR1のアドレスをたしてGR3にその内容を格納する。」という意味であり、その後(14)で10倍されたGR4にたしています。 質問としては、この2進数に変換するプログラムでGR3とGR4の役割を教えていただきたいです。 GR1はレコードの桁数に使われている領域だとわかります。 個人的な解釈としては、GR4はレコードに入力する10進数の数値なのですが、GR4をなぜ10倍すると2進数に変換されるのかなどやGR3の意味がわからないために全く理解できません。 よろしくお願いします。

  • 2進数の1の数を数える問題

     次の問題に対して、以下のソースを考案し、実行したところ、以下のようになりました。 【問】 ◆◆◆◆◆  与えられた10進数の整数Nを2進数に変換したときの1の個数を答えよ。  整数の10進数を2進数に変換するには、変換したい10進数を商が0になるまで2で割り続け、求めた余りの部分を逆順に並べる。 例) 13が入力として与えられた場合、以下のように2で割り続け2進数を求める。 13 / 2 = 6 ・・・余り 1 6 / 2 = 3 ・・・余り 0 3 / 2 = 1 ・・・余り 1 1 / 2 = 0 ・・・余り 1  求められたそれぞれの余りを逆順に並べたものが2進数への変換結果となる。  よって入力が13ならば2進数への変換結果は 1101 になり、1は3個あるので出力は3になる。 [入力例1] 13 [出力例1] 3 [入力例2] 45 [出力例2] 4 ◆◆◆◆◆ (自分の解答、□はタブ) ◆◆◆◆◆ #include <stdio.h> #include <stdlib.h> /* EXIT_SUCCESS */ int main(void) { □int n, bit, s; □scanf("%d", &n); □ □bit = n % 2; □n /= 2; □s = 0; □while(n) { □□if (bit) □□□s++; □bit = n % 2; □n /= 2; □} □printf("%d", s); □return EXIT_SUCCESS; } ◆◆◆◆◆ (実行結果1) ◆◆◆◆◆ [入力] 13 [出力] 2 ◆◆◆◆◆ (実行結果2) ◆◆◆◆◆ [入力] 45 [出力] 3 ◆◆◆◆◆ となり、正解となりません。  自分の考えとしては、入力された数値を変数nに収め、これをどんどん2で割っていき、そのときの余り(0か1)を変数bitに収めていき、nが0になるまで処理を繰り返し、bitが0でないとき、変数s(初期値0)に1ずつ加算していき、最後にsを出力する、という方針です。  初期値の設定辺りが間違っているのだと思いますが、これ以上いくら考えても正解が得られません。どこがどう間違っているのでしょうか。どなたかご教授頂きたく、お願い致します。