ПОМОГИТЕ! СРОЧНО! ОЧЕНЬ ВАЖНО!
Какой алгоритм нужно использовать для программы-калькулятора, призводящей простые арифметические деййствия с числами в системе счисления, отличной от нуля, не прибегая к переводу этих чисел в десятичную систему?
Считать в двоичной системе.
Цитата:
On 2001-12-07 0446, Посторонний wrote
Считать в двоичной системе.
А если нужно считать в той системе, в которой работает калькулятор?
Цитата:
On 2001-12-10 0034, Anonymous wrote
[quote]
On 2001-12-07 0446, Посторонний wrote
Считать в двоичной системе.
А если нужно считать в той системе, в которой работает калькулятор?
[/quote]
Ну...если это КРИТИЧЕСКИ важно, тогда использовать операции работы по модулю. Их придётся или писать самому или искать где-нибудь готовые. Но только надо ли это?
an*p^n+a(n-1)*p^(n-1)+...+a1*p^1+a0*p^0
где p-основание системы исчисления.
пример(для 9-иричной)
m=783=7*9^2+8*9^1+3*9^0
предлагается использовать массив куда по разрядам записывать число. Для верхнего примера
m[0]=3
m[1]=8
m[2]=7
положим, есть другое число в тойже сис. исч.
m1=207 =
m1[0]=7
m1[1]=0
m1[2]=2;
теперь складаваем
m[0]+m1[0]=3+7=10 это больше 9, значит m2[0]=10-9=1 (1 - запоминаем)
m[1]+m1[1]=8+0+1=9 - .... - m2[1]=9-9=0 (1)
m[2]+m1[2]=2+7+1=9 - ..... - m2[3]=0 (1)
m2[3]=1
И получилось m2 = 1001 (двоичное . Ха-ха. Шутка.)
Остальные действия по тому-же принципу.(за исключением всяких сложных операций)
А можно просто - перевести в десятичную, посчитать, и перевести обратно.
Цитата:
On 2001-12-05 2348, Intruder wrote
Какой алгоритм нужно использовать для программы-калькулятора, призводящей простые арифметические деййствия с числами в системе счисления, отличной от нуля, не прибегая к переводу этих чисел в десятичную систему?
char* s="2+2";
...
result=summa(2,2);
...
int summa(int arg1, int arg2) {
struct {
int arg1, arg2, sum;
} s[]= {
...
{2, 2, 4},
};
...
return s.sum;
}
И то в приведённом примере используется преобразование в родную систему (двоичную) процессора. Дб даже так
char* summa(char* arg1, char* arg2);
Неужели нужен ТАКОЙ калькулятор?