Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Чат
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Алгоритмы
Курсы ККДП
Дистрибутивы
Ссылки

HotLog


 
{ арифметические алгоритмы: моделирование сложения двоичных чисел          }
{ ------------------------------------------------------------------------ }
var sr,sf,ss:string;

function BinAdd(s1,s2:string):string;
var s:string; l,i,d,carry:byte;
begin
    {выравнивание строк по длине}
    if length(s1) > length(s2) then while length(s2) < length(s1) do s2:='0'+s2
                             else while length(s1) < l ength(s2) do s1:='0'+s1;
    l:=length(s1);
    s:=''; carry:=0;
    for i:=l downto 1 do begin
       d := (ord(s1[i])-ord('0')) + (ord(s2[i])-ord('0')) + carry;
       carry := d div 2;
       d:=d mod 2;
       s:=char(d+ord('0')) + s;
    end;
    if carry <> 0 then s:='1'+s;
    BinAdd:=s;
end;

begin
     writeln('введите 1-е двоичное число:');
     readln(sf);
     writeln('введите 2-е двоичное число:');
     readln(ss);
     sr:=BinAdd(sf,ss);
     writeln('результат сложения = ',sr);
end.


Красноярский краевой Дворец пионеров, (c)2006 - 2017, ICQ: 151483