Pascal 7.0 График функции и таблица, Ребят, очень нужна ваша помощь |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Pascal 7.0 График функции и таблица, Ребят, очень нужна ваша помощь |
DarkMoonSide |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: 0 |
Дали задание, не когда прежде не работала с графикой, почитала... стало страшно дали 4 дня на выполнение работы
Нужно построить график функции y=lg(x) и рядом с графиком выводилась табличка что то типа X|Y 1 3 2 3 1 4 Несколько значений функции в точках Как когда то, в школе делали таблички к графикам. И если не трудно, можно с комментариями, посмотрела что можно с помощью графики делать- понравилось Выручайте |
Ozzя |
Сообщение
#2
|
Гуру Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: 16 |
|
DarkMoonSide |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: 0 |
Ув. Оззик Вы кинули ссылку на постороение "любого графика функции". У меня не строиться, просто черный екран после компиляции,
можете скинуть код программы? для графика y=lg(x)... не пойму что не так у меня и вопрос, как мне можно начертить эту злополучную табличку... |
volvo |
Сообщение
#4
|
Гость |
Цитата y=lg(x)... Имеется в виду логарифм с основанием 10? |
DarkMoonSide |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: 0 |
Да, имеется в виду log 10 с основанием 10.
И еще, как сделать рядом с графиком таблицу с некими значениями X и Y... п.с скоро дадут курсавик, надеюсь там не будет игры... Графику не потяну Ап.. не сплю |
volvo |
Сообщение
#6
|
Гость |
Графика - это самое интересное, что только может быть, ты просто еще не втянулась в процесс Смотри:
uses graph; Сообщение отредактировано: volvo - |
DarkMoonSide |
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: 0 |
Спасибо огромное, и еще пару вопросов, а то интересненькое )
Что делает эта функция? function f(X: real): real; begin f := ln(X) / ln(10); end; function RealToStr(X: real): string; var st: string; begin str(X:6:3, st); RealToStr := st; end; точнее переводит тип реал, но для чего ? можно кратенькую теорию, если есть время |
volvo |
Сообщение
#8
|
Гость |
Это не одна, а две функции... Первая - f - считает заданную тобой функцию, f = lg(x), поскольку готовой функции для вычисления десятичных логарифмов в паскале нет - приходится переходить к другому основанию, к тому, которое есть. А есть ln - натуральный логарифм. По формуле получаем log10X = logeX / loge10... И записываем это в виде функции.
А вторая - это просто "обертка" над процедурой Str, которая переводит число в строку. Можно было и без нее обойтись, но тогда пришлось бы каждый раз перед выводом значений X и Y дважды вызывать процедуру Str, да еще и 2 дополнительных переменных (ну, одна в лучшем случае). А так все преобразование обоих значений - в одной строке кода... |
DarkMoonSide |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: 0 |
Такс, все заработало, это теперь мне, что бы над графиком функции было написано
ГРАФИК ФУНКЦИИ y=lg(x) и возле осей были X Y писать с помощью команды outtextxy(координата х, координата у, текст) ? Сообщение отредактировано: DarkMoonSide - |
volvo |
Сообщение
#10
|
Гость |
Отображается... Только для этого забери из папки BGI (ну, или где он там у тебя находится, по-моему все-таки в BGI) файл LITT.CHR и скопируй (не надо перемещать, именно скопируй) его в ту же папку, где лежит программа. Тогда шрифт изменится на SmallFont, длина выводимых строк уменьшится, и строки будут отображаться. А сейчас длина строки большая, ее левый край выходит за пределы экрана, и поэтому строки не отображаются.
|
DarkMoonSide |
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: 0 |
Спасибо, уже додумалась )
Осталось вывести над графиком пару строк, и оси сделать И еще вопрос... спросила двух знакомых, один говорит отсчет координат справа сверху, другой слева... Добавлено через 7 мин. Такс, извените еще пару вопросов по программе. Где в коде находиться значиние в таблице, и строиться сама таблица while X < 20 do begin Y := f(X); if n mod 10 = 0 then begin color := lightred; outtextxy(TableWidth div 2, ((n div 10) + 2) * (textheight('W') + 3), RealToStr(X) + ' ' + RealToStr(Y)); end else color := white; putpixel(CenterX + trunc(X * ScaleX), CenterY - trunc(Y * ScaleY), color); X := X + 0.2; inc(n) end; я правильно поняла? А где рисуется сам график, и оси координат? Процедуру для ошибки тоже уже выучила )) Добавлено через 18 мин. Такс, и еще вопрос, так, как модуль сrt не подключен, как можно сделать, допустим что бы значение X нужно было вводить с клавиатуры? (я про y=lg(x)) Для себя просто интересно |
volvo |
Сообщение
#12
|
Гость |
Цитата Где в коде находиться значиние в таблице, и строиться сама таблица <...> Вот в том фрагменте, что ты привела, все, что между If ... Begin и End - это вывод очередной строки таблицы. А график - это PutPixel. Причем заметь, все точки, для которых в таблице присутствует значение, выделены на графике красным цветом. Нашла, где изменяется цвет вывода точки?А где рисуется сам график, и оси координат? А оси координат - это два Line-а, из всего 2 в программе, так что ошибиться невозможно Цитата спросила двух знакомых, один говорит отсчет координат справа сверху, другой слева... Это ты о чем? В Паскале принято, что левый верхний угол имеет координату 0, 0 и координата Y увеличивается вниз, а координата X увеличивается вправо. Но тебе это зачем в данном случае? В МОЕЙ программе от точки пересечения координатных осей вверх - это ось OY, а вправо - это ось OX...Цитата что бы над графиком функции было написано А вот тут и начинаются проблемы. Тебе нужны русифицированные шрифты, где-то на форуме я уже выкладывал на них ссылку, попробуй поискать, стандартные шрифты по-русски не пишут... Как найду - напишу, где именно качать их...ГРАФИК ФУНКЦИИ y=lg(x) и возле осей были X Y Добавлено через 1 мин. Цитата как можно сделать, допустим что бы значение X нужно было вводить с клавиатуры? Вводить строку в графическом режиме, посимвольно... И это я выкладывал, ищи... |
DarkMoonSide |
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: 0 |
Угу, разобралась с цветовой гаммой, как делать линии, не множко не поняла как ты сделал отсчет, точнее откуда...
(я брюнетка!!! ) Та мне не обязательно рус шрифт, и транслит пойдет, просто через аутттекст вводить ? п.с. личку прочитай пожалуйсто, если время будет, напишеш ? |
volvo |
Сообщение
#14
|
Гость |
Цитата просто через аутттекст вводить ? Через OutText ничего нельзя вводить, можно только ВЫводить Да, выводится строка через OutText/OutTextXY. А вводить строку в граф. режиме можно вот так: Графика |
DarkMoonSide |
Сообщение
#15
|
Новичок Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: 0 |
Cпасибо, пашла читать
п.с. если не трудно и будет время, хочу понять полностью программку... сможеш написать коментарии к строкам в программе? где идет точный ввод графика, где расчет пикселей, и как сделано что точка из таблицы-красный цвет в графике Добавлено через 3 мин. Чуть не забыла *blush* Как высчитываеться X и Y ? по какому значинию x функция работает? (y=lg(x)) Добавлено через 15 мин. что то не могу поймать координаты, криво пишет )) п.с. ап если времячко будет что бы если что, сама смогла подобную написать |
DarkMoonSide |
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: 0 |
Я знаю, я в край обнаглела, но я поспрашиваю вопросы по программе... потому что интересно, и здать ее тоже нужно будет
Это мы забиваем в константу что?
Что это?
Что есть TableWidth и что мы добовляем в центр?
Тут происходит что ?
Идет прорисовка осей. Но как можно еще добавить линии, как-то координатами. Как удобней ставить текст по координатам, допустим мне в конец осей нужно дописать X и Y? Прочитала о том, что можно из конечной точки сделать линию дальше. Вот функции построения осей координат? как можно добавить что бы график был со стрелочками, точнее как сделать так, что бы из конца линии, были 2 линии по диагонале, как > или < Спасибо огромное за помощь. |
DarkMoonSide |
Сообщение
#17
|
Новичок Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: 0 |
|
volvo |
Сообщение
#18
|
Гость |
1) комментарии в основную программу добавлены...
2) Цитата Вот функции построения осей координат? как можно добавить что бы график был со стрелочками, точнее как сделать так, что бы из конца линии, были 2 линии по диагонале, как > или < Чуть-чуть изменить код... Я не стал править первоначальный вариант, напишу здесь:Было: setcolor(lightgreen); стало: setcolor(lightgreen); , и чуть ниже, было: outtextxy(TableWidth div 2, textheight('W') + 3, стало: outtextxy(TableWidth div 2, textheight('W') + 3, Цитата что то не могу поймать координаты, криво пишет Это ты о чем? Все нормально по-моему: |
DarkMoonSide |
Сообщение
#19
|
Новичок Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: 0 |
Cпасибо всем огромное
еще пару вопросиков будет но в другой темке. еще раз спс, пошла учить ) |
DarkMoonSide |
Сообщение
#20
|
Новичок Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Дианка Репутация: 0 |
все поняла, разобралась "Дорисовала" надписи ))
но можешь объяснить подробно outtextxy(TableWidth div 2, ((n div 10) + 2) * (textheight('W') + 3), RealToStr(X) + ' ' + RealToStr(Y)); что тут? и что значит 'W' ? |
Текстовая версия | 11.01.2025 4:21 |