Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.217.190.58] |
|
Страницы: (5) [1] 2 3 ... Последняя » все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
помогите построить график на любом языке программирования для функции (см. прикрепленный файл - там уже график есть - в маткаде получила, надо такой же на паскале или в др. среде получить):
то есть даны промежутки и два значения Im=5.3 и Im=-5.37. Я пыталась построить - нашла пример для лазуруса и набрала, но он чего-то не хочет работать. Ну хоть схемку накидайте или саму программку, плиззз. Прикреплённый файлзадание_функции.jpg (26.45 Кбайт, скачиваний: 534) |
Сообщ.
#2
,
|
|
|
Цитата Prutvel @ То есть, присоединить сюда проект для Лазаруса, который ты уже набрала - нельзя было, мы должны сделать ту же работу, с нуля набирать, тестировать, вместо того, чтобы (возможно) исправить один символ... Ну-ну... Подождем, может и найдется тот, у кого лишнего времени навалом... Я пыталась построить - нашла пример для лазуруса и набрала, но он чего-то не хочет работать. |
Сообщ.
#3
,
|
|
|
посмотрите, пожалуйста:
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 Form1: TForm1; t0,y0,tk,yk,a,b:real; t,y:array[0..1000] of real; u,v:array [0..1000] of integer; N:integer; implementation functiion I(t:real):real; begin T1:=1/f1; T2:=1/f2; T:=T1+T2; if mod(t,T)<tau then Result:=Im; if (mod(t,T)>=tau) and (mod(t,T)<T1) then Result:=-Im; if (mod(t,T)>=T1) and (mod(t,T)<(T1+tau)) then Result:=Im; if (mod(t,T)>=(T1+tau) and (mod(t,T)<T) then Result:=-Im; end; procedure Graphica(a,b:real); const kt=5;ky=5; var dt,dy,c,d,g,h,max,min:real; i,tempt,tempy:integer; s:string; begin h:=(b-a)/(N-1); t[0]:=a;y[0]:=I(t[0]); for i:=1 to N do begin t[i]:=t[i-1]+h; y[i]:=I(t[i]); end; 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; c:=(Form1.Image1.ClientWidth-t0-tk)/(b-a); d:=t0-c*t[0]; g:=(Form1.Image1.ClientHeight-y0-yk)/(min-max); h:=yk-g*max; for i:=1 to N do begin u[i]:=trunc(c*x[i]+d); v[i]:=trunc(g*y[i]+h); end; Form1.Image1.Canvas.Color:=clGray; Form1.Image1.Canvas.Pen.Mode:=pmNot; Form1.Image1.Canvas.MoveTo(u[0],v[0]); Form1.Image1.Canvas.Pen.Width:=2; Form1.Image1.Canvas.Pen.Color:=clGreen; for i:=1 to N do Form1.Image1.Canvas.LineTo(u[i],v[i]); Form1.Image1.Canvas.Pen.Width:=1; Form1.Image1.Canvas.Pen.Color:=clBlack Form1.Image1.Canvas.MoveTo(trunc(t0),trunc(h)); if (trunc(h)>yk) and (trunc(h)<trunc(Form1.Image.ClientHeight-y0)) then Form1.Image1.Canvas.LineTo(trunc(Form1.Image1.ClientWidth-tk),trunc(h)); Form1.Image1.Canvas.MoveTo(trunc(d),trunc(yk)); if (trunc(d)>0) and (trunc (trunc(d),trunc(Form1.Im ag1.ClientHeight-y0)); dt:=(Form1.Im age1.ClientWidth-t0-tk)/KT3; for i:=0 to KT3 do begin if (i=0) or (i=KT3) then Form1.Image1.‘anvas.Pen.Style:=psSolid else Ferm1.Image1.Canvas.Pen.Style:=psDash; Form1.Image1.Canvas.MoveTo(trunc(t0+i*dt),trunc(yk)); Form1.Image1.Canvas.LineTo(trunc(t0+i*dt),trunc(Form1.Image1.ClientHeight-y0)); end; dy:=(Form1.Image1.ClientHeight-y0-yk)/KY; for i:=0 to KY do begin if (i=0) or (i=KY) then Form1.Image1.‘anvas.Pen.Style:=psSolid else Form1.Image1.‘anvas.Pen.Style:=psDash; Form1.Image1.‘anvas.MoveTo(trunc(t0),trunc(yk+i*dy)); Form1.Image1.‘anvas.LineTo(trunc(Form1.Image1.ClientWidth-tk),trunc(yk+i*dy));end; Form1.Image1.‘anvas.Pen.Style:=psSolid; dt:=(b-a)/KT3; tempy:=trunc(Form1.Image1.ClientHeight-y0+1); for i:=0 to KT3 do begin str(a+i*dt:5:2,s); tmpt:=trunc(t0+i*(Form1.Image1.ClientWidtg-t0-tk)/KT3-1; Form1.Image1.‘anvas.TextOut(trunc(d)-5,tempy,'0'); dy:=(max-min)/KY; tempt:=5; for i:=1 to KY do begin str(ma x-i*dy:5:2,s); tempy:=trunc(yk-5+i*( Form1.Image1.ClientHeight-y0-yk)/KY); Form1.Image1.‘anvas.TextOut(tempt,tempy,s);end; if (trunc(h)>yk) and trunc(h)<Form1.Image1.ClientHeight-1) then Form1.Image1.‘anvas.TextOut(tempt+1,trunc(h)-5,'0'); tempt:=trunc(t0+i*( Form1.Image1.ClientWidth-t0-tk)/2); Form1.Image1.‘anvas.TextOut(temp1,'График');end; procedure TForm1.FormCreate(Sender:TObject); var s:string; kod:integer; begin N:=300,t0:=40;y0:=40;tk:=40; yk:=40; s:=InputBox('введите левую границу',-1); val(s,a,kod=0; until kod=0 repeat s:=InputBox('Введите правую границу','1') val(s,b,kod) until kod=0; end; procedure TForm1.ButtonClick(Sender:YObject); begin Graphica(a,b); end; Initialization; end. |
Сообщ.
#4
,
|
|
|
Цитата Prutvel @ посмотрите, пожалуйста: Это не проект. Это один модуль. А вас просили весь проект присоединить. |
Сообщ.
#5
,
|
|
|
В приведённом коде будто нарочно сделаны опечатки, которые видны невооружённым глазом. Проект, скорее всего, чужой.
Добавлено Операция mod действует только на целых числах. |
Сообщ.
#6
,
|
|
|
Цитата Romtek @ В приведённом коде будто нарочно сделаны опечатки, Добавлено а не подскажете конкретно - где. |
Сообщ.
#7
,
|
|
|
Цитата Prutvel @ а не подскажете конкретно - где. Начиная со 2-й строки... Далее смотреть лень. И незачем, я думаю... Проект вы не прикладываете, выложив какую-то мешанину. О чем с вами разговаривать? |
Сообщ.
#8
,
|
|
|
если Вы знаете, как это делать, написали бы хотя бы алгоритм или примерчик какой-нибудь сбросили бы... пожалуйста
|
Сообщ.
#9
,
|
|
|
Цитата Prutvel @ написали бы хотя бы алгоритм Так вот как раз алгоритм хотелось бы от вас увидеть. А помочь с программой можно. |
Сообщ.
#10
,
|
|
|
Цитата Prutvel @ Да, пожалуйста!а не подскажете конкретно - где. 1. Цитата Prutvel @ interfaceace 2. Цитата Prutvel @ functiion I(t:real): real; 3. Цитата Prutvel @ Form1.Image1.‘anvas.Pen.Style:=psSolid else Ferm1.Image1.Canvas.Pen.Style:=psDash; Добавлено Prutvel, прости, а ты синтаксис Паскаля знаешь? Сложилось впечатление, что вовсе нет. Добавлено Цитата Prutvel @ Такую чушь может написать только человек, ничего не понимающий в Паскале. За Делфи даже и речи нет. functiion I(t:real):real; begin T1:=1/f1; T2:=1/f2; T:=T1+T2; if mod(t,T)<tau then Result:=Im; if (mod(t,T)>=tau) and (mod(t,T)<T1) then Result:=-Im; if (mod(t,T)>=T1) and (mod(t,T)<(T1+tau)) then Result:=Im; if (mod(t,T)>=(T1+tau) and (mod(t,T)<T) then Result:=-Im; end; Начиная от синтасиса и заканчивая знанием базовых понятий. Цитата Prutvel @ N:=300,t0:=40;y0:=40;tk:=40; yk:=40; s:=InputBox('введите левую границу',-1); val(s,a,kod=0; |
Сообщ.
#11
,
|
|
|
Цитата Оззя @ Цитата Prutvel @ написали бы хотя бы алгоритм Так вот как раз алгоритм хотелось бы от вас увидеть. А помочь с программой можно. Дело в том, что по заданию, надо сделать численный расчет напряжения на катушке идуктивности в цепи переменного тока прямоугольной формы, где L=0.1 Гн - индуктивность, Im=0.57 А - амплитуда тока, tau=62 мс - длительность импульса. Частота на четных периодах f1=5.37 Гц, на нечетных периодах f2=8.06 Гц. Периоды T1 и T2 равны. Я сделала это в маткаде, получилось, что сам график-то задается как система: то есть функция I(t) принимает вообще говоря 2 значения, это Im и -Im, но при разных промежутках времени, то есть получается так: Im if mod(t,T)<tau -Im if (mod(t,T)>=tau) and (mod(t,T)<T1) I(t):= Im if (mod(t,T)>=T1) and (mod(t,T)<T1+tau) -Im if (mod(t,T)>=T1+tau) and (mod(t,T)<T) Так мы задали в маткаде этот ток, а потом приняли, что i:=0..300, dt:=T/100, t1:=i*dt; И, следовательно, получили отсюда график по точкам: написали Ii(ti), то есть получили точки. Так вот, то есть у меня есть точки...А дальше - надо построить такой же график на языке высокого уровня ... Помогите, пожалуйста..., очень надо |
Сообщ.
#12
,
|
|
|
Напиши функцию I(t), которая на входу получала бы необходимые параметры, а на выходе - некоторое значение. С графикой поможем.
Только функция должна быть правильной и компилироваться! |
Сообщ.
#13
,
|
|
|
Цитата Romtek @ Напиши функцию I(t), которая на входу получала бы необходимые параметры, а на выходе - некоторое значение. С графикой поможем. Только функция должна быть правильной и компилироваться! Спасибо, сейчас попробую. |
Сообщ.
#14
,
|
|
|
У меня, почему-то, пишет ошибки
Я с функциями во фри паскале не работала раньше... Подскажите, что не так, пожалуйста. Прикреплённый файлфри_паскаль.jpg (81 Кбайт, скачиваний: 485) |
Сообщ.
#15
,
|
|
|
Что делает mod в Маткаде?
Лучше прикладывайте не скриншот, а текст программы. Добавлено Заметьте, что: Цитата Romtek @ Операция mod действует только на целых числах. |