Форум «Всё о Паскале» _ Теоретические вопросы _ Ищу словарь
Автор: Студент*21в. 6.02.2007 22:32
Привет всем! Набрёл случайно после бесполезных поисков по уневерситетским серверам и был приятно удивлен. Ищу математические выражения на синтаксисе Паскаля. Буду весьма признателен если кто поможет.
Автор: Altair 7.02.2007 13:54
Цитата
Ищу математические выражения на синтаксисе Паскаля.
Вопрос несколько некорректен. Тебя интересует как используя синтаксис Паскаля, записывать математические выражения?
Поверхностно, правила простые: Есть 4 действия: *,-,+,\ все операции бинарные, но "-" может быть унарным, тогда это операция инвертирования знака. Кроме того есть операции mod и div (остаток от деления и целочисленное деление) В выражении можно изменять порядок вычислений скобками ()
Автор: Студент*21в. 7.02.2007 20:22
Об этих четырёх действиях я знаю. Меня интересует весь математический арсенал. Например: abs(x) - x; sqrt(x) - {корень квадратный}(x); ln(x) - ln x и тд. Вместе с косинусами, 3.14-ми ВОТ.
Автор: мисс_граффити 7.02.2007 20:25
а хелп уже не работает? там функции и процедуры (в том числе математические) описаны.
Цитата
abs(x) - x
abs(x)=|x|
Автор: Студент*21в. 7.02.2007 20:35
Помощь? А где? Если в borland pascal, то у меня его нет. Пожайлуйста подскажите от куда скачать
Автор: мисс_граффити 7.02.2007 20:39
У тебя вообще никакого компилятора нет?
Автор: Студент*21в. 7.02.2007 20:44
Есть один Borland Object pascal 7.0 но английком. Я там искал.
Автор: Altair 7.02.2007 22:48
Никаких проблем! http://www1.citforum.ru/programming/bp70_lr/lr6.shtml
Автор: Студент*21в. 8.02.2007 21:18
Спасибо за ссылку! Клевый портал! Но дело в том, что возможно вы меня не совсем понимаете. Поэтому изложу суть всей моей проблемы. Я пишу курсовую работу. тема такая:"Создать программу, анализирующую правильность записи арифметического выражения с точки зрения синтаксиса Паскаля. Арифметическое выражение задается строковой переменной и вводится с клавиатуры компьютера". Алгоритм я уже примерно набросал. Но в юнитах мало инфы. Конкретно, нужны все возможные арифметические обозначения на синтаксисе Паскаля(синусы, секансы, арктангенсы, логарифмы всякие, пределы, корни кубические и четвертой степени нуитэдэитэпэ). Вообщем не знаю где откапать такого. А так питерку охота.
Автор: volvo 8.02.2007 21:31
Цитата
Создать программу, анализирующую правильность записи арифметического выражения с точки зрения синтаксиса Паскаля
Ну, тогда тебе надо просто меньше делать, чем ты думал, потому как
Цитата
(синусы, секансы, арктангенсы, логарифмы всякие, пределы, корни кубические и четвертой степени нуитэдэитэпэ)
- Нет в синтаксисе Паскаля корней, ни кубических, ни четвертой степени... Есть только квадратные. Все остальные вычисляются по стандартной формуле X1/n = Exp((1/n)*Ln(X))
Пределы - это ты о чем? Об автоматическом нахождении пределов? Не было никогда этого... Арктангенс есть в стандартных функциях: ArcTan называется, Другие Arc-и - надо писать опять же свои функции: http://forum.pascalnet.ru/index.php?s=&showtopic=4535&view=findpost&p=38505
Логарифм есть только натуральный, все остальные - опять же не встроены в язык - пишутся в виде своей функции через переход к другому основанию...
Вот и получается, что проверять - то всего ничего... Вот если бы тебе Дельфийскому синтаксису соответствие досталось - было бы больше работы...
Автор: мисс_граффити 8.02.2007 21:34
http://yurae.boom.ru/inform/MathFnc.htm типа такого?
Автор: Студент*21в. 9.02.2007 20:48
Значит так:arc-;sin;cos;tan;ctan<- ;sec(это наверна секанс);exp;ln;sqr;sqrt;pi;tran;frac; int;abs;... И это все
Автор: мисс_граффити 9.02.2007 23:53
не
Цитата
ctan
, а arctan(x) что такое
Цитата
arc-
я не знаю
Цитата
tran
не знает даже паскалевский хелп
может встретиться MaxInt еще есть inc, dec, succ, pred odd... хотя это в мат.выражении вряд ли есть преобразование числа в строку и обратно....
Автор: volvo 9.02.2007 23:56
{$TELEPATHY ON}
Цитата
tran
Это Trunc?
Цитата
arc-;sin;cos;tan;ctan
Это типа ArcSin, ArcCos, ArsTan, ArcCTan (Arc-котангенс, в смысле)?
P.S. (может, тег TELEPATHY сделать? Будет выделять текст, например, серым цветом... Уж очень часто используется в последнее время)
Автор: мисс_граффити 10.02.2007 11:35
Цитата
(может, тег TELEPATHY сделать? Будет выделять текст, например, серым цветом... Уж очень часто используется в последнее время)
новички не поймут, а применяется в основном в их адрес. лучше уж тогда "оффтоп" или... если есть возможность реализовать... на каком-то форуме видела.... не просто рамочки/изменение цвета, а смайлик подходящий (символизирующий особенности рамочки), а потом уже сама рамочка.
Автор: Студент*21в. 11.02.2007 10:08
Это типа ArcSin, ArcCos, ArsTan, ArcCTan (Arc-котангенс, в смысле)?
P.S. (может, тег TELEPATHY сделать? Будет выделять текст, например, серым цветом... Уж очень часто используется в последнее время) <- C этого места пожайлуйста по подрбней Тригонометрические функции: Standart-Pascal sin sin cos cos tg tan ctg ? <-котангенс sec ? <-секанс(в роде 1/cos. Кто знает поправте) arc arc<<<<-с этим понятно. Ставим перед выше перечисленными.
И еще: exp(x)=?
Автор: volvo 11.02.2007 10:20
Цитата
Ставим перед выше перечисленными
Много тебе это даст, если ты перед 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? Стандартная функция не устраивает? Есть же она...
Автор: Студент*21в. 11.02.2007 11:10
Ну я уже вообще запутался. Если нет тангенса то откуда тогда арктангкнс? И еще. Когда я писал о пределах я имел ввиду не автовычисление а просто способ записи. А то кто его знает что может прийти в голову при проверке учителю. Например интеграл какой нибудь как накалякает. Или производную. А mod и div И тому подобные думаю не понадобятся. Ведь речь идет о стан-дартной математике. А может я заблужаюсь?
Автор: volvo 11.02.2007 11:29
Ты не только сам запутался, но и всех запутал... Тебе чего надо??? Ты можешь привести пример строки, которую получает твоя программа, и сказать, что ИМЕННО с ней надо делать? Что за привычка НИЧЕГО не сказав искать ответ???
Нельзя написать было:
"Моя программа должна получать строку вида abs(sin(x) + sec(y)) * ln(sqrt(z)) и должна проверить ее на соответствие синтаксису Паскаля"
?
Почему надо все время делать непонятно что?
Автор: TarasBer 11.02.2007 16:57
Цитата(Студент*21в. @ 11.02.2007 11:10)
Ну я уже вообще запутался. Если нет тангенса то откуда тогда арктангкнс?
Интересно, как по-вашему арктангенс должен вычисляться из тангенса? Просто нормальные ряды из тригонометрических функций есть только у синуса, косинуса и арктангенса (ведь значения триг. функций вычисляются из разложения в ряд). Попробуйте разложить тангенс по формуле Тейлора и найти закономерность. Вряд ли у вас получится.
Автор: Студент*21в. 12.02.2007 10:10
А может у вас исходник где завалялся?
Автор: Студент*21в. 19.02.2007 20:50
Я благодарю всех, кто помог мне хоть как-то. Только вот я думаю прийдется мне весь курс математики пройти заново или может впервые . А время в обрез . На одном сайте надыбал: 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
Автор: мисс_граффити 19.02.2007 22:12
1. Теги! Ими надо обрамлять код в любом разделе 2.
Цитата
На одном сайте надыбал:
Может, там и спросишь, почему при k<0? Видимо, имелось в виду, что, если закрывающаяся предшествует открывающейся, то есть ошибка. а вот
Цитата
(3)(
она пропускает на ура, радостно сообщая YES! 3. На форуме была программка проверки расстановки скобок - чем она не понравилась?
Ну а теперь о главном. Объявляю переменную строчного типа Ввожу туда чего нить вроде "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)"? Далее переменной строчного типа присваеваю "чшру" если она соответствует синтаксической диаграмме.
Автор: Студент*21в. 21.05.2007 15:45
Люди, если кто понял выше написаное, пожайлуста напишите что-нибудь. Наверное это даже не алгоритм, а просто идея написания простым и понятным способом метода решения задачи. Да и еще что это за "теги" такие? Напишите а
Автор: Студент*21в. 17.08.2007 17:18
Цитата(volvo @ 11.02.2007 14:29)
Ты не только сам запутался, но и всех запутал... Тебе чего надо??? Ты можешь привести пример строки, которую получает твоя программа, и сказать, что ИМЕННО с ней надо делать? Что за привычка НИЧЕГО не сказав искать ответ???
Нельзя написать было:
"Моя программа должна получать строку вида abs(sin(x) + sec(y)) * ln(sqrt(z)) и должна проверить ее на соответствие синтаксису Паскаля"
?
Почему надо все время делать непонятно что?
Именно это я и хотел сказать Подскажите ламеру в каком направлении хоть двигаться А то я третий год уже сижу на четвертом курсе из за этой курсовой Охото уж вибираться как-то в програмеры
Автор: hardcase 17.08.2007 19:02
Цитата(Студент*21в. @ 17.08.2007 18:18)
Именно это я и хотел сказать Подскажите ламеру в каком направлении хоть двигаться А то я третий год уже сижу на четвертом курсе из за этой курсовой Охото уж вибираться как-то в програмеры
Ты хочешь сделать простой транслятор арифметических выражений в синтаксисе паскаля? Если так, то нужно сперва нагрузиться http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C. Статья раскрывает таинство обратной польской записи. Алгоритм транслирования в неё эквивалентен проверки синтаксиса. (4 курсу вполне по силам прочитать). Также статья есть на http://www.codenet.ru/progr/alg/cmp/001.php там же http://www.codenet.ru/search/search.php?q=%CE%E1%F0%E0%F2%ED%E0%FF+%EF%EE%EB%FC%F1%EA%E0%FF+%ED%EE%F2%E0%F6%E8%FF.
Далее ваш код в студию.
Автор: Студент*21в. 1.04.2010 12:21
var begin end.
потом докидаю) чтоб темку не терять)
Автор: volvo 1.04.2010 12:41
Цитата
чтоб темку не терять)
Для этого на форуме есть как минимум 2 средства: 1) У тебя в профиле: "Опции профиля" -> "Найти темы пользователя". У тебя не так много тем, чтобы можно было что-то потерять. 2) Прямо в этой теме - щелкаешь на номер первого (или второго, или последнего, какое тебе больше нравится ) сообщения, получаешь ссылку, и сохраняешь ее. Где хочешь... Можешь прямо в профиле, в поле "Ваш личный блокнот". Информация там хранится постоянно, пока не удалишь ее.
Можешь воспользоваться возможностями браузера - "Закладки" есть практически везде.
А поднимать тему, которое больше двух лет только для того. чтоб ее "не терять" - это некрофилия в чистом виде. Ты ж как-то ее сейчас нашел? Вот и ищи дальше тем же способом.
Можешь не отвечать, через сутки сообщения №29 и №30 удалятся...
Автор: Студент*21в. 2.04.2010 10:44
та не просто неохота по циферкам тыкать постоянно) про опции не знал просто. искал но не заметил
Автор: Студент*21в. 4.02.2013 21:32
Здравствуйте! Произошло чудо, меня восстановили в универе! Думаю теперь все таки придется писать курсовые.
hardcase, спасибо за пример с обратной польской записью! Натолкнуло на кое-какие соображения.
Сразу перейду к постановке вопроса. Если я правильно понимаю, программа должна считывать поочереди каждый символ и толкать его в выходную строку, далее происходит вычисление выражения и таким образом сам компилятор покажет есть ли в выражении ошибки синтаксиса либо покажет результат! За код я пока не брался, хочу сперва перекопать учебники и немного выспаться.
P.S. Очень радует, что форум до сих пор существует!