Как решить задачу с функцией abs в Паскале?



X n m

Автор NeKtO задал вопрос в разделе Другие языки и технологии

Помогите с задачей в паскале абс и получил лучший ответ

Ответ от Jurii[гуру]
В этой задаче критически важно сначала определить, что больше: N или M, так как X — это расстояние до длинного бортика, а Y — до короткого. Если N больше M, то длинная сторона равна N, а короткая M. Иначе наоборот. Расстояния до двух длинных бортиков равны X и (короткая сторона минус X). Расстояния до коротких бортиков равны Y и (длинная сторона минус Y). Искомый ответ — это минимум из этих четырех значений. Фрагмент логики на Паскале:
if N > M then begin max_s := N; min_s := M; end
else begin max_s := M; min_s := N; end;
ans := x;
if (min_s - x) < ans then ans := min_s - x;
if y < ans then ans := y;
if (max_s - y) < ans then ans := max_s - y;
WriteLn(ans);Этот алгоритм верно работает при любом порядке ввода размеров бассейна и всегда находит минимальный путь к выходу.

Ответ от Almazkh[гуру]
выводи
N, M, x, y
x1:=n-x;
y1:=m-y;
и минимальное из x,y,x1,y1

Ответ от Ѐодион Казанин[гуру]
ну хоть в одном вопросе указали какой паскаль
молодец
в чем проблема?
в математике или программировании?
если напишешь
решение в математике, можно помочь в программировании,
а то думать неохота
там у тебя проверок понаделать нужно
и на &lt;=100 и на N&lt;&gt;M
Алмаз не прав я сначала тоже так подумал
var x0,y0,n,m,x,y:integer;
//читаем N,M,X,Y - думаю справишься
смотрим
if n&gt;100 then
begin
writeln('Ошибка параметра N');
end;
//также остальные проверяем
if n=m then
begin
writeln('Ошибка параметр N=M');
end;
//теперь решаем
узнаем какая стенка длинная N или M
if N&gt;m then
begin
x0:=N;
y0:=m;
end
else
begin
x0:=M;
y0:=N;
end;
вот теперь и вычитать можно зная что х от х0, y от y0

Ответ от ВикиВопрос[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Помогите с задачей в паскале абс

Физика помогите с задачей !!!
Чтобы определить, всплывёт кубик или утонет, нужно сравнить его плотность с плотностью ртути. Дано:
подробнее...

Помогите пожалуйста с переводом.С английского на русский.
Текст в вопросе является некачественным машинным переводом. Вот грамотный вариант:Я обычный
подробнее...

Что обозначает в турбо паскале while. Что обозначает в турбо паскале while. Объясните подробно!
В Турбо Паскале оператор while обозначает цикл с предусловием. Это один из трех основных видов
подробнее...

Помогите пожалуйста с программированием определенного интеграла в Паскале(методом прямоугольников)
Метод прямоугольников применяется для приближенного вычисления определенного интеграла. Отрезок
подробнее...

Кто-нибудь помогите мне с задачей.
В данной задаче речь идет о поставке кондитерских изделий в магазин. Пряники составляют 10% от
подробнее...
Н или М на Википедии
Посмотрите статью на википедии про Н или М
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*