Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2011, 19:31   #1
Dima_Dima
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 33
Восклицание Длинная арифметика : деление (числа в string'е на число 256)

есть число в string
нада найти целую часть и остаток при делении на 256

в принципе знаю алгоритм (в столбик)
но у меня проблема с нулями (где добавлять где нет)
((
Dima_Dima вне форума Ответить с цитированием
Старый 06.02.2011, 19:41   #2
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

напиши как знаеш выложи, а там разберемся
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 06.02.2011, 19:54   #3
Dima_Dima
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 33
По умолчанию

там пременная ss -мой тип данных она потом преобразуется в ss


Код:
procedure delenie(s: string; a: longint; var smod, sdiv: string);
var i, j, k, nol, t, posit, flag, jjj: longint;

  smod1, ss, nn, ost, ppc: string;
  ff: boolean;
  chislo: int64;
begin
  ppc := perehod(a);
  if menshe(s, ppc, nol) = 1 then
  begin
    sdiv := '0';
    ff := false;
    i := 0;
    while ff = false do
    begin
      inc(i);
      if s[i] <> '0' then ff := true;
      smod := copy(s, i, 127 - i);
    end;
  end
  else
  begin


    posit := 0;

    while s[posit] = '0' do
      inc(posit);

    ss := (copy(s, posit, 127 - posit - 1));



    j := 0;
    posit := 1;
    ost := '';
    jjj := 0;
    flag := 0;
    while posit <= length(ss) do
    begin
      inc(j);

      if (strtoint(ost + copy(ss, posit, j)) div a = 0) and (posit + j = length(ss) + 1) then
      begin

        smod := ost + copy(ss, posit, j);

        for i := 1 to length(copy(ss, posit, j)) do
          sdiv := sdiv + '0';
        posit := 1005000;
        jjj := 1;


      end else begin




        if strtoint(ost + copy(ss, posit, j)) div a <> 0 then
        begin
          if flag = 1 then
          begin
            flag := 0;

            form1.Memo1.lines.add('lala ' + ost + copy(ss, posit, j));
            for i := 1 to length(ost + copy(ss, posit, j)) - 2 do
              sdiv := sdiv + '0';
          end;


          sdiv := sdiv + inttostr(strtoint(ost + copy(ss, posit, j)) div a);
          if strtoint(ost + copy(ss, posit, j)) mod a = 0 then

            flag := 1;


          ost := inttostr(strtoint(ost + copy(ss, posit, j)) mod a);

          posit := posit + j;
          j := 0;
        end;
      end;
      if jjj <> 1 then smod := ost;
    end;
  end;

end;



function crypt(m: massiv): int64;
begin
  crypt := int64(m);
end;

function f(s: string): string;
var position: integer;
begin

  position := pos('.', s);

  if (length(s) - position) > 4 then
    delete(s, position + 4, length(S) - position - 4);

  if position > 6 then
    delete(s, 1, position - 6);
  f := s;

end;

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 06.02.2011 в 21:54.
Dima_Dima вне форума Ответить с цитированием
Старый 06.02.2011, 19:58   #4
Dima_Dima
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 33
По умолчанию

извините, что код напиан в стиле "насрал на монитор"=)
Dima_Dima вне форума Ответить с цитированием
Старый 06.02.2011, 19:59   #5
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

может оформиш код по человечески?
и не надо по 100 пустых строк оставлять
VirusN13

Последний раз редактировалось ArtGrek; 07.02.2011 в 00:14.
ArtGrek вне форума Ответить с цитированием
Старый 06.02.2011, 20:04   #6
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

a: real;
a := StrToFloat(String)

Round(12.75) = 13
Trunc(12.75) = 12
Int(12.75) = 12
Frac(12.75) = 0.75

19 mod 4 = 3

тут вроди все что б реализовать то что тебе надо
тепер думаи
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 06.02.2011, 20:39   #7
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

> извините, что код напиан в стиле "насрал на монитор"

Равносильно "извините, я насрал на вас всех"
mss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
длинная арифметика: деление Dеlphi Общие вопросы C/C++ 0 19.01.2011 13:19
Длинная арифметика на C#(деление) Mr_Dark Общие вопросы .NET 1 21.06.2009 21:57
Длинная арифметика: деление Vadik(R) Помощь студентам 1 27.03.2009 12:08
Длинная арифметика DmT Помощь студентам 2 06.10.2007 22:43