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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2009, 23:00   #1
Михаил70
Пользователь
 
Регистрация: 22.08.2009
Сообщений: 16
По умолчанию Помогите ражувать задачку по DELPHI

Задача: Дано целое число. Определить сумму двух старших цифр и двух младших цифр числа.

Представляю код данной задачи. Сразу оговорюсь, что код написан без ошибок. А теперь вопрос. Напишите мне пожалуйсто коментарий к каждой строчки. И еще, в задаче обявленны следующие переменные i,k,n,m,s1,s2 и переменная логического типа b. Почему в задачи объявляются именно эти переменные и какую функцию выполняет каждая из них. И почему тут введена переменная логического типа.
Также помогите с вопросом что такое порядок числа в позиционной системе счисления и зачем порядок числа нужно уменьшать на 1, чтобы определить сумму двух старших цифр числа.
Заранее ограмное спасибо всем кто откликнулся.

Код:
procedure TForm1.Button1Click(Sender: TObject);
 var i,k,n,m,s1,s2:integer;
  b:boolean;
begin
   n:=strtoint(edit1.Text);
   m:=n;
   s1:=0;
   s2:=0;
   k:=0;
   b:=false;
   while n<>0 do
     begin
      if not b then
     begin
      i:=n mod 10;
      s1:=s1+i;
      n:=n div 10;
       k:=k+1;
       i:=n mod 10;
       s1:=s1+i; // Сумма младших цифр числа
       b:=true;
        end;
        n:=n div 10;
        k:=k+1;//Определяем порядок числа
        end;
           i:=1;
           while i<=(k-2) do //Порядок числа надо уменьшить на единицу
        begin
         m:=m div 10;
          i:=i+1;
        end; //Деление до получения второй цифры с начала в записи числа
         i:=m mod 10; //Старшая цифра числа
         s2:=s2+i;
         m:=m div 10;
         s2:=s2+m mod 10;
          edit3.Text:=inttostr(s1);
          edit2.Text:= inttostr(s2);

Последний раз редактировалось Stilet; 03.09.2009 в 09:33.
Михаил70 вне форума Ответить с цитированием
Старый 02.09.2009, 23:18   #2
Luke
Пользователь
 
Аватар для Luke
 
Регистрация: 12.10.2007
Сообщений: 32
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
//Дарагой, абъяви перемений, пущай все будут адын, два, три (целые)
//S1 и S2 - сумма младщих и старших цифр
var i,k,n,m,s1,s2:integer;
//Правда\ложь
b:boolean;
//Паехали!
begin
//Берем число из эдита, преобразуя его из строки в число
n:=strtoint(edit1.Text);
//m приравниваем к этому числу
m:=n;
//Обнуляем все
s1:=0;
s2:=0;
k:=0;
b:=false;
//Пока считанное число не равно 0
while n<>0 do
begin
//Если b равно ложь
if not b then
//Тогда
begin
//i = последняя цифра числа (остаток от деления на основание системы счисления (10))
i:=n mod 10;
//Увеличиваем сумму цифр
s1:=s1+i;
//Делим число на 10, отбрасывая остаток (откидываем последнюю цифру)
n:=n div 10;
//Увеличиваем порядок числа
k:=k+1;
//Вторая с конца цифра числа
i:=n mod 10;
s1:=s1+i; // Сумма младших цифр числа
b:=true;
//Флаг того что сумма младших цифр подсчитана в тру
end;
//Отбрасываем еще одну цифру
n:=n div 10;
k:=k+1;//Определяем порядок числа
end;
i:=1;
while i<=(k-2) do //Порядок числа надо уменьшить на единицу
begin
m:=m div 10;
i:=i+1;
end; //Деление до получения второй цифры с начала в записи числа
i:=m mod 10; //Старшая цифра числа
//Cумма старших цифр
s2:=s2+i;
m:=m div 10;
s2:=s2 + m mod 10;
//Выводим
edit3.Text:=inttostr(s1);
edit2.Text:= inttostr(s2);
Si vis pacem, para bellum!
Luke вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно срочно решить задачку в Delphi SERESHKA Помощь студентам 3 02.05.2009 16:58
Поясните задачку(Delphi) Ddr Помощь студентам 1 16.04.2009 21:45
Решите задачку на Delphi evrey Общие вопросы Delphi 1 01.06.2008 21:47