Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 32

Найти выражение, не используя функцию abs

10.11.2013, 20:34. Показов 1728. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помимо предыдущей задачи думаю над этой:

Даны x и y. Найти z=|x-2|+|y-3|+|x-y| , не пользуясь функцией ABS(x).

_______________
Что я думаю по этому поводу:

1) Выразить каждый модуль ч/з букву
...
R1:=|x-2|
R2:=|y-3|
R3:=|x-y|

И для каждого к-либо образом вынести функцию типа

if R1, R2, R3 < 0 then
R1, R2, R3= R1, R2, R3 * (-1)

2) Или всё возвести в квадрат и потом извлечь корень.

R1:=|x-2|
R2:=|y-3|
R3:=|x-y|

z=(sqrt(sqr(R1)))+ (sqrt(sqr(R2)))+ (sqrt(sqr(R3)))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.11.2013, 20:34
Ответы с готовыми решениями:

Оформить процедуру / функцию вычисления модуля числа, не используя функцию abs
Оформить процедуру вычисления модуля числа, не используя функцию abs. ...

Вычислить модуль, не используя стандартную функцию abs
Помогите пожалуйста решить задачу Вычислить модуль, не используя стандартную функцию abs, |5x-4|

Нарисовать на плоскости (x,y) область, в которой и только в которой истинно логическое выражение abs(x)>abs(y)
Народ, нарисовать на плоскости (x,y) область, в которой и только в которой истинно логическое выражение abs(x)&gt;abs(y) Помогите

10
Модератор
10430 / 5718 / 3404
Регистрация: 17.08.2012
Сообщений: 17,389
10.11.2013, 22:50
Цитата Сообщение от CzarK Посмотреть сообщение
Даны x и y. Найти z=|x-2|+|y-3|+|x-y| , не пользуясь функцией ABS(x).
У вас вполне рабочие варианты. Но ни к чему порождать кучу переменных.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program zzz;
 
var x, y, z: real;
 
begin
  write('x = ');
  readln(x);
  write('y = ');
  readln(y);
  if x - 2 >= 0 then z := x - 2     else z := 2 - x;
  if y - 3 >= 0 then z := z + y - 3 else z := z + 3 - y;
  if x - y >= 0 then z := z + x - y else z := z + y - x;
  writeln('z = ', z);
  readln
end.
1
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 32
11.11.2013, 10:46  [ТС]
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
У вас вполне рабочие варианты. Но ни к чему порождать кучу переменных.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program zzz;
 
var x, y, z: real;
 
begin
  write('x = ');
  readln(x);
  write('y = ');
  readln(y);
  if x - 2 >= 0 then z := x - 2     else z := 2 - x;
  if y - 3 >= 0 then z := z + y - 3 else z := z + 3 - y;
  if x - y >= 0 then z := z + x - y else z := z + y - x;
  writeln('z = ', z);
  readln
end.
Спасибо. Сегодня введу в программу и завтра утром я отпишусь.

Ответьте, пожалуйста, на вопрос:
Пример: if x - 2 >= 0 then z := x - 2 else z := 2 - x;
можно понять как, выражение больше= нуля, когда z=... (а else переводится как "ещё")...вообщем, как "понять" это выражение функции? Хочется, чтобы в дальнейшем понимал, что использую.
0
Модератор
10430 / 5718 / 3404
Регистрация: 17.08.2012
Сообщений: 17,389
11.11.2013, 15:10
Наречие "else" в данном случае переводится как "иначе", "в другом случае", поскольку здесь оно используется в сравнительной форме (condition). По той же причине "then" в данном случае переводится как "то", "тогда". По-русски получается:
Если x - 2 >= 0 то z := x - 2 иначе z := 2 - x;
1
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.11.2013, 15:12
Цитата Сообщение от CzarK Посмотреть сообщение
Хочется, чтобы в дальнейшем понимал, что использую.
Так хоть читай что-то да и с английского учись переводить.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 32
11.11.2013, 15:52  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
Так хоть читай что-то да и с английского учись переводить.
Знаю, что с английским проблемы, не стоит мне об этом упоминать; без этого знаю.

А на счёт лит-ры, да, собираюсь что-нибудь искать, читать.

Добавлено через 1 минуту
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Наречие "else" в данном случае переводится как "иначе", "в другом случае", поскольку здесь оно используется в сравнительной форме (condition). По той же причине "then" в данном случае переводится как "то", "тогда". По-русски получается:
Если x - 2 >= 0 то z := x - 2 иначе z := 2 - x;
Спасибо. Запишу, запомню.

ЗЫ: Вопрос решён, тему можно закрывать.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.11.2013, 16:03
Цитата Сообщение от CzarK Посмотреть сообщение
Знаю, что с английским проблемы
А я вообще не знаю, но есть онлайн переводчики в инете
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 32
12.11.2013, 08:02  [ТС]
Проверил работоспособность. Спасибо ещё раз.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 32
17.11.2013, 11:45  [ТС]
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Наречие "else" в данном случае переводится как "иначе", "в другом случае", поскольку здесь оно используется в сравнительной форме (condition). По той же причине "then" в данном случае переводится как "то", "тогда". По-русски получается:
Если x - 2 >= 0 то z := x - 2 иначе z := 2 - x;
Я не хотел снова обращаться за помощью. То, что вы предложили - по нормам должно было подходить (функция расписана как раз под "если, то, иначе"). Позже мне объяснили, что от меня требуется:

Задачу необходимо решить ч/з функцию (после моих раздумий и накаток преподаватель добавил: "Функция Zed должна округлять. Даёшь число, она округляет" (совершенно не понял, к чему это)). Тем не менее вот, что я сделал. Будьте добры, посмотрите, скажите, что нужно ещё добавить:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Program DOM3;
var x,y,z,R1,R2,R3:real;   // ?
function Zed(R1,R2,R3:real):real;
begin
   R1:=(x-2);
   R2:=(y-3);
   R3:=(x-y);
   Zed:=R1+R2+R3;     // или сразу написать функцию, не употребляя замену?
end;
begin
  write('x=');readln(x);
  write('y=');readln(y);
 
  if (R1>=0) then Zed(R1. ???   // тут не могу понять, как расписать эти.."если, то, иначе"
   ???
   ???
 
  writeln('z=',z);
  readln;
end.
0
Модератор
10430 / 5718 / 3404
Регистрация: 17.08.2012
Сообщений: 17,389
19.11.2013, 00:59
CzarK, Вы, вероятно, не так поняли. Наверное, требуется написать свою функцию, эквивалентную abs(x), и использовать её. Так будет:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
program zzz;
 
var x, y, z: real;
 
function modul(a: real): real;
begin
  if a < 0 then modul := -1 * a else modul := a
end;
 
begin
  write('x = ');
  readln(x);
  write('y = ');
  readln(y);
  z := modul(x - 2) + modul(y - 3) + modul(x - y);
  writeln('z = ', z);
  readln
end.
Добавлено через 1 минуту
Ну, типа, modul это Ваша Zed.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 32
20.11.2013, 16:31  [ТС]
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
CzarK, Вы, вероятно, не так поняли. Наверное, требуется написать свою функцию, эквивалентную abs(x), и использовать её. Так будет:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
program zzz;
 
var x, y, z: real;
 
function modul(a: real): real;
begin
  if a < 0 then modul := -1 * a else modul := a
end;
 
begin
  write('x = ');
  readln(x);
  write('y = ');
  readln(y);
  z := modul(x - 2) + modul(y - 3) + modul(x - y);
  writeln('z = ', z);
  readln
end.
Добавлено через 1 минуту
Ну, типа, modul это Ваша Zed.
Спасибо. Мне действительно не удобно просить о помощи; по другим предметам и сам хорошо справляюсь, а вот численные методы совсем не тяну.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.11.2013, 16:31
Помогаю со студенческими работами здесь

Преобразовать выражение используя функцию abs
как можно заменить это,через модуль? if((i &gt; -1000 &amp;&amp; i &lt;-99)||(i &lt; 1000&amp;&amp; i &gt;99))

Clojure Используя функцию Defun, определить функцию f(a x), где а-S- выражение, а х-список, состоящий из 2-3 элементов, которая заменяет на а все атомы списка
1)Используя функцию Defun, определить функцию f(a x), где а-S- выражение, а х-список, состоящий из 2-3 элементов, которая заменяет на а все...

Вычислить выражение, используя функцию
y=max(a+b,b+c,c+a)+max(a,b,c)/min(a*b,b*c,c*a)

Вычислить выражение, используя функцию
Доброго времени суток всем кто на форуме! Вот набралась смелости (или наглости, не знаю) и решила обратиться с просьбой. Дали домашнее...

Вычислить выражение используя функцию
Написать программу решения задачи, используя функции: в основной функции ввести с клавиатуры или вычислить с помощью генератора случайных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru