Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.03.2011, 14:57
link-oln link-oln вне форума
Прохожий
 
Регистрация: 15.03.2011
Сообщения: 20
Репутация: 10
По умолчанию Приоритет математических операций...

Здравствуйте, господа! Кто знает приоритеты выполнения математических операций, а именно сложение, вычитание, деление, умножение и возведение в степень?
Ответить с цитированием
  #2  
Старый 31.03.2011, 14:58
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

Ниже перечислены математические операции в порядке убывания приоритета:
Цитата:
Возведение в степень (^).
Унарный минус (изменение знака числа).
Умножение и деление.
Целочисленное деление.
Вычисление остатка (Mod).
Сложение и вычитание.

еще тут и тут
P.S.: видимо гугел и яндекс придумали для меня одного ))
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #3  
Старый 31.03.2011, 19:03
link-oln link-oln вне форума
Прохожий
 
Регистрация: 15.03.2011
Сообщения: 20
Репутация: 10
По умолчанию

Цитата:
Сообщение от Assistant
P.S.: видимо гугел и яндекс придумали для меня одного ))

Честное слово я гуглил! Но внятного ничего не нашёл(((
P.S. По этим ссылкам я был... Но так ничего и не понял...

Последний раз редактировалось link-oln, 31.03.2011 в 19:06.
Ответить с цитированием
  #4  
Старый 31.03.2011, 19:12
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

ну щас поняли или нет, по тому что я написал?
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #5  
Старый 31.03.2011, 21:37
link-oln link-oln вне форума
Прохожий
 
Регистрация: 15.03.2011
Сообщения: 20
Репутация: 10
По умолчанию

Да, но тут у меня ещё один вопрос по теме:
Учитывает ли Delphi эти приоритеты? Если например ввести -
s := a+b/c*b/d-c;
то она выдаст правильный ответ?
Ответить с цитированием
  #6  
Старый 31.03.2011, 21:39
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от link-oln
Да, но тут у меня ещё один вопрос по теме:
Учитывает ли Delphi эти приоритеты? Если например ввести -
s := a+b/c*b/d-c;
то она выдаст правильный ответ?
Смотря что ты подразумеваешь под правильным.

a+((b/c)*b)/d-c) = a+b/c*b/d-c

Тоесть
сначала к а добавим б/с
затем результат *б
затем что получилось /д
и в конце -с

Последний раз редактировалось Konrad, 31.03.2011 в 21:43.
Ответить с цитированием
  #7  
Старый 31.03.2011, 21:45
link-oln link-oln вне форума
Прохожий
 
Регистрация: 15.03.2011
Сообщения: 20
Репутация: 10
По умолчанию

Вот, в том и загвоздка! Что имеет первый приоритет, умножение или деление???

Последний раз редактировалось link-oln, 31.03.2011 в 21:47.
Ответить с цитированием
  #8  
Старый 31.03.2011, 21:48
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от link-oln
Вот, в том и загвоздка! Что имеет первый приоритет, умножение или деление???
Ни то ни другое.
Они равнозначны.

Тоесть если написать
а*б/с
то сначала а*б а потом /с

если
а/б*с

то а/б а потом *с.
Ответить с цитированием
  #9  
Старый 31.03.2011, 21:53
Аватар для BoRoV
BoRoV BoRoV вне форума
Начинающий
 
Регистрация: 08.09.2008
Сообщения: 193
Репутация: 12694
По умолчанию

Да заключи в скобки и задай нужный приоритет и не парся.
__________________
Меня греют ваши плюсы к моей репутации...
Ответить с цитированием
  #10  
Старый 31.03.2011, 21:55
link-oln link-oln вне форума
Прохожий
 
Регистрация: 15.03.2011
Сообщения: 20
Репутация: 10
По умолчанию

Но ведь как не возьми: a+((b/c)*b)/d-c) или a+((b/c)*(b/d))-c результат кажется один и тот... Так что он в итоге всегда будет "правильным". Или я не прав?
Ответить с цитированием
  #11  
Старый 31.03.2011, 22:05
link-oln link-oln вне форума
Прохожий
 
Регистрация: 15.03.2011
Сообщения: 20
Репутация: 10
По умолчанию

Короче, я дошел к такому умовыводу: как пример не задай, главное сначала произвести все возведения в степень, потом все деления\умножения и напоследок все сложить, и результат будет тот что надо. И да будет мне счастье!
Ответить с цитированием
  #12  
Старый 31.03.2011, 22:10
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от link-oln
Но ведь как не возьми: a+((b/c)*b)/d-c) или a+((b/c)*(b/d))-c результат кажется один и тот... Так что он в итоге всегда будет "правильным". Или я не прав?
Мда)))

А дроби в школе выучил?)))

(b/c)*b)/d = (b*b)/(c*d) = (b/d)*b/c = (b/c)*(b/d) = (b/d)*(b/c) и т.д.

и делфи тут не при чем.

Последний раз редактировалось Konrad, 31.03.2011 в 22:15.
Ответить с цитированием
  #13  
Старый 11.04.2011, 15:30
link-oln link-oln вне форума
Прохожий
 
Регистрация: 15.03.2011
Сообщения: 20
Репутация: 10
По умолчанию

Я - ИДИОТ! (И Вы все тоже!)
Вот как вы прикажете вычислить это:
16/4*10???
Ибо 40 <> 0,4 !!!
Решение:
Как мы учили в школе - при умножении дробного числа на целое это число нужно умножить на числитель и результат поделить на знаменатель!
Выходит:
(16/4=4)*10 == (16*10=160)/4 == 40!
Так что НИФИГА "*" и "/" не равноправны, а деление имеет БОЛЬШИЙ приоритет чем умножение!

Вот так, сам дал себе ответ на свой вопрос.
Всем спасибо за внимание!
Ответить с цитированием
  #14  
Старый 11.04.2011, 15:45
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

(16 разделить на 4) * 10 = 4 * 10 = тоже 40
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #15  
Старый 11.04.2011, 17:56
link-oln link-oln вне форума
Прохожий
 
Регистрация: 15.03.2011
Сообщения: 20
Репутация: 10
По умолчанию

Цитата:
Сообщение от Assistant
(16 разделить на 4) * 10 = 4 * 10 = тоже 40
Так я так и написал :
(16/4=4)*10 == (16*10=160)/4 == 40!
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:24.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter