Помощь - Поиск - Пользователи - Календарь
Полная версия: Ищу словарь
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Студент*21в.
Привет всем!
Набрёл случайно после бесполезных поисков по уневерситетским серверам и был приятно удивлен.
Ищу математические выражения на синтаксисе Паскаля. Буду весьма признателен если кто поможет.
Altair
Цитата
Ищу математические выражения на синтаксисе Паскаля.

Вопрос несколько некорректен.
Тебя интересует как используя синтаксис Паскаля, записывать математические выражения?

Поверхностно, правила простые:
Есть 4 действия:
*,-,+,\
все операции бинарные, но "-" может быть унарным, тогда это операция инвертирования знака.
Кроме того есть операции mod и div (остаток от деления и целочисленное деление)
В выражении можно изменять порядок вычислений скобками ()
Студент*21в.
Об этих четырёх действиях я знаю.
Меня интересует весь математический арсенал.
Например: abs(x) - x; sqrt(x) - {корень квадратный}(x); ln(x) - ln x и тд. Вместе с косинусами, 3.14-ми ВОТ. smile.gif
мисс_граффити
а хелп уже не работает?
там функции и процедуры (в том числе математические) описаны.
Цитата
abs(x) - x

abs(x)=|x|
Студент*21в.
Помощь? А где? Если в borland pascal, то у меня его нет. Пожайлуйста подскажите от куда скачать blink.gif
мисс_граффити
У тебя вообще никакого компилятора нет?
Студент*21в.
Есть один Borland Object pascal 7.0 но английком. Я там искал.
Altair
Никаких проблем!
Руководство по языку Pascal - Выражения
Студент*21в.
Спасибо за ссылку! Клевый портал!
Но дело в том, что возможно вы меня не совсем понимаете.
Поэтому изложу суть всей моей проблемы.
Я пишу курсовую работу. тема такая:"Создать программу, анализирующую правильность записи арифметического выражения с точки зрения синтаксиса Паскаля. Арифметическое выражение задается строковой переменной и вводится с клавиатуры компьютера".
Алгоритм я уже примерно набросал. Но в юнитах мало инфы. Конкретно, нужны все возможные арифметические обозначения на синтаксисе Паскаля(синусы, секансы, арктангенсы, логарифмы всякие, пределы, корни кубические и четвертой степени нуитэдэитэпэ). Вообщем не знаю где откапать такого. А так питерку охота. !help.gif
volvo
Цитата
Создать программу, анализирующую правильность записи арифметического выражения с точки зрения синтаксиса Паскаля
Ну, тогда тебе надо просто меньше делать, чем ты думал, потому как
Цитата
(синусы, секансы, арктангенсы, логарифмы всякие, пределы, корни кубические и четвертой степени нуитэдэитэпэ)
- no1.gif Нет в синтаксисе Паскаля корней, ни кубических, ни четвертой степени... Есть только квадратные. Все остальные вычисляются по стандартной формуле X1/n = Exp((1/n)*Ln(X))

Пределы - это ты о чем? Об автоматическом нахождении пределов? Не было никогда этого... Арктангенс есть в стандартных функциях: ArcTan называется, Другие Arc-и - надо писать опять же свои функции: Общие вопросы по математике.

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

Вот и получается, что проверять - то всего ничего... Вот если бы тебе Дельфийскому синтаксису соответствие досталось - было бы больше работы...
мисс_граффити
http://yurae.boom.ru/inform/MathFnc.htm
типа такого?
Студент*21в.
Значит так:arc-;sin;cos;tan;ctan<- blink.gif ;sec(это наверна секанс);exp;ln;sqr;sqrt;pi;tran;frac;
int;abs;...
И это все smile.gif
мисс_граффити
не
Цитата
ctan
, а arctan(x)
что такое
Цитата
arc-
я не знаю
Цитата
tran
не знает даже паскалевский хелп

может встретиться MaxInt
еще есть inc, dec, succ, pred
odd... хотя это в мат.выражении вряд ли
есть преобразование числа в строку и обратно....
volvo
{$TELEPATHY ON}
Цитата
tran
Это Trunc? blink.gif

Цитата
arc-;sin;cos;tan;ctan
Это типа ArcSin, ArcCos, ArsTan, ArcCTan (Arc-котангенс, в смысле)?

P.S.
(может, тег TELEPATHY сделать? Будет выделять текст, например, серым цветом... Уж очень часто используется в последнее время) smile.gif
мисс_граффити
Цитата
(может, тег TELEPATHY сделать? Будет выделять текст, например, серым цветом... Уж очень часто используется в последнее время)

новички не поймут, а применяется в основном в их адрес.
лучше уж тогда "оффтоп"
или... если есть возможность реализовать... на каком-то форуме видела....
не просто рамочки/изменение цвета, а смайлик подходящий (символизирующий особенности рамочки), а потом уже сама рамочка.
Студент*21в.


Это типа ArcSin, ArcCos, ArsTan, ArcCTan (Arc-котангенс, в смысле)?

P.S.
(может, тег TELEPATHY сделать? Будет выделять текст, например, серым цветом... Уж очень часто используется в последнее время) smile.gif<- C этого места пожайлуйста по подрбней blink.gif
Тригонометрические функции:
Standart-Pascal
sin sin
cos cos
tg tan
ctg ? <-котангенс
sec ? <-секанс(в роде 1/cos. Кто знает поправте)
arc arc<<<<-с этим понятно. Ставим перед выше перечисленными.


И еще: exp(x)=?
volvo
Цитата
Ставим перед выше перечисленными
Много тебе это даст, если ты перед Sin поставишь Arc? Нету такого в Паскале, тебе же сказали уже... И ArcCtg тоже нет...

и Tan тоже нету, самому делать надо...

Ctg(x) вообще-то это Cos(x)/Sin(x)

Sec(x) = 1 / Cos(x) <-- это действительно секанс
CoSec(x) = 1 / Sin(x) <-- а вот это косеканс

А ArcCtg(ч) вычислять через ArcCos(x):
ArcCtg(x) = ArcCos(x / sqrt(1 + sqr(x)))

А что с Exp? Стандартная функция не устраивает? Есть же она... blink.gif
Студент*21в.
wacko.gif Ну я уже вообще запутался. Если нет тангенса то откуда тогда арктангкнс?
И еще. Когда я писал о пределах я имел ввиду не автовычисление а просто
способ записи. А то кто его знает что может прийти в голову при проверке учителю.
Например интеграл какой нибудь как накалякает. Или производную.
А mod и div И тому подобные думаю не понадобятся. Ведь речь идет о стан-дартной математике. А может я заблужаюсь? blink.gif
volvo
Ты не только сам запутался, но и всех запутал... Тебе чего надо??? Ты можешь привести пример строки, которую получает твоя программа, и сказать, что ИМЕННО с ней надо делать? Что за привычка НИЧЕГО не сказав искать ответ???

Нельзя написать было:

"Моя программа должна получать строку вида
abs(sin(x) + sec(y)) * ln(sqrt(z))
и должна проверить ее на соответствие синтаксису Паскаля"

?

Почему надо все время делать непонятно что?
TarasBer
Цитата(Студент*21в. @ 11.02.2007 11:10) *

Ну я уже вообще запутался. Если нет тангенса то откуда тогда арктангкнс?

Интересно, как по-вашему арктангенс должен вычисляться из тангенса?
Просто нормальные ряды из тригонометрических функций есть только у синуса, косинуса и арктангенса (ведь значения триг. функций вычисляются из разложения в ряд). Попробуйте разложить тангенс по формуле Тейлора и найти закономерность. Вряд ли у вас получится.
Студент*21в.
А может у вас исходник где завалялся? smile.gif
Студент*21в.
Я благодарю всех, кто помог мне хоть как-то. Только вот я думаю прийдется мне весь курс математики пройти заново или может впервые wacko.gif . А время в обрез mega_chok.gif .
На одном сайте надыбал:
program z1;
uses crt;
var s:string; i,k:integer;
begin
clrscr;
readln(s);
k:=0;
for i:=1 to length(s) do
begin
if s[i]='(' then k:=k+1;
if s[i]=')' then k:=k-1;
if k<0 then begin writeln('NO'); halt; end;
end;
writeln('YES!');
readkey;
end.
Только вот не пойму почему при k<0 записывается "NO". (программа проверяет правельность растоновки скобок). По-мойму при k=1 blink.gif
мисс_граффити
1. Теги! Ими надо обрамлять код в любом разделе
2.
Цитата
На одном сайте надыбал:
Может, там и спросишь, почему при k<0? Видимо, имелось в виду, что, если закрывающаяся предшествует открывающейся, то есть ошибка.
а вот
Цитата
(3)(
она пропускает на ура, радостно сообщая YES!
3. На форуме была программка проверки расстановки скобок - чем она не понравилась?
Студент*21в.
1. Ай донт андерррстенд no1.gif
2 good.gif
3. Я НЕ ВИДЕЛ smile.gif
volvo
Цитата
Я НЕ ВИДЕЛ
Смотри:
Задача на проверку баланса скобок в строке
Студент*21в.
Ну а теперь о главном.
Объявляю переменную строчного типа
Ввожу туда чего нить вроде "abs(1)+sqrt(2)+ln(3)-sqr(4)*arctan(5)/(-abs(6))"
Подгоняю выше написаное под синтактическую диаграму:[-]x(y)z[-]x(y)............. организовываю цикл с шагом"[-]x(y)" с него он начинается и им закачиваетя а между шагов записывается "z"
под иксом пойдут абээсы и эскьюэрты. игрек это любое рациональное или действительное число.
зед это +,-,*,/.<Это опишем в пользовательском типе.а[-] на случай премены знака он либо есть либо нет.
Кстате а можно в паскале вместо "abs(5)" записать просто "5" или например два корня из трех "2*sqrt(3)" или надо оязательно "abs(2)*sqrt(3)"?
Далее переменной строчного типа присваеваю "чшру" если она соответствует синтаксической диаграмме.
wink.gif
Студент*21в.
Люди, если кто понял выше написаное, пожайлуста напишите что-нибудь.
Наверное это даже не алгоритм, а просто идея написания простым и понятным способом метода решения задачи.
Да и еще что это за "теги" такие? Напишите а smile.gif
Студент*21в.
Цитата(volvo @ 11.02.2007 14:29) *

Ты не только сам запутался, но и всех запутал... Тебе чего надо??? Ты можешь привести пример строки, которую получает твоя программа, и сказать, что ИМЕННО с ней надо делать? Что за привычка НИЧЕГО не сказав искать ответ???

Нельзя написать было:

"Моя программа должна получать строку вида
abs(sin(x) + sec(y)) * ln(sqrt(z))
и должна проверить ее на соответствие синтаксису Паскаля"

?

Почему надо все время делать непонятно что?


Именно это я и хотел сказать yes2.gif
Подскажите ламеру в каком направлении хоть двигаться
А то я третий год уже сижу на четвертом курсе из за этой курсовой
Охото уж вибираться как-то в програмеры !help.gif
hardcase
Цитата(Студент*21в. @ 17.08.2007 18:18) *


Именно это я и хотел сказать yes2.gif
Подскажите ламеру в каком направлении хоть двигаться
А то я третий год уже сижу на четвертом курсе из за этой курсовой
Охото уж вибираться как-то в програмеры !help.gif

Ты хочешь сделать простой транслятор арифметических выражений в синтаксисе паскаля?
Если так, то нужно сперва нагрузиться теорией. Статья раскрывает таинство обратной польской записи.
Алгоритм транслирования в неё эквивалентен проверки синтаксиса. (4 курсу вполне по силам прочитать).
Также статья есть на Codenet.ru там же поиск.

Далее ваш код в студию.
Студент*21в.
var
begin
end.
потом докидаю) чтоб темку не терять)
volvo
Цитата
чтоб темку не терять)
Для этого на форуме есть как минимум 2 средства:
1) У тебя в профиле: "Опции профиля" -> "Найти темы пользователя". У тебя не так много тем, чтобы можно было что-то потерять.
2) Прямо в этой теме - щелкаешь на номер первого (или второго, или последнего, какое тебе больше нравится ) сообщения, получаешь ссылку, и сохраняешь ее. Где хочешь... Можешь прямо в профиле, в поле "Ваш личный блокнот". Информация там хранится постоянно, пока не удалишь ее.

Можешь воспользоваться возможностями браузера - "Закладки" есть практически везде.

А поднимать тему, которое больше двух лет только для того. чтоб ее "не терять" - это некрофилия в чистом виде. Ты ж как-то ее сейчас нашел? Вот и ищи дальше тем же способом.

Можешь не отвечать, через сутки сообщения №29 и №30 удалятся...
Студент*21в.
laugh.gif та не просто неохота по циферкам тыкать постоянно) про опции не знал просто. искал но не заметил ph34r.gif
Студент*21в.
Здравствуйте! Произошло чудо, меня восстановили в универе! Думаю теперь все таки придется писать курсовые.

hardcase, спасибо за пример с обратной польской записью! Натолкнуло на кое-какие соображения.

Сразу перейду к постановке вопроса. Если я правильно понимаю, программа должна считывать поочереди каждый символ и толкать его в выходную строку, далее происходит вычисление выражения и таким образом сам компилятор покажет есть ли в выражении ошибки синтаксиса либо покажет результат! За код я пока не брался, хочу сперва перекопать учебники и немного выспаться.

P.S. Очень радует, что форум до сих пор существует! smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.