Показать сообщение отдельно
Старый 10.06.2013, 08:51   #3 (permalink)
Diana95
Новичок
 
Регистрация: 06.06.2013
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а если быть точнее то надо переделать только вот эту подпрограмму:
procedure zamena(var st, st1: string);//Процедура перевода в дополнительный код
var
i: integer;
p: integer;

begin
p := 0;
zam := '';

if (st[2] = '.') and (st[1] = '1') then // определяем отрицательное ли число или нет
begin
writeln('Число ', st, ' отрицательное');
write('Переводим в обратный код и получаем результат:');
writeln;
// заменяем 1 на 0, 0 на 1
for i := 3 to length(st) do
if st[i] = '1' then zam := zam + '0' else zam := zam + '1';
// прибавляем к обратному коду знак
st := st[1] + st[2] + zam;
writeln(st);
writeln('Получим дополнительный код:');
// выполняем действия до точки
for i := length(st) downto 3 do
begin
if ((StrToInt(st[i]) + 1 + p) mod 2 ) = 0 then // если число кратное двум
begin
ot := '0' + ot; // записываем 0
if st[i] <> '0' then p := 1 else break; // если равно нулю, значит разряд заполнен, прерываем цикл
end else // иначе
begin
ot := '1' + ot; // записываем 1
if st[i] <> '0' then p := 1 else break; // если равно нулю, значит разряд заполнен, прерываем цикл
end;
end;

Delete(st, (length(st) + 1) - length(ot), length(ot));
st := st + ot;
writeln(st);

end else writeln('Число ', st, ' положительное');

zam := '';
p := 0;
ot := '';
writeln;

if (st1[2] = '.') and (st1[1] = '1') then // определяем отрицательное ли число или нет
begin
writeln('Число ', st1, ' отрицательное');
write('Переводим в обратный код и получаем результат:');
writeln;
// заменяем 1 на 0, 0 на 1
for i := 3 to length(st1) do
if st1[i] = '1' then zam := zam + '0' else zam := zam + '1';
// прибавляем к обратному коду знак
st1 := st1[1] + st1[2] + zam;
writeln(st1);
writeln('Получим дополнительный код:');
// выполняем действия до точки
for i := length(st1) downto 3 do
begin
if ((StrToInt(st1[i]) + 1 + p) mod 2 ) = 0 then // если число кратное двум
begin
ot := '0' + ot; // записываем 0
p := 1; // в остаток 1
end else // иначе
begin
ot := '1' + ot; // записываем 1
if st1[i] <> '0' then p := 1 else break; // если равно нулю, значит разряд заполнен, прерываем цикл
end;
end;

Delete(st1, (length(st1) + 1) - length(ot), length(ot));
st1 := st1 + ot;
writeln(st1);

end else writeln('Число ', st1, ' положительное');

writeln;
writeln;

end;
Diana95 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070