IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Деление больших чисел, Деление 25-значного числа на 3х значное
Nubilius
сообщение 12.11.2005 0:16
Сообщение #1


Гость






Есть такая задача: разделить 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)
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 1)
volvo
сообщение 12.11.2005 0:34
Сообщение #2


Гость






FAQ: Длинная арифметика
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 27.07.2025 21:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"