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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2017, 15:58   #1
anasttb
Пользователь
 
Регистрация: 24.02.2017
Сообщений: 32
По умолчанию Не могу понять,что происходит в программе. Помогите добавить комментарии.

Код:
var
  s1, s2, s3: String;
  i, d, c: Integer;
begin
  Write('1: ');
  ReadLn(s1);
  Write('2: ');
  ReadLn(s2);
  while Length(s1) < Length(s2) do
    Insert('0', s1, 1);
  while Length(s2) < Length(s1) do 
    Insert('0', s2, 1);
  s3 := s1;
  c := 0;
  for i := Length(s1) downto 1 do 
  begin
    d := c + Ord(s1[i]) + Ord(s2[i]) - 2 * Ord('0');
    s3[i] := Chr(d mod 10 + Ord('0'));
    c := d div 10;
  end;
  if c > 0 then 
    Insert('1', s3, 1);
  while (Length(s3) > 1) and (s3[1] = '0') do
    Delete(s3, 1, 1);
  WriteLn('':3, s3);
end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 22.03.2017 в 16:15.
anasttb вне форума Ответить с цитированием
Старый 22.03.2017, 16:17   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

это реализация сложения двух чисел, представленных в виде строк (см. т.н. "длинная арифметика"), по сути - это сложение двух чисел "в столбик", как в начальной школе.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.03.2017, 16:28   #3
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
По умолчанию

Как-то так
Цитата:
Сообщение от anasttb Посмотреть сообщение
Код:
var
  s1, s2, s3: String;
  i, d, c: Integer;
begin
  Write('1: '); 
  ReadLn(s1); // вввод первой строки
  Write('2: ');
  ReadLn(s2); // вввод второй строки
  while Length(s1) < Length(s2) do // пока длина 1-ой строки меньше второй... 
    Insert('0', s1, 1); // первая строка добавляется "0" в начало строки
// цикл завершится когда 1-я строка будет больше или равна 2-ой
  while Length(s2) < Length(s1) do  // аналогия 
    Insert('0', s2, 1);
  s3 := s1; // формирует 3 строку такую же как  и первая
  c := 0; // обнуление счетчика
  for i := Length(s1) downto 1 do // цикл от длины первой строки к 1 (обратный порядок)
  begin
    d := c + Ord(s1[i]) + Ord(s2[i]) - 2 * Ord('0'); // переменная с + код символа 1-ой строки (с циклом берется предудыщий элемент строки)+ код символа 2-ой строки + 2 умноженное на код символа "0" (от буковок к цифоркам)
    s3[i] := Chr(d mod 10 + Ord('0'));  // нахождение i-ого символ 3-ей строки (из цифорок к буковкам)
    c := d div 10; // переменная с = переменная d деленная на 10 (отброс дробной части)
  end;
  if c > 0 then // если с больше 0 то
    Insert('1', s3, 1); // добавляем в 3-ю строку 1 вначало строки
  while (Length(s3) > 1) and (s3[1] = '0') do // пока длинна 3-ей строки больше 1 и первый символ 3-ей строки равен 0... 
    Delete(s3, 1, 1); // удаляем из 3-ей строки начиная с первого элемента один элемент  
  WriteLn('':3, s3); // вывод на экран 3-ей строки
end.
Исходники программ - http:\\www.kort.3dn.ru

Последний раз редактировалось KORT; 22.03.2017 в 16:31.
KORT вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу добавить комментарии под youtube bitix Свободное общение 12 16.05.2015 01:37
Не могу понять строку кода. Подскажите что тут происходит pompiduskus JavaScript, Ajax 9 06.04.2014 20:25
Не могу понять,что в программе не так,язык Си Alina111 Общие вопросы C/C++ 6 19.01.2013 21:00
Помогите, не могу понять, как объяснить программе, что именно я от нее хочу Dead Romantic Общие вопросы C/C++ 4 03.12.2009 21:51
Помогите дописать программу на Delphi 7 не могу понять что здесь не так matrix8325 Помощь студентам 1 30.04.2009 23:34