17 дек. 2012 г.

Delphi Функция суммирования двух ОДЦ через строки

  { Функция суммирования двух ОДЦ через строки }
  function Tform1.ODC(s1: string; s2: string): string;
var
  perenos: integer; //переменная содержащая цифру, переносимую в след. разряд
  temp: integer; //переменная под вычисления
  res: string; // Результат
begin
  perenos:=0;
  temp:=0;
    //для начала проверим одинаковой ли длинны строки,  
  if length(s1)<>length(s2) then  
//если нет - добьём нулями слева меньшую строку 
begin  {http://rucode.blogspot.ru/}
   if length(s2)>length(s1) then
     while length(s2)<>length(s1) do
       s1:='0'+s1
   else
     while length(s2)<>length(s1) do
       s2:='0'+s2;
 end;
    //мы будем работать только с последними цифрами числа
  while (Length(s1)>0) and (Length(s2)>0) do
 begin
   //суммируем 2 числа и добавляем число, которое перенесли из предыдущей суммы
   temp:=StrToInt(s1[length(s1)])+StrToInt(s2[length(s2)])+perenos;
   //записываем цифру которую будем переносить в след разряд
   perenos:=temp div 10;
   //берем остаток от деления на 10 получаем цифру,
   //которая останется в текущем разряде
   temp:=temp mod 10;
   //добавляем сумму в конец результата
   res:=IntToStr(temp)+res;
   //удаляем последние цифры в строках
   delete(s1,length(s1),1);
   delete(s2,length(s2),1);
 end;
  //допишем перенос
  if perenos<>0 then
 res:=IntToStr(perenos)+res;
  result:=res;
end; {http://rucode.blogspot.ru/}

Комментариев нет:

Отправить комментарий