я это видела, но что-то у меня не получается...он мне ошибку выдавал ошибочно арифметическое действие для ввода...в месте где я говорила с читать из файла.
Krjuger
29.05.2009 3:15
А ты выложи весь код уже с графикой,а то каким образом люди могут помоч найти тебе ошибку,если ты ее не показываеш.
Zopaa
29.05.2009 3:18
я творила творила, и закрыла не сохроняя..
Zopaa
29.05.2009 19:38
program gjhg;
uses graph;
const n=100;
xgmin=100;
xgmax=480;
ygmin=200;
ygmax=300;
h=10;
g=9.8;
m=4;
l=15;
v=10;
p=1000;
c=2;
k=3;
var driver,mode,i,xg,yg,xl,yl,j:integer;
a,b,ymin,ymax:real;
x,y:array[1..n] of real;
s:string;
var tm,fi0,fi1,w1,w0,t,dt:real;
f,e:text;
begin
dt:=0.00001;
tm:=20;
fi0:=pi/6;
w0:=0;
assign(f,'dta');
rewrite(f);
assign(e,'atd');
rewrite(e);
while t<tm dobeginif cos(fi0)<=(h/l) thenbegin
w1:=w0+(dt/sqr(l)/m)*(-c*fi0-m*g*sin(fi0)*l);
fi1:=fi0+w0*dt;
fi0:=fi1;
w0:=w1;
t:=t+dt;
endelsebegin
w1:=w0+(dt/m/sqr(l))*(-c*fi0-m*g*sin(fi0)*l-k*w0*sqr(l));
fi1:=fi0+w0*dt;
fi0:=fi1;
w0:=w1;
t:=t+dt;
end;
j:=j+1;
if j mod100000=0thenbegin
writeln(e,t,' ',fi1);
writeln(f,t,' ',w1);
j:=0;
end;
end;
close(f);
close(e);
end.
program gjhg;
uses graph;
const n=30;
xgmin=100;
xgmax=480;
ygmin=200;
ygmax=300;
var driver,mode,i,xg,yg,xl,yl,q:integer;
a,b,ymin,ymax:real;
x,y,z,u:array[1..n] of real;
s:string;
w1,t:real;
f,e:text;
begin
a:=0;
b:=20;
driver:=detect;
Initgraph(driver,mode, 'D:\work');
ClearDevice;
assign(f,'dta');
reset(f);
for i:=1to n do
readln(f,x[i],y[i]);
{for i:=1 to n do writeln(x[i],y[i]); }
assign(e,'atd');
reset(e);
for i:=1to n do
readln(e,z[i],u[i]);
{for i:=1 to n do writeln(z[i],u[i]); }
ymax:=y[1];
for i:=2to n doif y[i]>ymax thenbegin
ymax:=y[i];
end;
ymin:=y[1];
for i:=2to n doif y[i]<ymin thenbegin
ymin:=y[i];
end;
rectangle(xgmin,ygmin,xgmax,ygmax);
q:=0;
i:=30;
while q<1dobeginif frac((xgmax-xgmin)/i)=0then
q:=i else i:=i+1;
end;
xl:=xgmin;
while xl<xgmax dobegin
Line(xl,ygmin,xl,ygmax);
xl:=xl+q;
str(xl,s);
OutTextXY(xl-40,ygmin+110,s);
end;
q:=0;
i:=30;
while q<1dobeginif frac((ygmax-ygmin)/i)=0then
q:=i else i:=i+1;
end;
yl:=ygmin;
while yl<ygmax dobegin
Line(xgmin,yl,xgmax,yl);
yl:=yl+q;
str(yl,s);
OutTextXY(xgmin-25,yl-6,s);
end;
xg:=round(xgmin+(x[1]-a)/(b-a)*(xgmax-xgmin));
yg:=round(ygmax-(y[1]-ymin)/(ymax-ymin)*(ygmax-ygmin));
Moveto (xg,yg);
for i:=2to n dobegin
xg:=round(xgmin+(x[i]-a)/(b-a)*(xgmax-xgmin));
yg:=round(ygmax-(y[i]-ymin)/(ymax-ymin)*(ygmax-ygmin));
Lineto (xg,yg);
end;
OutTextXY(ygmin-100,xgmin+80,'fi');
OutTextXY(ygmax+190,xgmax-180,'t');
readln;
closegraph;
end.
вот две программы рисуется график, на нем же надо построить график по данным из второго файла, а внизу подписать значения...как это зделать..у меня нервов больше не хватает, помогите кто чем может..
Zopaa
30.05.2009 3:26
ну кто-нибудь...ну не получается у меня...
Krjuger
30.05.2009 3:34
Ну ты хоть напиши,что имено не работает,не запускается,выводин неправильно или что?плюс ты хотяб нашипи,что у тебя в файле то написано,или помогающим тебе угадать надо?
Zopaa
30.05.2009 3:43
ну в программе видно, в файл f записывается t и w1(в данном случае это у меня время и скорость ), а в файл e записывается t и fi1(время и угол) . все работает, но пока написано только для построения одного графика по данным файла f. теперь нужно построить на том же графике, ну или на другом, по данным файла e.+ надо внизу и сбоку подписать значения...вот...у меня уже мозг перестал думать после всего что надумала, а сдавать в понедельник..
Lapp
30.05.2009 8:47
Дорогая Zopaa (кхм..), очень тебе не повезло с ником((. Кто тебе такой присоветовал? Плюнь ему в лицо - скажи, я просил. Очень он тебе вредит. Я много раз порывался тебе ответить, но как подумаю, с чем буду разговаривать - сразу желание пропадает. И, думаю, не один я так. Но вот, пересилил, вроде. Если в середине ответа вырвет - не обессудь, все усилия прилагаю, чтоб сдержаться..
Давай с начала. Прога, которая делает файлы, gjhg (тебе специально хочется, чтоб другие время тратили на хотя бы чтение таких названий??), вылетает у тебя по Range Check. Включи себе в опциях эту проверку и никогда не выключай, иначе годы потратишь, чтоб понять, почему у тебя вдруг программа не работает. Вылет в строке:
j:=j+1;
, и это естественно. Либо сделай j типа LongInt, либо (лучше) убери вообще j и сравнивай непосредственно t.
Дальше - зачем тебе в ней юнит Graph? Выброси, лишний. Все, больше не могу... извини... может, попозже... кто не спрятался - я не виноват!!
Lapp
30.05.2009 10:00
Уважаемая Zopaa, объясни еще раз - чего ты хочешь? Извини, конечно, что прошу тебя тратить время не по прямому назначению, но не могла ли бы ты сказать поточнее, что тебе нужно? Вот твоя продукция (не решаюсь тут назвать нужным словом):
В нем все так,но как я понял ей надо график на графике или график под графиком,только я не понимаю,если у нее строится для первого графика,почему не строится для втрого.А вообще чуть чуть не так(максимальные значения не выводятся а сразу пишуться названия осей),но это лиш как я понимаю,сам автор критериев вообще не дал.
Zopaa
30.05.2009 16:34
во-первых я не могу сооброзить как построить второй график, другим цветом на том который сейчас(чтобы была вторая линия), во-вторых подписи под графиком(всмысле цифры) какие-то левые, я так думаю что мне надо те значения по которым строится...вобще мне надо как-то так сделать чтобы было красиво...
Krjuger
30.05.2009 20:17
Вообще главная задача программы,чтобы работала,насчет красиво,тогда поясни,что в твоем понимании красиво.Цифры как раз те по которым стоится.
Максимальный номер цвета, воспринимаемый адаптером в текущем графическом режиме, может быть получен при помощи функции GetMaxColor : Word На экране всегда различаются цвет фона и цвет пера. Все процедуры изображения фигур, если не содержат в себе явной установки цвета, рисуют эти фигуры цветом пера, который устанавливается процедурой SetColor(Color : Word). Константа Число Цвет Black 0 Черный Blue 1 Синий Green 2 Зеленый Cyan 3 Голубой Red 4 Красный Magenta 5 Фиолетовый Brown 6 Коричневый LightGray 7 Ярко-серый DarkGray 8 Темно-серый LightBlue 9 Ярко-синий LightGreen 10 Ярко-зеленый LightCyan 11 Ярко-голубой LightRed 12 Ярко-красный LightMagena 13 Ярко-фиолетовый Yellow 14 Желтый White 15 Белый Захочеш фон поменять.SetBkColor( Color :Word)
Какой второй график?Ты как раз и строиш второй график.Лап скрин привел даже с результатом,или тебе надо время от скорости?,а вообще я бы посовеловал создать процедуру начертания графиков и дальше в зависимости от параметров строить,в твоем слушае, как параменты, поменяются файлы и значения осей.
volvo
30.05.2009 20:24
Цитата
Blink 128 Мерцание
Это что за фигня? Нет мерцания в граф. режимах... Не надо путать Crt и Graph...
Цитата
во-первых я не могу сооброзить как построить второй график, другим цветом на том который сейчас(чтобы была вторая линия), во-вторых подписи под графиком(всмысле цифры) какие-то левые
Во-первых, не надо все сваливать в одну куче: оформила бы построение графика из файла отдельной процедурой - было бы по-человечески, и не надо копировать код для построения второго графика, и отлаживать надо один раз, а не 2. Ты же предпочла сделать все через ... рекурсию (Lapp, я не мог удержаться, извини ), привязать все к каким-то магическим цифрам, что ж ты хочешь теперь?
А во-вторых, по-хорошему файл, по которому ты строишь график, должен содержать всю необходимую информацию для его построения, и границы по оси абсцисс/ординат, и сами значения. А дело программы - только отобразить эти данные, а не вычислять их...
Krjuger
30.05.2009 20:35
Цитата
Нет мерцания в граф. режимах... Не надо путать Crt и Graph...
Дадада,убрал,просто отаблицу самому было ленно писать скопировал,а последнюю стоку проглядел...
Lapp
31.05.2009 10:40
Цитата(Krjuger @ 30.05.2009 17:17)
насчет красиво,тогда поясни,что в твоем понимании красиво.
Krjuger, ты о чем вообще?.. Мне представляется, что автор как нельзя лучше изложила свою концепцию красоты, назвав себя ником Zopaa..
Krjuger
31.05.2009 14:56
Lapp,ну знаеш ли,мой ник тоже не блещет красотой,а то из-за чего я его получил,это не моя внешность(дядя фреди был не шипко красивеньким),а некоторые события....Ну а ник создателя темы,взможно отражает ее состояние психологическое.....Ну типа сессия долги сдавать надо а тут полная....... да еще и задачу сделать не может тоже в ......пе,и причина по которой она пришла на форум это .....,а может она считает эту часть своего тела самой привлекательность и привликает к ней внимание.
sheka
31.05.2009 15:35
Цитата(Krjuger @ 31.05.2009 10:56)
привликает к ней внимание.
смайлы в тему, особенно второй! (извините);
скажите, при чем тут файлы, и что они должны содержать и в каком виде? раза 3 перечитал тему и не понял ни про файди ни вообще в чем проблема уважаемой .... объясните пожалуйста.
Krjuger
31.05.2009 15:41
Ну как я понял она в первом куске вычисляет координаты точек и записывает их в 2 файла(первый скорость-время,второй угол время)ну и в общем ей надо их оба вывести один на другом,причем ее программа спокойно выводит один график,но ей надо чтобы КРАСИВО......и чтобы оба были друг на друге,либо друг под другом(по моему первый вариант даже бред(зачем зависимость угла и зависимость скорости от времени на одном графике рисовать.)
sheka
31.05.2009 16:00
.... , разделяй программу на логические блоки - процедуры и ф-ции, выделяй отступы - ничего не понятно.
volvo, я где-то видел ссылку по которой объяснялось как вмонтировать графические файлы в ехе, не мог бы ее скинуть?
Lapp
31.05.2009 16:09
Цитата(sheka @ 31.05.2009 13:00)
вмонтировать графические файлы в ехе
Что ты имеешь в виду под графическими файлами?.. bgi? И зачем тебе это здесь? Уточни, плз.
volvo
31.05.2009 16:11
Цитата
как вмонтировать графические файлы в ехе
Очень просто, так же, как и вмонтировать драйверы в EXE-шник: преобразовать изображение с помощью BINOBJ в формат OBJ-файла, и прилинковать его к программе через {$L PIC.OBJ}, а зачем тебе это понадобилось?
sheka
31.05.2009 16:36
Цитата(Lapp @ 31.05.2009 12:09)
Что ты имеешь в виду под графическими файлами?.. bgi?
да, bgi,tpu итд.
просто если прога готова, то с ней надо в папке носить эти файлы - что очень не удобно и иногда они "куда-то деваются".
volvo, я тебя вообще не понимаю, так как ничего этого не знаю! в том посте было достаточно подробно описано(хотя и там ничего почти не понял), но хочу разобраться.
и еще маленький вопрос не по теме - почему прога сделаная не делфи на ноутбуках работает, а сделаная на паскале - нет?
Вопрос действительно не по теме... По крайней мере в этом разделе и с такими исходными данными. Нужно знать хотя бы версию ОС, и ее реакцию на запуск EXE-шника, чтобы отвечать на этот вопрос. У меня на ноуте под WinXP все прекрасно работало.
Zopaa
1.06.2009 4:11
program gjhg;
uses graph;
const n=30;
xgmin=100;
xgmax=540;
ygmin=100;
ygmax=380;
var driver,mode,i,xg,yg,xl,yl,q,o:integer;
a,b,ymin,ymax:real;
x,y,z,u:array[1..n] of real;
s:string;
w1,t:real;
f,e:text;
begin
writeln('vvedite 1, eclu xotute yvudet'' Fi ot T; vvedite 2, eclu xotute yvudet'' W ot T ') ;
read(o);
a:=0;
b:=20;
driver:=detect;
Initgraph(driver,mode, 'D:\work');
ClearDevice;
assign(f,'dta');
reset(f);
{for i:=1 to n do
readln(f,x[i],y[i]);
{for i:=1 to n do writeln(x[i],y[i]); }
assign(e,'atd');
reset(e);
{for i:=1 to n do
readln(e,z[i],u[i]);
{for i:=1 to n do writeln(z[i],u[i]); }if o=1thenbeginfor i:=1to n do readln(f,x[i],y[i]) endelsebeginfor i:=1to n do readln(e,x[i],y[i]); end;
{ x[i]:=z[i];
y[i]:=u[i];
end else
begin }
ymax:=y[1];
for i:=2to n doif y[i]>ymax thenbegin
ymax:=y[i];
end;
ymin:=y[1];
for i:=2to n doif y[i]<ymin thenbegin
ymin:=y[i];
end;
rectangle(xgmin,ygmin,xgmax,ygmax);
q:=0;
i:=30;
while q<1dobeginif frac((xgmax-xgmin)/i)=0then
q:=i else i:=i+1;
end;
xl:=xgmin;
while xl<xgmax dobegin
Line(xl,ygmin,xl,ygmax);
xl:=xl+q;
str(xl,s);
OutTextXY(xl-10,ygmin+290,s);
end;
q:=0;
i:=30;
while q<1dobeginif frac((ygmax-ygmin)/i)=0then
q:=i else i:=i+1;
end;
yl:=ygmin;
while yl<ygmax dobegin
Line(xgmin,yl,xgmax,yl);
yl:=yl+q;
str(yl,s);
OutTextXY(xgmin-26,yl-7,s);
end;
{if o=1 then begin}
xg:=round(xgmin+(x[1]-a)/(b-a)*(xgmax-xgmin));
yg:=round(ygmax-(y[1]-ymin)/(ymax-ymin)*(ygmax-ygmin));
Moveto (xg,yg);
setcolor(9);
for i:=2to n dobegin
xg:=round(xgmin+(x[i]-a)/(b-a)*(xgmax-xgmin));
yg:=round(ygmax-(y[i]-ymin)/(ymax-ymin)*(ygmax-ygmin));
Lineto (xg,yg);
setcolor(9);
setcolor(10);
end;
SetTextJustify(1,3);
OutTextXY(ygmin-5,xgmin-10,'fi');
SetTextJustify(2,1);
OutTextXY(ygmax+170,xgmax-160,'t');
{end;}{if o=2 then begin
x[i]:=z[i];
y[i]:=u[i];
xg:=round(xgmin+(x[1]-a)/(b-a)*(xgmax-xgmin));
yg:=round(ygmax-(y[1]-ymin)/(ymax-ymin)*(ygmax-ygmin));
Moveto (xg,yg);
setcolor(9);
for i:=2 to n do
begin
xg:=round(xgmin+(x[i]-a)/(b-a)*(xgmax-xgmin));
yg:=round(ygmax-(y[i]-ymin)/(ymax-ymin)*(ygmax-ygmin));
Lineto (xg,yg);
setcolor(9);
end;
setcolor(10);
SetTextJustify(1,3);
OutTextXY(ygmin-5,xgmin-10,'w');
SetTextJustify(2,1);
OutTextXY(ygmax+170,xgmax-160,'t')
end; }if (o<>1) and (o<>2) then write('error');
readln;
closegraph;
end.
почему он не хочет что-либо строить..где ошибка??
Lapp
1.06.2009 9:38
Цитата(Zopaa @ 1.06.2009 1:11)
почему он не хочет что-либо строить..где ошибка??
Дорогая моя Zopaa, когда же ты поймешь, что твоя краткость вредит тебе самой? Твой код у меня отработал, построил график (все тот же). Что ты хотела - я не знаю. Гадать, тратить время на подробный анализ кода в попытке понять, что ты пыталась сделать - извини, не могу. Уважай собеседников, давай больше информации. Успехов тебе.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.