コマンドラインに非負整数 n と 正整数 B (2 ≦ B ≦ 64) が与えられたとき、 n、B に続けて n の B 進表現とその桁数 m を1行として書き出すプログラムを作りたいです。
その書き出す形式はつぎのとおりとすること。
数値 n、B は、 必要最小限の桁数で書き出し、その間に @ を書き出す。
その後、前後に空白を置いて = を書き出し、続けて、n の B 進表現を必要最小限の桁数で書き出す。
その後に、n の B 進表現を書き出した桁数 m を角括弧 [ ] で括って必要最小限の桁数で書き出す。
これらの書出しが全て終わったところで改行を書き出す。
プログラムは、つぎの仕様をもつ関数 show を使う形に作ること。
int show(int value, int base);
// 非負整数 value の base進表現を
// 必要最少の桁数で標準出力に書き出す
// 2<=base<=64
// この関数は書き出した桁数を返す
// なお、六十四進までの数値表現に使う数字と
// その表す値の対応はつぎのとおりとする
// 数字 0123456789ABCDEF
// 値 0 10
// 数字 GHIJKLMNOPQRSTUV
// 値 16 20 30
// 数字 WXYZabcdefghijkl
// 値 32 40
// 数字 mnopqrstuvwxyz+/
// 値 48 50 60
■実行例
コマンドライン入力
100 2
標準出力
100@2 = 1100100[7]
コマンドライン入力
65531 8
標準出力
65531@8 = 177773[6]
コマンドライン入力
2146041533 64
標準出力
2146041533@64 = 1/wVwz[6]
c
1#include <stdio.h> 2#include "show.h" 3 4int main(int argc, char *argv[]){ 5 6 ・・・ コマンドラインから与えられる整数値 n, B を使って 7 n の B 進表現を書き出すとともに、それを書き出すのに要した 8 必要最小限の桁数を書き出す。 9 ただし、関数 show を使用 10 11 return 0; 12}
回答2件
あなたの回答
tips
プレビュー