Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 011
от 22.05.2002, 17:00

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 26
Отправлено ответов: 66
Активность: 253.8 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе]


 Список экспертов, ответы которых опубликованы в данном выпуске

Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 138.71
URL: Пристанище неодинокого программиста
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 150.1
[Подробней >>]
Dzik
Статус: Доверительный
Общий рейтинг: 115.53
[Подробней >>]
 
Blackeye
Статус: Опытный
Общий рейтинг: 130.28
URL: Delphi, my programms...
[Подробней >>]
igorash
Статус: Начальный
Общий рейтинг: 147.36
[Подробней >>]
vitya
Статус: Опытный
Общий рейтинг: 124.01
[Подробней >>]
 
Zloy
Статус: Начальный
Общий рейтинг: 104.76
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 162.25
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 21. Добрый день, уважаемые эксперты! Подскажите как можно решить такую задачу: "x4 - разница мужду ... (ответов: 2)
Вопрос № 22. Здравствуйте! Вообщем на Паскале я хотел начетрить график функции (любой), ну например у=((12*х)+23... (ответов: 7)

Вопросов: 2, ответов: 9


 Вопрос № 21

Добрый день, уважаемые эксперты!
Подскажите как можно решить такую задачу: "x4 - разница мужду суммой всех элементов матрицы A [1..3,1..3] и элементов кратных 5 массива B [1..3]." С матрицей А все легко, а вот со второй частью задания никак не справлюсь. Пробовал через mod, но ничего не получается...
Заранее благодарен.


Приложение:


Вопрос отправлен: 18.05.2002, 18:55
Отправитель: Pavel

[Следующий вопрос >>] [Список вопросов]

Отвечает Артём Шегеда

Здравствуйте, Pavel!
Позволю себе заметить, что термин "кратность числу n" применим только к целым числам. Следовательно, тип "Vect" должен быть массивом целых чисел. Тогда всё будет Ok

Ответ отправлен: 18.05.2002, 19:11
Отправитель: Артём Шегеда


Отвечает Ayl

Доброе время суток, Pavel!
Судя по описанию функции, тип vect представляет собой массив элементов типа real. А операция mod определена только для целых чисел. Так что исправляй тип элементов на integer, byte, word или longint и все должно работать.

Ответ отправлен: 20.05.2002, 00:03
Отправитель: Ayl


 Вопрос № 22

Здравствуйте!
Вообщем на Паскале я хотел начетрить график функции (любой), ну например у=((12*х)+23)/7
или даже простейший у=х*х*х
(но ничего не получилось) 8-((
Помогите, хотябы направьте меня в нужное русло...
Принимаются все ответы и рассуждения !
Спасибо !



Вопрос отправлен: 19.05.2002, 16:57
Отправитель: programmer (programmer@fromru.com)

[Следующий вопрос >>] [Список вопросов]

Отвечает Dzik

Здравствуйте, programmer!
В цикле перебираешь значения х от 0 до максимального х при текущем разрешении и выводишь точку с х и высчитанным у.
Только не забывай, что на экране координаты начинаются в верхнем левом углу.


Ответ отправлен: 19.05.2002, 18:45
Отправитель: Dzik


Отвечает Blackeye

Доброе время суток, programmer!
Попробуй следующий код, тольок измени под себя

Приложение:

Ответ отправлен: 19.05.2002, 20:39
Отправитель: Blackeye


Отвечает igorash

Приветствую Вас, programmer!
Я обычно принимаю координаты центра экрана за точки 0,0, потом в цикле х от -320 (реальный 0 на экране - левый край) до 320 (правый край на экране) высчитываю эту функцию и получаю у, потом к реальным х и у добавляю 320 и 240 соответственно, таким образом получаю точки 0,0 в центре экрана. Вот и все.
з.ы. Кстати мне было легче высчитывать линейную функцию у=((12*х)+23)/7 чем кубическую у=х*х*х, потому что при х=-320 и 320 происходило переполнение при вычислении х^3 и выводилось немного не то, что надо, поэтому я просчитал примерно координаты и понял что х должен быть от -10 до 10 примерно (кстати можно попробовать в 2 программе константе l присвоить что-нибудь побольше - получится куча хаотичных точек и функция посередине).

Приложение:

Ответ отправлен: 20.05.2002, 21:04
Отправитель: igorash


Отвечает Ayl

Приветствую Вас, programmer!
А программку приложить было трудно, да?
Рассказываю, как рисовать.
1. Определись, где на экране будет центр координат (вряд ли в точке (0, 0) - все-таки левый верхний угол). Пусть центр координат будет в точке экрана (x0, y0).
2. Определи диапазон по оси X. Пусть x изменяется от Xmin до Xmax.
3. Вычисли максимальное и минимальное значение функции в этом диапазоне. Пусть они равны, соответственно, Ymax и Ymin.
4. Определи масштаб по оси Y.
5. Определи шаг изменения по оси X - deltaX.
6. Определи координату X, с которой начнется вывод графика.
7. Теперь организуешь цикл по x от Xmin до Xmax с шагом deltaX. Вычисляешь значение функции в точке x - F (x)
8. Вычисляешь экранные координаты:
Yg = y0 - kY * F (x)
9. Ставишь точку (Xg, Yg), переходишь к следующей: Xg := Xg + 1
Все. Вроде ничего не напутал...

Ответ отправлен: 20.05.2002, 00:47
Отправитель: Ayl


Отвечает vitya

Добрый день, programmer!
советую сделать так:
для начала создай тип функции, например:
type grFunc = function(x:real):real;
после чего со спокойной душой создавай функцию примерно со следующим прототипом:
procedure PlotGraph(rFrom:real; rTo:real; rScaleY:real;
func:grFunc; rScaleX:real);
Параметры: первые два будут описывать интервал на который будет проектироваться экран. Второй будет коэф умножения для графика, например, для синуса его можно выбрать 200. Следующий параметр это сама фунция. Последний параметр это шаг по оси X. Внутри ты должен будешь отображать координаты из физических на твой интервал, вычислять в этой точке твою функцию, умножать на коэф. и вызывать функцию putpixel() вроде как и все.
rX := rFrom;
rMapping = GetMaxX / (rTo - rFrom);
while (rX <= rTo)
begin
rY := grFunc(rX) * rScaleY;
putpixel((rX - rFrom)* rMapping, rY, 13); {цвет можно задавать как параметр}
rX := rX + rScaleX;
end;
Кроме того можно еще задавать кучу параметров. Рисовать или нет оси, проектировать не на весь экран а на часть. задавать не функцию а массив функций и рисовать все своим цветом, для сравнения. Можно рисовать как функцию так и ее производную. В общем полет фантазии безграничен. Удачи.

Ответ отправлен: 20.05.2002, 11:25
Отправитель: vitya


Отвечает Zloy

Добрый день, programmer!
Скорее всего загвоздка кроется в преобразовании координат из real в int, в приложении функция, кот строит х*х*х на [start, end] с шагом dx, для начала задаёшь Xm Ym - твое разрешение в Real координатах, а потом пользуешь функции IX (х) и IY(у). Это самый простой и древний способ...


Приложение:

Ответ отправлен: 20.05.2002, 14:20
Отправитель: Zloy


Отвечает Sensey

Приветствую Вас, programmer!
Держи на мыло, хорошо, что еще в институту делал...


Ответ отправлен: 20.05.2002, 16:36
Отправитель: Sensey



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (58)
C / C++ (32)
Perl (10)
Delphi (20)
Pascal (32)
Basic / VBA (15)
Java / JavaScript (9)
PHP (7)
MySQL / MSSQL (6)
Пользователю
Windows 95/98/Me (55)
Windows NT/2000/XP (39)
"Железо" (45)
Поиск информации (19)
Администратору
Windows NT/2000/XP (14)
Linux / Unix (9)
Юристу
Гражданское право (17)
Уголовное право (4)
Семейное право (8)
Трудовое право (9)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




be number one SUPERTOP Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное