/*****************************************************************************/ /* */ /* ジョブ名称 : n進計算機(オリジナルプログラム) */ /* */ /* 機能概要 : n進数の四則計算をする(モジュール分割) */ /* */ /* : */ /* */ /* 作成者 : 恒川 昭一(カーネルキャリアスクール) */ /* */ /* バージョン番号 01.20 日付 2005/06 備考 コメント削除版 */ /* */ /*****************************************************************************/ #include void main() { int ch; int ntype = 0; int num1 = 0; int op; int num2 = 0; int ans; printf("\nInput n(numeral type 2-16)\n"); while ((ch = getchar()) != '\n') { if (ch >= '0' && ch <= '9') { ntype = ntype * 10 + ch - '0'; } else { printf("Numeral type incorrect!\n"); return; } } if (ntype < 2 || ntype > 16) { printf("Numeral type incorrect!\n"); return; } printf("\nInput numeral1\n"); if ((ch = getchar()) == '\n') { printf("Numeral1 incorrect!\n"); return; } while (ch != '\n') { if (ntype <= 10) { if (ch >= '0' && ch <= '9' - (10 - ntype)) { num1 = num1 * ntype + ch - '0'; } else { printf("Numeral1 incorrect!\n"); return; } } else { if (ch >= '0' && ch <= '9') { num1 = num1 * ntype + ch - '0'; } else { if (ch >= 'a' && ch <= 'f' - (16 - ntype)) { num1 = num1 * ntype + ch - 'a' + 10; } else { printf("Numeral1 incorrect!\n"); return; } } } ch = getchar(); } printf("\nInput operator\n"); op = getchar(); if (op != '+' && op != '-' && op != '*' && op !='/') { printf("Operator incorrect!\n"); return; } if (getchar() != '\n') { printf("Operator incorrect!\n"); return; } printf("\nInput numeral2\n"); if ((ch = getchar()) == '\n') { printf("Numeral2 incorrect!\n"); return; } while (ch != '\n') { if (ntype <= 10) { if (ch >= '0' && ch <= '9' - (10 - ntype)) { num2 = num2 * ntype + ch - '0'; } else { printf("Numeral2 incorrect!\n"); return; } } else { if (ch >= '0' && ch <= '9') { num2 = num2 * ntype + ch - '0'; } else { if (ch >= 'a' && ch <= 'f' - (16 - ntype)) { num2 = num2 * ntype + ch - 'a' + 10; } else { printf("Numeral2 incorrect!\n"); return; } } } ch = getchar(); } switch (op) { case '+': ans = num1 + num2; break; case '-': ans = num1 - num2; break; case '*': ans = num1 * num2; break; case '/': if (num2 == 0) { printf("\nCan't divide by 0\n"); return; } ans = num1 / num2; } printf("\nThe answer is %d\n", ans); }