IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Интеграл + граффик
klem4
сообщение 29.04.2005 7:23
Сообщение #1


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Задание, посчитать интеграл, а потом построить график, по отдельности пашет, а вместе нет, у меня даже предположений нет почему, для графиков использовал шаблон Олег_З'а.

Исходный код
uses crt,graph;
const

{ OPTIONS }

shag=0.0001;

lgr = 3;

pgr = 10;

zcrtX=320;

zcrty=240;

mtrX=10;

mtrY=10;

colorG=15;

colorOXY=4;

OXYminX=-200;

OXYmaxX=200;

OXYminY=-200;

oxymaxY=200;

Var grDriver : Integer;

grMode : Integer;


x,y,dx,x1,x2,e,i : extended;


L : integer;

f : Text;


function Fx(x:real):real;

begin

Fx:=(exp(3*ln(x))+2*x+3)/(x+sqrt(x)); {Zdes' podintegralnoe virajenie.}

end;



procedure CountViaBar;

var

xx1,xx2:real;

c:longint;

begin

writeln('------------------------------------------------');

writeln('-->Metod srednih pramougolnikov.');

writeln('Vsego iteracii : ',round(abs(x2-x1)/e));

i:=0;

for c:=1 to round(abs(x2-x1)/e) do begin

write('iteraciaя ',c,chr(13));

xx1:=Fx(x1+c*e);

xx2:=Fx(x1+c*e+e);

i:=i+abs(xx1+xx2)/2*e;

end;

writeln('------------------------------------------------');

writeln('Integral=',i:3:6);

end;



procedure CountViaTrap;

var

xx1,xx2,xx3:real;

c:longint;

begin

writeln('------------------------------------------------');

writeln('-->Metod trapecii.');

writeln('Vsego iteracii:',round(abs(x2-x1)/e));

i:=0;

for c:=1 to round(abs(x2-x1)/e) do begin

write('Iteraciaя ',c,chr(13));

xx1:=Fx(x1+c*e);

xx2:=Fx(x1+c*e+e);

if xx2>xx1 then xx3:=xx1 else xx3:=xx2;

i:=i+abs(xx2-xx1)*e+abs(xx3)*e;

end;

writeln('------------------------------------------------');

writeln('Integral=',i:3:5);

end;
begin

clrscr;
writeln('------------------------------------------------');

writeln('-=Programma vi4islenia opredelennogo integrala=-');

writeln('Vvedite ishodnie zna4eniyaя:');

write('Na4alnoe zna4enie x (x1)=');Readln(x1);

write('Konexnoe zna4enie x (x2)=');Readln(x2);

write('To4nost vi4isleniyaя (e)=');Readln(e);

CountViaBar;

CountViaTrap;

writeln('------------------------------------------------');

writeln('Najmite lubuy klavishu ...');

repeat until keypressed;


grDriver:=Detect;

InitGraph(grDriver, grMode, '');

for L:=OXYminX to OXYmaxX do putpixel(zcrtX+L,zcrty,colorOXY);

for L:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-L,colorOXY);

x:=lgr;

assign(f,'OutFile');

{*} rewrite(f);


while x<=pgr do

begin

y:=(x*x*x+2*x+3)/(x+sqrt(x));

putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),colorg);

x:=x+shag;

writeln(f,'x=',x:1:2,' y=',y:1:2);

end;

close(f);

readkey;

closegraph;

END.


заранее спасибо.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
volvo
сообщение 29.04.2005 10:21
Сообщение #2


Гость






Цитата(klem4 @ 29.04.05 7:23)
Задание, посчитать интеграл, а потом построить график, по отдельности пашет, а вместе нет, у меня даже предположений нет почему

В чем именно заключается неправильная работа программы? Хммм... Попробую догадаться: ты не видишь график, правда?

Причина:
writeln('Najmite lubuy klavishu ...');
repeat until keypressed;
...
{ отрисовка }
...
readkey; { вот то, что ты ввел в repeat until прочитано... }



... и естественно, ждать следующей клавиши никто не собирается... smile.gif

Есть 2 выхода:
1.
writeln('Najmite lubuy klavishu ...');
repeat until keypressed;
while keypressed do readkey; { очищаешь буфер клавиатуры }
...


2.
writeln('Najmite klavishu <ENTER>...');
readln;
 К началу страницы 
+ Ответить 
klem4
сообщение 29.04.2005 14:24
Сообщение #3


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Спасибо.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"