Помощь - Поиск - Пользователи - Календарь
Полная версия: График функции
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Atreides
Помогите с построением графика функции f(p)=3^2p+4p на отрезке [f, 1.3], выделив шаг, где нет корня вертикальной штриховкой.
И еще хотел спросить, при помощи, каких операторов в прогу затолкать сведения и осуществлять их поиск, допустим, об оборудование на складе, нужно ввести тип, стоимость, изготовитель, предельное напряжение и выдать оборудование, которое наиболее совпадает с задаваемым значением.
Altair
Цитата
Помогите с построением графика функции

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

Цитата
при помощи, каких операторов в прогу затолкать сведения и осуществлять их поиск

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

Может ссылку подкинешь, а то искать задолбаюсь?
Цитата
Вопрос не ясен

В смысле нужно составить прогу в которую нужно заталкать данные (но это я сам сделаю). Нужно ввести тип, стоимость, изготовителя, предельное напряжение и программа должна выдавать наиболее подходящие оборудование. Как это сделать? Нужен примерный код, а данные я впишу сам.
Atreides
Задание: составить программу построения графика функции на отрезке [f, 1.3] f(p)=3^2p+4p выделив шаг, где нет корня вертикальной штриховкой. Вот тут я написал прогу, она катит, но я не думаю, что она работает корректно. Подскажите, что не так и где ошибка?
Код
Program Graphik;
Uses graph, crt;
Function f(p:real):real;
Begin
f:=3*SQR(2*p)+4*p;
end;
const
gm:integer=1;
gd:integer=1;
d:real=1.3;
var ab,sh,mg,mv,c,rn:real;
begin
repeat
writeln(‘sh,c,mg,mv’);
readln(sh,c,mg,mv);
until c<d;
initgraph(gm,gd,’ ’);
line(0,100,320,100);
line(160,0,160,200);
ab:=c;
rn:=f(c);
moveto (160+round(c*mg),100-round(rn*mv);
while ab<=d do
begin
if f(ab)*f(ab+sh)<0 then
sh:=sh/10;
begin
line(160+round(ab+mg),100,160+round(ab+mg),100-round(f(ab)*mv));
end;
ab:=ab+sh;
rn:=f(ab);
lineto((160+round(ab*mg),100-round(rn*mv));
end;
repeat
until keypressed;
closegraph;
end.

Где с – начало отрезка, ав – аргумент, rn – функция, sh – шаг, mg – горизонт, mv – вертикаль, d – конец отрезка.
volvo
Atreides

Вычисление функции должно производиться вот так:
Код

Function f(p:real):real;
Begin
f:=Exp( (2*p) * Ln(3) ) + 4*p;
end;


То, что было у тебя - вычисляло f(p)=3*(2p)^2+4p
Atreides
Всё равно программа работает не корректно! При введение -12, 0.1, 50, 50 зависает. Может, я не те значения ввожу?
volvo
Atreides
Очень трудно разбираться в программе с такими именами переменных...
Atreides
Начало отрезка с=-12, шаг sh=0.1, mg и mv по 50 - горизонт и вертикаль.
volvo
Atreides
Смотри, что получается:
Код

while ab<=d do
 begin
   if f(ab)*f(ab+sh)<0 then sh:=sh/10;
   begin
     line(160+round(ab+mg),100,160+round(ab+mg),100-round(f(ab)*mv));
   end;
   ab:=ab+sh; { *** Здесь *** }
   rn:=f(ab);
   lineto((160+round(ab*mg),100-round(rn*mv));
 end;

У тебя шаг меньше нуля, AB становится отрицательным и ВСЕГДА меньше, чем D (поэтому и уходит все дальше и дальше к минус бесконечности...)

P.S. Ты просто перепутал Sh и C местами - вводи 0.1, -12, 50, 50
Atreides
Штриховка рисуется на месте, где нет корня, правильно?
И как подключить графический модуль или где скачать можно?
volvo
Atreides
Как же ты проверял программу без графики?
Atreides
У меня на домашнем установлен 7-мой Паскаль без графики, а в институте 3-ий, но с графикой, доступ к институтскому у меня только два раза в неделю, поэтому и хочу дома настроить, что бы сразу проверять и не тянуть.
volvo
Здесь можно найти модули TP/BP (в том числе и Graph)
Atreides
А конкретнее где скачать? Или может уже готовый Паскаль можно, где скачать? Я пробовал по директории адрес указывать, но он всё рано не видит модуль.
volvo
Atreides
Borland Pascal 7.0
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.