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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2010, 00:24   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а вот мой вариант.
В отличии от вышеприведённых в нём нет ни одной операции минус (и даже скрытой, такой как Dec())

Код:
var a, b, Diff : integer;
begin
  a := 21;
  b := 41;
  Diff := 0;
  while a+Diff<b do Diff := Diff + 1;
  while b+Diff<a do Diff := Diff + 1;

  WriteLn('Разность равна ',Diff:1);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.10.2010, 00:30   #12
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

Serge_Bliznykov, при a = -2, b = -1 выдаст 1, хотя на самом деле -2 - (-1) = -1
У вас Diff всегда неотрицательно и всегда при a < b будет неверный результат.

Последний раз редактировалось Kingdom_Reborn; 27.10.2010 в 00:35.
Kingdom_Reborn вне форума Ответить с цитированием
Старый 27.10.2010, 15:59   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Kingdom_Reborn
и всегда при a < b будет неверный результат.
Немножко позвольте поёрничать
Простите, я не увидел, а где написано, что нужно найти значение A - B ?
Мой алгоритм находит разность между двумя числами. Причём ВСЕГДА отнимает от большего меньшее. Вот такая вот фича у него.
Поэтому подходит и для положительных и для отрицательных:
при A>B diff := A - B
при A<B diff := B - A
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на паскале. Dukem Помощь студентам 2 27.09.2010 18:08