Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2009, 15:36   #1
SIGMA
 
Регистрация: 20.05.2009
Сообщений: 3
Восклицание Помогите...девушке=)

Курсач нужно сделать...
так вот...нужно решить уравнение "(е^t)-x" в паскале методом эйлера и Эйлера мод,вывести 2 графика.
мне одим оч хороший знакомый решил...но блин препод не поверит что я(блондинка по характеру) смогла этакое вытворить...поэтому мне вв нужно упростить...собствено вот.
program kursa1;
uses crt,graph;
const
x0c=1; {znachenie fynkzii v tochke 1}
hc=0.1; {shag}
t0c=1; {min znacenie argumenta}
tkc=2; {max znacenie argumenta}

var

masx:array[0..1011] of real;
Eiler:array[0..1011] of real;
EilerMod:array[0..1011] of real;
i,N,dy:integer;
st:string;
gd,gm,err:integer; {grafik init}
xmax,ymax:integer; {grafik var}
dyp,dym,ky,dxp,dxm,kx:real;
xo,yo:integer;
xm,ym:integer;
qy,nx,ny:integer;
key:char;
xp,yp:real;
x0,h,t0,tk:real; {VXODNIE DANNIE TYT!!!}



function fen1(tf,xf:real):real;
var rez:real;
begin
rez:=exp(tf)-xf;
fen1:=rez;
end;

procedure eileri(x0s,xk,y0:real);
var i:integer; xi:real;
begin
for i:=0 to N-1 do
begin
xi:=x0s+i*h;
masx[i+1]:=xi;
Eiler[i+1]:=Eiler[i]+h*fen1(xi,Eiler[i]);
end;
end;

procedure EilerM(x0s,xk,y0:real);
var i:integer; xi:real;
begin
for i:=0 to N do
begin
xi:=x0s+i*h;
EilerMod[i+1]:=EilerMod[i]+h*Fen1(xi+h/2,EilerMod[i]+h/2*Fen1(xi-h,EilerMod[i]));
end;
end;


procedure Graffik;
begin
gd:=detect;
Initgraph(gd,gm,'');
err:=graphresult;
if err<>0 then
begin
writeln('InitGpraph failure, error:',err,'. Gprah-driver not found. Stopping program..');
readln;
halt;
end;
setcolor(yellow);
xmax:=getmaxx;
ymax:=getmaxy;
if x0<0 then
begin
dy:=-10;
ym:=ymax-60;
yo:=20;
end
else
begin
dy:=10;
ym:=20;
yo:=ymax-60;
end;
xo:=85;
xm:=xmax-20;
outtextxy(10,ymax-30,'Dlya vivoda tablici s dannimi jmi T, dlya vixoda jmi Q');
outtextxy(10,ymax-10,'Dlya vvoda drygix dannix jmi R');
setcolor(green);
setlinestyle(0,0,3);
line(xmax-185,ymax-30,xmax-155,ymax-30);
outtextxy(xmax-145,ymax-35,'Funczia Eilera');
setcolor(red);
line(xmax-185,ymax-10,xmax-155,ymax-10);
outtextxy(xmax-145,ymax-15,'Funczia EilerMod');
setlinestyle(0,0,1);
dxp:=xm-xo; {chislo pixelei na shkaly}
dxm:=n; {chislo otrezkov na shkaly}
kx:=abs(dxp/dxm);{chislo pixelei na otrezok}
nx:=n; {chislo otrezkov po x}
setlinestyle(1,0,1);
setcolor(white);
{SHKALA PO X}
for i:=1 to nx do
begin
xp:=trunc(xo+kx*i);
line(trunc(xp),yo+6,trunc(xp),ym);
str(masx[i]:3:1,st);
outtextxy(trunc(xp-10),yo+dy,st);
end;
setlinestyle(0,0,1);
line(xo,yo,xm,yo);
setlinestyle(1,0,1);
{/SHKALA PO X}
dyp:=yo-ym; {vsego pixelei}
dym:=n; {vsego otrezkov}
ky:=dyp/dym; {kolichestvo pixelei v otrezke}
ny:=n; {vsego otrezkov na shkaly}
{SHKALA PO Y}
if abs(eiler[n])>abs(eilermod[n]) then
qy:=round(eiler[n])
else qy:=round(eilermod[n]); {maximalnoe znachenie po y}
for i:=0 to n do
begin
yp:=yo-ky*i;
line(xo-6,trunc(yp),xm,trunc(yp));
str(qy/n*i:4:1,st);
outtextxy(xo-80,trunc(yp),st);
end;
setlinestyle(0,0,1);
line(xo,yo,xo,ym);
{/shkala po y}
yp:=dyp/qy; {kolichestvo tochek v mat edinice}
{RISUEM EILERA} {GREEN}
setlinestyle(0,0,3);
setcolor(green);
for i:=0 to n-1 do
begin
circle(round(xo+i*kx),round(yo-(eiler[i])*yp),2);
line(round(xo+i*kx),round(yo-(eiler[i])*yp),round(xo+(i+1)*kx),round(yo-(eiler[i+1])*yp));
end;
circle(round(xo+n*kx),round(yo-(eiler[n])*yp),2);
{/RISUEM EILERA}
{RISUEM EILERMOD}
setcolor(red);
for i:=0 to n-1 do
begin
circle(trunc(xo+i*kx),trunc(yo-(eilermod[i])*yp),2);
line(trunc(xo+i*kx),trunc(yo-(eilermod[i])*yp),trunc(xo+(i+1)*kx),trunc(yo-(eilermod[i+1])*yp));
end;
circle(trunc(xo+n*kx),trunc(yo-(eilermod[n])*yp),2);
{/RISUEM EILERMOD}

end;
SIGMA вне форума Ответить с цитированием
Старый 27.05.2009, 15:38   #2
SIGMA
 
Регистрация: 20.05.2009
Сообщений: 3
По умолчанию

procedure table;
begin
{closegraph;}
{restorecrtmode;}
textmode(lastmode);
{clrscr;}
writeln(' ___________________________________ _____');
writeln('| X | Eiler | EilerM |');
writeln('|___________|_____________ _|_____________|');
writeln('| | | |');
for i:=1 to n do
writeln('|',masx[i]:8:2,' | ',Eiler[i]:11:5,' | ',EilerMod[i]:11:5,' |');
writeln('|___________|_____________ _|_____________|');
writeln;
writeln('Jmi G dlya vivoda grafika');
writeln('Jmi R dlya vvoda drygix vxodnix dannix');
writeln('Jmi Q dlya vixoda');
end;

{procedure vvodim(ti,tic:real);
begin
st:='';
err:=0;
readln(st);
val(st,ti,err);
if err<>0 then
begin
writeln('Vvedeno nevernoe znacenie (ne chislennoe), ispolzuem Default');
ti:=tic;
end;
writeln(ti:7:2);
st:='';
end; }

procedure dannie;
begin
textmode(lastmode);
{t0:=t0c;
tk:=tkc;
h:=hc;
x0:=x0c;}
writeln;
writeln('Vvedite znacenie pervoi tochki argumenta (DEFAULT=',t0c:5,')');
st:='';
err:=0;
readln(st);
val(st,t0,err);
if err<>0 then
begin
writeln('Vvedeno nevernoe znacenie (ne chislennoe), ispolzuem Default');
t0:=t0c;
end;
{ vvodim(t0,t0c);}
writeln;
writeln('Vvedite znacenie poslednei tochki argumenta (DEFAULT=',tkc:5,')');
{ vvodim(tk,tkc); }
st:='';
err:=0;
readln(st);
val(st,tk,err);
if err<>0 then
begin
writeln('Vvedeno nevernoe znacenie (ne chislennoe), ispolzuem Default');
tk:=tkc;
end;
writeln;
writeln('Vvedite znachenie shaga argumenta (DEFAULT=',hc:5:2,')');
st:='';
err:=0;
readln(st);
val(st,h,err);
if err<>0 then
begin
writeln('Vvedeno nevernoe znacenie (ne chislennoe), ispolzuem Default');
h:=hc;
end;
{ vvodim(h,hc); }
writeln;
writeln('Vvedite znacenie funczii v pervoi tochke (DEFAULT=',x0c:5,')');
st:='';
err:=0;
readln(st);
val(st,x0,err);
if err<>0 then
begin
writeln('Vvedeno nevernoe znacenie (ne chislennoe), ispolzuem Default');
x0:=x0c;
end;
{ vvodim(x0,x0c); }
{writeln(h:5:2);}
readln;
Eiler[0]:=x0;
EilerMod[0]:=x0;
N:=trunc(abs(tk-t0)/h)+1;
writeln('N=',n);
writeln('t0=',t0:5:2);
writeln('tk=',tk:5:2);
writeln('h=',h:5:2);
readkey;
Eileri(t0,tk,x0);
EilerM(t0,tk,x0);
end;

procedure vetka;
begin
repeat
key:=readkey;
if key='r' then
begin
clrscr;
dannie;
table;
vetka;
end
else
if key='t' then
begin
{closegraph;}
table;
vetka;
end
else
if key='g' then
begin
{SetGraphMode(detect)}
graffik;
vetka;
end;
until key='q';
halt;
end;


{TELO PROGRAMMI NACHALO}
begin

clrscr;
dannie;
table;
vetka;

end.
надеюсь на помощ...завтра сдавать
SIGMA вне форума Ответить с цитированием
Старый 27.05.2009, 19:42   #3
diliana
Форумчанин
 
Аватар для diliana
 
Регистрация: 24.05.2009
Сообщений: 119
По умолчанию

SIGMA

вы бы хоть код отформатировали, как принято,читать же тяжело
diliana вне форума Ответить с цитированием
Старый 29.05.2009, 23:34   #4
olesyaA
Новичок
Джуниор
 
Регистрация: 29.05.2009
Сообщений: 14
По умолчанию

помогите пожалуйста!мне надо га си++ написать программу, кторая при вводе какогото арифмитического действия выдает как бы дерево разложения. например (х+5)*(3-(а-8)) и надо чтоб получилось * дальше 2 стрелочки в одной плюс (и из нее отходит опять 2 стрелочки в одной 5 в другой х, вот ) а в другой минус потом из нее 2 стрелочки в одной а в другой минус от нее еще 2 стрелочки в одной а в другой 8, ну короче разложение такое!!
olesyaA вне форума Ответить с цитированием
Старый 30.05.2009, 00:24   #5
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Польская запись.
Evgeniy26 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите девушке с ассемблером supersuper2 Помощь студентам 1 02.04.2009 19:17
Помогите, пожалуйста, девушке... Pushinka Microsoft Office Access 18 06.06.2008 00:03
Помогите девушке с простеньким VBA! yanka Microsoft Office Excel 6 06.03.2008 00:35