こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C++で10進数→2進数に

C++で10進数を2進数に変換するプログラムを
順番通りに表示できるようにする
っていうのを配列を使って作るんですが
下はあまり関係ないですが、こんな感じのが参考になるかなと思ったんですが、どうすればいいんですか

#include <iostream>
using namespace std;

int main() {

int i,goukei=0;
int kokugo[5];
float heikin;

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の国語の成績を入力してください\n";
cin >> kokugo[i];
goukei = goukei + kokugo[i];
}

heikin = (float)goukei/5.0;
cout << "平均点は" << heikin << "点です\n";

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の国語の成績は" << kokugo[i];
cout << "点で、平均との差は" << heikin-(float)kokugo[i] << "です\n";
}

return 0;

}

投稿日時 - 2009-11-07 21:47:47

QNo.5429770

すぐに回答ほしいです

質問者が選んだベストアンサー

たしか2進数で表示する方法は無かったと思いますので、計算で出してやる必要があると思います。(もし、あったらごめんなさい)
10進数から2進数に変換する方法は知ってますか?
プログラム的な意味ではなく手で計算するほうです。
※参考URLに10進数→2進数の方法が載っているサイトを紹介しておきます。

intの場合は最初に32個分の配列を確保しておいて(全部0で初期化)
変換したい数を2で割ったあまりを順番に配列に入れていけばいいとおもいます。
 2進数[0] = 10進数%2
 10進数 /= 2
 2進数[1] = 10進数(これはすでに1回2で割られています)%2
 10進数 /= 2
 以下略・・・
変換したい数が1か0になるまで割ったあまりを入れていけば、配列の各要素には0か1が入ることになります。

参考URL:http://www.pursue.ne.jp/jouhousyo/sysad/sysad010.htm

投稿日時 - 2009-11-07 22:03:29

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

これでよいのでは?

#include <iostream>
#include <bitset>
#include <limits>

int main()
{
 unsigned long value;
 std::cin >> value;
 std::bitset<std::numeric_limits<unsigned long>::digits> bs(value);
 std::cout << bs << std::endl;
}

投稿日時 - 2009-11-07 22:17:50

ANo.3

7o8

なんとなく、「私は英語が苦手で日本語しか話せないんです。」を英訳したいんだけど
よくわからないので

「This is a pen.」

を発展させてなんとかできないですか?みたいに感じるのですが如何でしょうか?


例題が宿題であるなら同級生(?)にそもそもCってどー書くの?と教えてもらいましょう。
#あまりにも質問がテキトーで回答しても意味がないような気がしてならないです。


とりあえず、プログラムの流れぐらいは自分で検討しましょう。

投稿日時 - 2009-11-07 22:11:37

ANo.1

示されたルーチンは10進数→2進数とは全く関係ありませんね。
10進数を2進数に変えるルーチンは
当該数が偶数なら0、奇数なら1が最下位の桁で、その数を2で割った商を同じ判定で0か1にするとこれがその上の桁になります。これを商がゼロになるまで繰り返すのです。

投稿日時 - 2009-11-07 21:58:43