基数変換のプログラムを作ってるんですが、ある程度は出来たんですが、わからないとこがあり
ます。教えてください。作ろうとしている内容は、10進数を入力して、
それを2,8,16進数に変換します。ただし、¥xなど一発で変換できる命令は使用しては行
けない。というものなんですが、いちおう下の部分までは出来たんですが、どうもうまく行きま
せん。よろしければご指導願います。
#include<stdio.h>
void main(void)
{
int in;
int syo;
int ama[8];
int noko[8];
int noku[8];
int i=0;
printf(10進数を入力=);
scanf(%d,&in);
syo=in;
for(i=0;i<8;i++)
{
ama[i]=syo%16;
syo=syo/16;
}
i=7;
for(i;i>=0;i--)
{
if(ama[i]>=10)
{
ama[i]=ama[i]+55;
printf(%c,ama[i]);
}
else
{
printf(%d,ama[i]);
}
}
printf(\n);
for(i=0;i<8;i++)
{
noko[i]=syo%8;
syo=syo/8;
}
i=7;
for(i;i>=0;i--)
{
printf(%d,noko[i]);
}
printf(\n);
for(i=0;i<8;i++)
{
noku[i]=syo%2;
syo=syo/2;
}
i=7;
for(i;i>=0;i--)
{
printf(%d,noku[i]);
}
printf(\n);
}
モロ学校の課題のようだね。
>どうもうまく行きません。よろしければご指導願います。
どこがどううまく動かないのか説明しないと、まともなレスは受けられないよ。
今日の宿題ですな・・・
時間的に手遅れかも・・
学校の課題らしきものに 至急!!! とかつけられる神経がすごいよね。
#include <iostream>
#include <bitset>
using namespace std;
void main()
{
int i = 0;
cout << 10進数を入力=;
cin >> i;
if( i == 0 ) return;
bitset<8> b( i );
cout << 16進数 = << hex << i << endl;
cout << 8進数 = << oct << i << endl;
cout << 2進数 = << b << endl;
}
>ただし、¥xなど一発で変換できる命令は使用しては行けない。
というルールらしいので、hexとかoctとかはこの場合は禁じ手ではないでしょうか。
これ!プログラミングと言うより、さんすうの問題でしょ
さんすう(中学生くらいかな、へたすりゃ小学生)で
どう解釈すればよいか自分で考えれば、アルゴリズム簡単に組めるのでは?
CRTの_itoaのソースがVC++にゃついているから,それをコピーしてしまえば?
たぶん,ちょっと突っ込まれたら終わりでしょうけど。
8進と2進の変換の前に
syo = in;
で、変換する前の値を入れなきゃ。