Помощь - Поиск - Пользователи - Календарь
Полная версия: Деление больших чисел
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Nubilius
Есть такая задача: разделить 25-значное число на 3-х значное.
Испорльзую такой алгоритм:
Код

Program Olimp1;

Uses CRT;
var
  Chislo25: String[25];
  Chislo3: String[3];
  S1,S2,S3: String;
  SO1,SO2,SO3,CH3,X1,X2,X3,Z1,Z2,Z3,C1,C2,C3,D1,D2,D3: REAL;
  CODE: INTEGER;
begin
    Chislo3 := '';
    Chislo25 := '';
    S1 := '';
    S2 := '';
    S3 := '';
    CODE :=0;
    C1 :=0;
    C2 :=0;
    C3 :=0;
    CH3 :=0;
    SO1 :=0;
    SO2 :=0;
    SO3 :=0;
    Z1 := 0;
    Z2 := 0;
    Z3 := 0;
    X1 := 0;
    X2 := 0;
    X3 := 0;
    D1 :=0;
    D2 :=0;
    D3 :=0;
    WriteLn('_____________________________________');
    WriteLn('‚ўҐ¤ЁвҐ ¤Ґ«Ё¬®Ґ (25 §­ Є®ў)');
    ReadLn(Chislo25);
    WriteLn('‚ўҐ¤ЁвҐ ¤Ґ«ЁвҐ«м (3 §­ Є )');
    ReadLn(Chislo3);
    S1 := Copy(Chislo25,1,12);
    S2 := Copy(Chislo25,13,12);
    S3 := Copy(Chislo25,24,1);

    Val(S1,X1,Code);
    Val(S2,X2,Code);
    Val(S3,X3,Code);
    Val(Chislo3,CH3,Code);

    Z1 := X1/CH3;
    Z2 := X2/CH3;
    Z3 := X3/CH3;

    C1 := Int(Z1);
    D1 := Frac(Z1);
     C2 := Int(Z2);
     D2 := Frac(Z2);
      C3 := Int(Z3);
      D3 := Frac(Z3);
     SO1 := C1;
     SO2 := D1*1000000*1000000+C2;
     SO3 := D2*10+D3;
     WriteLn('ЋвўҐв:');
     WriteLn(SO1:12:0,SO2:12:0,SO3:12:12);
repeat
 until KeyPressed;
end.


Но точность ответа составляет всего 12-16 знаков :((
Может кто-то знает лучшее решение?
Решение обязательно на Turbo Pascal'е! (Желательно без Assemblera)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.