A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんな感じでしょうか?
#include <stdio.h>
#include <limits.h>
int table[][SCHAR_MAX+1] =
{
['0'] =
{
['0'] = 0,
['1'] = 1,
['2'] = 2,
['3'] = 3,
['4'] = 4,
['5'] = 5,
['6'] = 6,
['7'] = 7,
['8'] = 8,
['9'] = 9,
['a'] = 10,
['b'] = 11,
['c'] = 12,
['d'] = 13,
['e'] = 14,
['f'] = 15,
},
['1'] =
{
['0'] = 1,
['1'] = 2,
['2'] = 3,
['3'] = 4,
['4'] = 5,
['5'] = 6,
['6'] = 7,
['7'] = 8,
['8'] = 9,
['9'] = 10,
['a'] = 11,
['b'] = 12,
['c'] = 13,
['d'] = 14,
['e'] = 15,
['f'] = 16,
},
['2'] =
{
['0'] = 2,
['1'] = 3,
['2'] = 4,
['3'] = 5,
['4'] = 6,
['5'] = 7,
['6'] = 8,
['7'] = 9,
['8'] = 10,
['9'] = 11,
['a'] = 12,
['b'] = 13,
['c'] = 14,
['d'] = 15,
['e'] = 16,
['f'] = 17,
},
['3'] =
{
['0'] = 3,
['1'] = 4,
['2'] = 5,
['3'] = 6,
['4'] = 7,
['5'] = 8,
['6'] = 9,
['7'] = 10,
['8'] = 11,
['9'] = 12,
['a'] = 13,
['b'] = 14,
['c'] = 15,
['d'] = 16,
['e'] = 17,
['f'] = 18,
},
['4'] =
{
['0'] = 4,
['1'] = 5,
['2'] = 6,
['3'] = 7,
['4'] = 8,
['5'] = 9,
['6'] = 10,
['7'] = 11,
['8'] = 12,
['9'] = 13,
['a'] = 14,
['b'] = 15,
['c'] = 16,
['d'] = 17,
['e'] = 18,
['f'] = 19,
},
['5'] =
{
['0'] = 5,
['1'] = 6,
['2'] = 7,
['3'] = 8,
['4'] = 9,
['5'] = 10,
['6'] = 11,
['7'] = 12,
['8'] = 13,
['9'] = 14,
['a'] = 15,
['b'] = 16,
['c'] = 17,
['d'] = 18,
['e'] = 19,
['f'] = 20,
},
['6'] =
{
['0'] = 6,
['1'] = 7,
['2'] = 8,
['3'] = 9,
['4'] = 10,
['5'] = 11,
['6'] = 12,
['7'] = 13,
['8'] = 14,
['9'] = 15,
['a'] = 16,
['b'] = 17,
['c'] = 18,
['d'] = 19,
['e'] = 20,
['f'] = 21,
},
['7'] =
{
['0'] = 7,
['1'] = 8,
['2'] = 9,
['3'] = 10,
['4'] = 11,
['5'] = 12,
['6'] = 13,
['7'] = 14,
['8'] = 15,
['9'] = 16,
['a'] = 17,
['b'] = 18,
['c'] = 19,
['d'] = 20,
['e'] = 21,
['f'] = 22,
},
['8'] =
{
['0'] = 8,
['1'] = 9,
['2'] = 10,
['3'] = 11,
['4'] = 12,
['5'] = 13,
['6'] = 14,
['7'] = 15,
['8'] = 16,
['9'] = 17,
['a'] = 18,
['b'] = 19,
['c'] = 20,
['d'] = 21,
['e'] = 22,
['f'] = 23,
},
['9'] =
{
['0'] = 9,
['1'] = 10,
['2'] = 11,
['3'] = 12,
['4'] = 13,
['5'] = 14,
['6'] = 15,
['7'] = 16,
['8'] = 17,
['9'] = 18,
['a'] = 19,
['b'] = 20,
['c'] = 21,
['d'] = 22,
['e'] = 23,
['f'] = 24,
},
['a'] =
{
['0'] = 10,
['1'] = 11,
['2'] = 12,
['3'] = 13,
['4'] = 14,
['5'] = 15,
['6'] = 16,
['7'] = 17,
['8'] = 18,
['9'] = 19,
['a'] = 20,
['b'] = 21,
['c'] = 22,
['d'] = 23,
['e'] = 24,
['f'] = 25,
},
['b'] =
{
['0'] = 11,
['1'] = 12,
['2'] = 13,
['3'] = 14,
['4'] = 15,
['5'] = 16,
['6'] = 17,
['7'] = 18,
['8'] = 19,
['9'] = 20,
['a'] = 21,
['b'] = 22,
['c'] = 23,
['d'] = 24,
['e'] = 25,
['f'] = 26,
},
['c'] =
{
['0'] = 12,
['1'] = 13,
['2'] = 14,
['3'] = 15,
['4'] = 16,
['5'] = 17,
['6'] = 18,
['7'] = 19,
['8'] = 20,
['9'] = 21,
['a'] = 22,
['b'] = 23,
['c'] = 24,
['d'] = 25,
['e'] = 26,
['f'] = 27,
},
['d'] =
{
['0'] = 13,
['1'] = 14,
['2'] = 15,
['3'] = 16,
['4'] = 17,
['5'] = 18,
['6'] = 19,
['7'] = 20,
['8'] = 21,
['9'] = 22,
['a'] = 23,
['b'] = 24,
['c'] = 25,
['d'] = 26,
['e'] = 27,
['f'] = 28,
},
['e'] =
{
['0'] = 14,
['1'] = 15,
['2'] = 16,
['3'] = 17,
['4'] = 18,
['5'] = 19,
['6'] = 20,
['7'] = 21,
['8'] = 22,
['9'] = 23,
['a'] = 24,
['b'] = 25,
['c'] = 26,
['d'] = 27,
['e'] = 28,
['f'] = 29,
},
['f'] =
{
['0'] = 15,
['1'] = 16,
['2'] = 17,
['3'] = 18,
['4'] = 19,
['5'] = 20,
['6'] = 21,
['7'] = 22,
['8'] = 23,
['9'] = 24,
['a'] = 25,
['b'] = 26,
['c'] = 27,
['d'] = 28,
['e'] = 29,
['f'] = 30,
},
};
int main()
{
unsigned int a, b;
scanf("%d%d", &a, &b);
int n = sizeof(unsigned int)*2;
char lhs[n+1], rhs[n+1];
sprintf(lhs, "%.*x", n, a);
sprintf(rhs, "%.*x", n, b);
printf(" %s\n"
"+) %s\n"
"-----------\n",
lhs, rhs);
char result[1+n+1];
int carry = 0;
for (int i = n-1; i >= 0; i--)
{
int t = table[lhs[i]][rhs[i]] + carry; // 16進数のまま計算
if (t < 16)
{
carry = 0;
}
else
{
t -= 16;
carry = 1;
}
result[i] = "0123456789abcdef"[t];
}
result[1+n] = '\0';
printf(" %s\n", result);
}
エラーチェックは手抜きです。
この回答への補足
足し算の方法ですね、大変参考になりました。引き算、掛け算はこのプログラムを参考にして何とかなりそうです。しかし、割り算の方法がすっかりお手上げです。ご面倒ですが、割り算の方法をご教授いただけましたら幸いです。
補足日時:2009/01/15 08:20No.2
- 回答日時:
どこがわからないのか, 書いてもらえませんか?
「筆算ができない」というときと, 「筆算はできるけど表示ができない」というときでは全くアドバイスが変わってきます.
前者であれば #1 と同じ, 後者なら「どこまでできているのかわからんのでプログラムを見せてくれ」ってことになります.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- 薄毛・抜け毛 つむじハゲ、中学2年です。 つむじ部分が薄いように感じます。写真で撮っても光加減や分け目の具合でつむ 2 2022/05/18 00:57
- 電車・路線・地下鉄 JR西日本のダイヤ改正で今後行われそうなことは何ですか? 1 2022/07/24 12:30
- 電車・路線・地下鉄 JR東武直通の将来は? 1 2023/03/20 19:13
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- 化学 温度変化に伴う圧力と体積の変化について 2 2022/07/25 17:21
- 大学・短大 連立は方程式の文章問題です。 ペン7本とノート5冊の値段は合わせて930円である。 また、ペン2本の 5 2023/04/22 20:10
- 数学 虚数単位:i、この4乗根を求める解答したものの疑問です。 1 2022/10/25 00:43
- 化学 NaCl結晶の問題です! 答えは4番ですが 計算が難しくて 4(個) x 58 (NaCl 質量) 1 2023/05/16 11:54
- 数学 数学 数と式 5 2023/04/08 15:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数桁10進数の*桁目だけを抽出...
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
(int *)の意味
-
数字列を3桁ごとにカンマで区切...
-
比較回数と交換回数表示について
-
if と配列の組み合わせ
-
C言語で三目並べをするプログラ...
-
実数の整数部,小数部の取得
-
卒業研究でよく分からないとこ...
-
C言語で分からないところがあり...
-
C言語での奇数の和
-
アスタリスクで正方形
-
警告 W8065について。
-
入力された2つの整数の差を絶対...
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
C言語
-
C言語初心者です、、、お助けく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
実数の整数部,小数部の取得
-
std::set<int> で、ある値が何...
-
C言語 エラーの原因がわからな...
-
c言語
-
system関数がうまくいかない
-
C++でvectorにテキストファイル...
-
acceptをalarmでタイムアウトさ...
-
if と配列の組み合わせ
-
return 1L
-
「{ } で囲むだけ」は正しい?
-
(マルチスレッド)_beginthrea...
-
PowerShellがうまくいかない
-
このプログラミング誰か教えて...
おすすめ情報