
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.207] |
![]() |
|
Страницы: (5) 1 2 [3] 4 5 все ( Перейти к последнему сообщению ) |
Сообщ.
#31
,
|
|
|
Диспетчер задач -> ctrl alt delete
|
Сообщ.
#32
,
|
|
|
нет, что-то он все равно эту ошибку выводит
![]() ... ну ладно, спасибо вам все равно большое... Ну предположим, ошибки нет и программа компилируется. Что делать дальше, как строить графики? |
![]() |
Сообщ.
#33
,
|
|
Цитата Prutvel @ А дальше, предположим, что графики ты сама умеешь строить.Ну предположим, Продвигаться дальше будем? |
Сообщ.
#34
,
|
|
|
![]() unit Unit1; interfaceace uses Classes,SysUtils,LResources,Forms,Graphics,Dialogs,Extctrls,Stdctrls; function I(t:real):real; procedure Graphica (a,b:real); type TForm1=class(TForm); Button1: TButton; Image1: TImage; procedure ButtonClick(Sender:TObject); procedure FormCreate(Sender:TObject); private public end; const Im=0.57,tau=0.062; L=0.1; f1=5.37; f2=8.06; var |
![]() |
![]() |
|
Перенёс сообщение в Wiki: Построение графика функции.
|
Сообщ.
#36
,
|
|
|
спасибо, сейчас попробую...
Добавлено Цитата Romtek @ Набросок порядка действий такой: Пусть график вида y = f(x) должен размещаться на поверхности холста с размерами CanvasWidth на CanvasHeight. Тогда перед его построением надо: 1. Определить граничные значения входных параметров (ось X): DataXmax, DataXmin. 2. Определить граничные значения выходных параметров (ось Y): DataYmax, DataYmin. 3. Найти коэффициент масштабирования данных для оси X по формуле: Kx = CanvasWidth / (DataXmax - DataXmin) 4. Найти коэффициент масштабирования данных для оси Y по формуле: Ky = CanvasHeight / (DataYmax - DataYmin) WHILE x < DataXmax DO BEGIN y := f(x); px := PixelCoordX(x); py := PixelCoordX(y); LineTo(px, py); (* проводим линию до заданной точки от установленного ранее курсора (процедурами MoveTo/LineTo) *) x := x + deltaX END;[/CODE] а как их найти? ![]() |
Сообщ.
#37
,
|
|
|
а так полагаю
max:=y[0]; min:=y[0]; for i:=1 to N do begin if y[i]>max then max:=y[i]; if y[i]<min then min:=y[i]; end; |
![]() |
Сообщ.
#38
,
|
|
Цитата Prutvel @ max:=y[0]; min:=y[0]; for i:=1 to N do begin if y[i]>max then max:=y[i]; if y[i]<min then min:=y[i]; end; только границы надо соблюдать. Или от 1 до N, или от 0 до N-1. Иначе будет ошибка. |
Сообщ.
#39
,
|
|
|
Function i(t:Double): Double;
скажите пожалуйста, так правильно? Const Im=0.57; L=0.1; tau=62; f1=5.37; f2=8.06; T1=186;T2=124; T3=310; var t,I:array[0..1000] of real; begin if fmod(t,T3)<tau then i:=Im; if (fmod(t,T3)>=tau) and (fmod(t,T3)<T1) then I:=-Im; if (fmod(t,T3)>=T1) and (fmod(t,T3)<(T1+tau)) then I:=Im; if (fmod(t,T3)>=T1+tau) and (fmod(t,T3)<T3) then I:=-Im; end; max:=i[0]; min:=i[0]; for k:=1 to N do begin if i[k]>max then max:=y[k]; if i[k]<min then min:=y[k]; end; |
![]() |
Сообщ.
#40
,
|
|
Не стоит спрашивать по каждой мелочи.
Компилятор сам подсказывает где верно, а где нет. Нужно на бумаге сначала свои мысли привести в порядок, тогда и на экране всё будет работать. Удачи! |
Сообщ.
#41
,
|
|
|
вы же обещали мне помочь с графикой...пожалуйста, помогите...
|
![]() |
Сообщ.
#42
,
|
|
Я и помогаю. Или мне за тебя сделать задание?
С чем не справляешься - спрашивай. Тут больше геометрии с математикой, чем программирования. |
Сообщ.
#43
,
|
|
|
Спасибо Вам большое! А не подскажете, Вы в каком паскале загружали программу Free или Turbo: почему-то у меня на компьютере не запускаются программы вообще - пишет ошибку error while linking, причем даже на правильно написанную программу. Я так подумала, он ведь ни одну программу мне вообще не запустил с того времени, как я его (Free Pascal) установила. В чем дело, не подскажете?
|
![]() |
Сообщ.
#44
,
|
|
Цитата Prutvel @ Подскажем. Только для начала ты зайди в Options -> Compiler -> Verbose, поставь там крестики на Warnings, Notes, Hints и General Info, нажми Ok, пересобери программу (Compile -> Build или Compile -> Make), и если опять не слинкуется - то нажми на F12 и покажи нам все те сообщения, которые тебе выдал компилятор. Иногда в них содержится подсказка, почему не линкуется.В чем дело, не подскажете? Кстати, какой компилятор у тебя? Версия, в смысле, какая? |
Сообщ.
#45
,
|
|
|
я написала программу. Пожалуйста, помогите ее довести до ума, чтобы паскаль не выводил ошибок:
program r6; Uses graph; Const GlColor=5; MtCount=5; MiCount=5; Dl:real=-2; Dr:Real=2; function FMod (a, b: real): real; begin FMOD:= a - b * Trunc(a / b); end; function i(t:real): real; Const Im=0.57; L=0.1; tau=62; f1=5.37; f2=8.06; T1=186;T2=124; T3=310; begin if fmod(t,T3)<tau then i:=Im; if (fmod(t,T3)>=tau) and (fmod(t,T3)<T1) then I:=-Im; if (fmod(t,T3)>=T1) and (fmod(t,T3)<(T1+tau)) then I:=Im; if (fmod(t,T3)>=T1+tau) and (fmod(t,T3)<T3) then I:=-Im; end; Var D,R:integer; iU,iD:real; begin Procedure CalciRange; Var I:LongInt; i,t:real; Begin iU:=f(Dl); iD:=iU; for k:=1 to GetMaxt begin t:=k*(Dr-Dl)/GetMaxt+Dl; i:=f(t); if iU<i then iU:=i; if iD>i then iD:=i; end; end; Procedure DrawKoord; var I:integer; t,i:integer; temp:string; Maxt,Maxi:integer; begin Maxt:=MtCount-1; Maxi:=MiCount-1; if (iU>0) and (iD<0) then begin i:=round(GetMaxi-GetMaxi*(-iD)/(iU-iD)); Line (0,i,GetMaxt,i); Line (GetMaxt-5,i-5,GetMaxt,i); Line (GetMaxt-5,i+5,GetMaxt,i); OutTextti(GetMaxt-10,i+10,'t'); i:=i+TextHeight('t'); end else if (iU>0) then i:=GetMaxi-TextHeight('1') else i:=0; for k:=0 to Maxt do begin str((k*(Dr-Dl)/Maxt+Dl):5:2,Temp); t:=Round (k*GetMaxt/Maxt); if (t+TextWidth(Temp)>GetMaxt) then x:=GetMaxt-TextWidth(Temp); OutTextti(t,i,Temp); end; if (Dl<=0) and (Dr>0) then begin t:=Round(GetMaxt*(-Dl/(Dr-Dl))); Line(t,0,t,GetMaxi); Line(t-5,5,t,0); Line(t+5,5,t,0); OutTextti(t+10,10,'i'); end else if (Dl<0) then begin if (Abs(iU)>Abs(iD)) then str(iU:5:2,Temp) else str (iD:5:2,Temp); t:=GetMaxt-TextWidth(Temp); end else t:=0; for k:=0 to Maxi do begin str((k*(iU-iD)/Maxi+iD):5:2,Temp); i:=GetMaxi-Round(k*GetMaxi/Maxi); if (i+TextHeight(Temp)>GetMaxi) then i:=GetMaxi-TextHeight(Temp); OutTextti(t,i,Temp); end; end; Procedure DrawGr; var I,i:LongInt; Temp:Real; Ot,Oi:Integeer; begin Ot:=1; Temp:=func((Dr-Dl)/GetMaxt+Dl)-iD; i:=Round(Temp*GetMaxi/(iU-iD)); Oi:=GetMaxi-i; SetColor(GlColor); for k:=1 to GetMaxt do begin Temp:=Func(k*(Dr-Dl)/GetMaxt+Dl)-iD; i:=Round(Temp*GetMaxi/(iU-iD)); i:=GetMaxi-i; Line(Ot,Oi,k,i); Ot:=k; Oi:=i; end; end; begin D:=Detect; InitGraph(D,R,'D:\BP\BGI'); CalciRange; DrawKoord; DrawGr; Readln; CloseGraph; end. |