Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 18.01.2015, 21:32   #21 (permalink)
Asya_inter
Member
 
Аватар для Asya_inter
 
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Vladimir_S, простите, что столько много вопросов задаю, но вы могли бы пожалуйста вот эти строчки немного растолковать, а то я вроде со всем разобралась, а в конце немного запуталась.
if d=1 then D3a:=D3a+'1';
D3:='';
for i:=1 to Length(D3a) do
D3:=D3+D3a[Length(D3a)-i+1];
Sum:=D3;
end;
Asya_inter вне форума   Ответить с цитированием
Старый 18.01.2015, 21:49   #22 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Пожалуйста.
Цитата:
Сообщение от Asya_inter Посмотреть сообщение
if d=1 then D3a:=D3a+'1';
d - это переносимая единица следующего разряда. Как Вы, надеюсь, поняли, в начале функции сложения оба числа выравниваются по длине, равной длине бОльшего числа, путём добавления к меньшему спереди нулей. Так вот, если после сложения всех разрядов остается еще единица, то она и приписывается спереди. Пример: 6+7=13. В двоичной это так:
Код:
 110
 111
----
1101 
Но на самом деле в D3a формируется не "1101", а "1011", что и исправляется далее:
Цитата:
Сообщение от Asya_inter Посмотреть сообщение
D3:='';
for i:=1 to Length(D3a) do D3:=D3+D3a[Length(D3a)-i+1];
Sum:=D3; end;
Дело в том, что строка числа-суммы (D3a) оказывается "перевернутой" по направлению, т.е. младшие разряды - слева, а не справа. Вот переход от D3a к D3 и есть переписывание строки от конца к началу.
Дальше идентификатору функции Sum присваивается значение результата всей деятельности, каковой есть D3, ну и end - это закрытие функции.
Vladimir_S вне форума   Ответить с цитированием
Старый 18.01.2015, 22:06   #23 (permalink)
Asya_inter
Member
 
Аватар для Asya_inter
 
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Vladimir_S, спасибо!!! Теперь всё понятно!
Asya_inter вне форума   Ответить с цитированием
Старый 19.01.2015, 19:48   #24 (permalink)
Asya_inter
Member
 
Аватар для Asya_inter
 
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Vladimir_S, здравствуйте! Огромнейшее вам СПАСИБО за помощь с задачами!! Теперь я даже сама больше стала понимать и разбираться в них, чему очень рада! Сегодня сдавала эту задачу и всё-всё сама объяснила, так что зачет) Ещё рах спасибо! ...Хоть я и сдала задачу, но вот один ещё вопросец: мне преподаватель сказал для чего вот это?(то что в скобочках) и взял удалил, сказав, что и так будет прекрасно работать. А вы могли бы пояснить почему это так?
{for i:=(Length(D2)-Length(D1))+1 to Length(D2) do }D1a:=D1a+D1{[i-(Length(D2)-Length(D1))];}
Asya_inter вне форума   Ответить с цитированием
Старый 20.01.2015, 09:44   #25 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Asya_inter Посмотреть сообщение
А вы могли бы пояснить почему это так?
Ох, да не знаю - пути преподавательской мысли неисповедимы...
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 02:43.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.