Форум: "Потрепаться";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];
ВнизЕщё одна простенькая задачка для всех. Найти похожие ветки
← →
PaRL (2002-04-23 18:28) [0]Путник треть пути бежал со скоростью 7 км/ч. Треть времени после этого он шёл со скоростью 4 км/ч. Всё оставшееся время он шёл со средней скоростью. Найти среднюю скорость.
← →
handra (2002-04-23 18:34) [1]5,(09) км/ч
← →
Johnmen (2002-04-23 18:48) [2]5.5 км/ч.
← →
ДимаНко (2002-04-23 20:06) [3]почему так ?
← →
Dimaiv (2002-04-23 20:10) [4]а так.
← →
Doom (2002-04-23 20:55) [5]
> Dimaiv © (23.04.02 20:10)
А вот и не так
> Johnmen © (23.04.02 18:48)
Однозначно неправильно
← →
MBo (2002-04-23 20:56) [6]2*sqrt(7)~~5.29 км/ч
← →
Doom (2002-04-23 21:03) [7]
> MBo © (23.04.02 20:56)
Страная у тебя формула для средней скорости
← →
Лёша (2002-04-23 22:07) [8]Надо полагать, весь прикол в том, что треть пути и треть времени разные понятия. Иначе задача действительно простенькая.
← →
VICTOR_ (2002-04-23 22:49) [9]Обозначим все расстояние через x
Обозначим все время через y
Тогда средняя скорость равна x/y
2/3*x = 4*(1/3)*(y-(1/3)*x/7) + (x/y)*(2/3)*(y-(1/3)*x/7)
Далее сводится к
x^2 + 2*x*y - 42*y^2 = 0
Осюда надо найти
X/Y
Далее задача из курса высшей(школьной???) математики.
← →
VICTOR_ (2002-04-23 23:11) [10]Ответ
~5.56 км/ч
← →
MBo (2002-04-24 07:34) [11]>Doom
>Страная у тебя формула для средней скорости
расшифрую: s-весь путь t- все время z - время последнего участка
s=s/3+4t/3+zs/t
t=s/21+t/3+z
2s=4t+3zs/t
2t=s/7+3z
3z=2t-s/7 в первое =>
2s=4t+2s-s^2/(7t)
4t=s^2/(7t)
(s/t)^2=28
Vср=s/t=2sqrt(7)
← →
Alx2 (2002-04-24 08:33) [12]Mbo прав :)
Вот решение:
s = 2*sqrt(7)*t, t3 = -2/21*t*(-7+sqrt(7)), s1 = 2/3*sqrt(7)*t, t1 = 2/21*sqrt(7)*t, s3 = 4/3*t*(sqrt(7)-1), us = 2*sqrt(7), t2 = 1/3*t, s2 = 4/3*t
Где s - общий путь. t - затраченное время, us - средняя скорость,
s1 - длина первого участка пути, s2 - 2-го, s3 - 3-го.
t1 - время прохождения 1-го участка, t2 - 2-го, t3 - 3-го.
Или, после подсчета:
{s2 = 0.2519763153*s, us = 5.291502622, t3 = 0.7836911005e-1*s, t = 0.1889822365*s, t1 = 0.4761904762e-1*s, t2 = 0.6299407883e-1*s, s1 = 0.3333333333*s, s3 = 0.4146903513*s}
← →
MBo (2002-04-24 08:41) [13]Самая простая задачка из этой серии -
мужик шел в гору со скоростью 4 км/ч, с горы 6 км/ч
найти среднюю скорость
Очень многих вводит в ступор ;)
← →
Alx2 (2002-04-24 08:52) [14]>MBo © (24.04.02 08:41)
t = 5/24*s, us = 24/5=4.8, t2 = 1/12*s, t1 = 1/8*s
t - время похода,
t1 - вермя в гору
t2 - с горы
s - путь по склону вверх + путь по склону вниз
← →
MBo (2002-04-24 09:03) [15]>Alx2
да я не сомневался, что ты-то смикитишь - просто занятный пример привел ;)
программных задачек кидать или работу парализует? ;)
← →
Alx2 (2002-04-24 09:32) [16]Кидай.
Разве что перекуры парализует :)
← →
MBo (2002-04-24 09:39) [17]простенький аналог заставки Геометрический вальс (mistify)(на форме или на paintbox c align=alclient во избежание проблем с invalidate)
← →
VICTOR_ (2002-04-24 10:41) [18]>MBo
>Alx2
Решение аналогичное, только в моей формуле:
Треть времени после этого
я считал от оставшегося, а не от всего времени.
В условии задачи тогда надо писать
Треть общего времени после этого
Тогда ответ
sqrt(43)-1
~5.56
← →
Alx2 (2002-04-24 10:57) [19]>MBo © (24.04.02 09:39)
Опять-таки "на вскидку".
Timer1.Interval = 20;
Form2.WindowState = wsMaximized;
Местами кратковременные помаргивания: регионы для обновления сичтать не стал.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, AppEvnts;
type
TForm2 = class(TForm)
ApplicationEvents1: TApplicationEvents; // Добавить с вкладки "Additional"
Timer1: TTimer;
procedure FormPaint(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure GetLine(k: double; var x1, y1, x2, y2: Integer);
{ Private declarations }
public
{ Public declarations }
NeedRepainting : Boolean;
procedure OnEraseBK(Var Msg : TMessage); message wm_erasebkgnd;
end;
var
Form2: TForm2;
implementation
{$R *.DFM}
Const Counter : integer = 0;
Procedure TForm2.GetLine(k : double; Var x1,y1,x2,y2 : Integer);
Var A1,A2 : Double;
begin
A1 := Width / 2;
A2 := Height /2 ;
x1 := Round(A1*Sin(k/100+5*abs(sin(k/252)))+A1);
y1 := Round(A2*Cos(k/170)+A2);
x2 := Round(A1*Sin(k/120)+A1);
y2 := Round(A2*Cos(k/120+5*abs(cos(k/242)))+A2)
end;
procedure TForm2.FormPaint(Sender: TObject);
procedure Plot(k : Double; Col : TColor);
Var
x1,y1,x2,y2 : integer;
begin
GetLine(k,x1,y1,x2,y2);
With Canvas do
Begin
Pen.Color := Col;
MoveTo(x1,y1);
LineTo(x2,y2);
End;
end;
Var k : integer;
begin
Plot(Counter-1,Color);
for k := Counter to Counter + 100 do
Plot(k,(round(127*sin(k/10)+128) shl 8)+(round(127*sin(k/90)+128) shl 16)+(round(127*cos(k/120)+128)));
NeedRepainting := False;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Inc(Counter);
Invalidate;
end;
procedure TForm2.OnEraseBK(var Msg: TMessage);
begin
if NeedRepainting then inherited
else
Msg.Result := 0;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
NeedRepainting := True;
end;
end.
← →
Alx2 (2002-04-24 11:02) [20]Вот это ненадо :)
ApplicationEvents1: TApplicationEvents;
Просто сначала на OnIdle хотел посадить...
← →
Alx2 (2002-04-24 11:07) [21]В первом варианте сильно тормознул :(
Вот исправленный вариант:
Timer1.Interval = 20;
Form2.WindowState = wsMaximized;
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, AppEvnts;
type
TForm2 = class(TForm)
Timer1: TTimer;
procedure FormPaint(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
procedure GetLine(k: double; var x1, y1, x2, y2: Integer);
{ Private declarations }
public
{ Public declarations }
NeedRepainting : Boolean;
procedure OnEraseBK(Var Msg : TMessage); message wm_erasebkgnd;
end;
var
Form2: TForm2;
implementation
{$R *.DFM}
Const Counter : integer = 0;
Procedure TForm2.GetLine(k : double; Var x1,y1,x2,y2 : Integer);
Var A1,A2 : Double;
begin
A1 := Width / 2;
A2 := Height /2 ;
x1 := Round(A1*Sin(k/100+5*abs(sin(k/252)))+A1);
y1 := Round(A2*Cos(k/170)+A2);
x2 := Round(A1*Sin(k/120)+A1);
y2 := Round(A2*Cos(k/120+5*abs(cos(k/242)))+A2)
end;
procedure TForm2.FormPaint(Sender: TObject);
procedure Plot(k : Double; Col : TColor);
Var
x1,y1,x2,y2 : integer;
begin
GetLine(k,x1,y1,x2,y2);
With Canvas do
Begin
Pen.Color := Col;
MoveTo(x1,y1);
LineTo(x2,y2);
End;
end;
Var k : integer;
begin
Plot(Counter-1,Color);
k := Counter; // Исправления здесь!
Plot(k+100,(round(127*sin(k/10)+128) shl 8)+(round(127*sin(k/90)+128) shl 16)+(round(127*cos(k/120)+128)));
NeedRepainting := False;
end;
procedure TForm2.OnEraseBK(var Msg: TMessage);
begin
if NeedRepainting then inherited
else
Msg.Result := 0;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
NeedRepainting := True;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Inc(Counter);
Invalidate;
end;
end.
← →
Alx2 (2002-04-24 12:13) [22]Да, забыл еще, что Form2.Color = clBlack
← →
MBo (2002-04-24 13:08) [23]симпатично.
моя халтура
type
TForm1 = class(TForm)
Timer1: TTimer;
PaintBox1: TPaintBox;
procedure Timer1Timer(Sender: TObject);
procedure PaintBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a,olda,aa,oldaa:array[0..3] of tpoint;
b,oldb,bb,oldbb:array[0..3] of tpoint;
va,vb:array[0..3] of tpoint;
first:boolean;
implementation
{$R *.DFM}
procedure TForm1.Timer1Timer(Sender: TObject);
var i:integer;
procedure checkborder(var q,vq:integer;const brd:integer);
begin
if q>=brd then begin
q:=2*brd-q; vq:=-vq; end;
if q<0 then begin
q:=-q; vq:=-vq; end;
end;
begin
with paintbox1 do begin
for i:=0 to 3 do begin
a[i].x:=a[i].x+va[i].x;
checkborder(a[i].x,va[i].x,clientwidth);
a[i].y:=a[i].y+va[i].y;
checkborder(a[i].y,va[i].y,clientheight);
aa[i].x:=aa[i].x+va[i].x;
checkborder(aa[i].x,va[i].x,clientwidth);
aa[i].y:=aa[i].y+va[i].y;
checkborder(aa[i].y,va[i].y,clientheight);
b[i].x:=b[i].x+vb[i].x;
checkborder(b[i].x,vb[i].x,clientwidth);
b[i].y:=b[i].y+vb[i].y;
checkborder(b[i].y,vb[i].y,clientheight);
bb[i].x:=bb[i].x+vb[i].x;
checkborder(bb[i].x,vb[i].x,clientwidth);
bb[i].y:=bb[i].y+vb[i].y;
checkborder(bb[i].y,vb[i].y,clientheight);
end;
canvas.pen.color:=clLime;
if not first then begin canvas.Polygon(olda); canvas.Polygon(oldaa); end;
canvas.Polygon(a); canvas.Polygon(aa);
olda:=a; oldaa:=aa;
canvas.pen.color:=clRed;
if not first then begin canvas.Polygon(oldb); canvas.Polygon(oldbb); end;
canvas.Polygon(b); canvas.Polygon(bb);
oldb:=b; oldbb:=bb;
first:=false;
end;
end;
procedure TForm1.PaintBox1Click(Sender: TObject);
var i:integer;
begin
with paintbox1 do begin
if not Timer1.Enabled then begin
randomize;
for i:=0 to 3 do begin
a[i].x:=random(clientwidth-5);
a[i].y:=random(clientheight-5);
aa[i].x:=a[i].x+5;
aa[i].y:=a[i].y+5;
va[i].x:=(1+random(5))*(2*random(2)-1);
va[i].y:=(1+random(5))*(2*random(2)-1);
b[i].x:=random(clientwidth-5);
b[i].y:=random(clientheight-5);
bb[i].x:=b[i].x+5;
bb[i].y:=b[i].y+5;
vb[i].x:=(1+random(5))*(2*random(2)-1);
vb[i].y:=(1+random(5))*(2*random(2)-1);
end;
canvas.Brush.color:=clBlack;
canvas.brush.style:=bsSolid;
canvas.fillrect(getclientrect);
canvas.brush.style:=bsClear;
canvas.Pen.Mode:=pmXor;
first:=true;
end;
Timer1.Enabled:=not Timer1.Enabled;
end;
end;
← →
MBo (2002-04-24 13:12) [24]>VICTOR_
Согласен, что условие можно истолковать по разному.
стоило сформулировать так
после этого треть общего времени
← →
Alx2 (2002-04-24 13:26) [25]>MBo © (24.04.02 13:08)
Практически копия.
Только помаргивает :(
← →
PaRL (2002-04-25 16:10) [26]На самом деле конечная формула такова:
Vср = sqrt(V1*V2)
PS Это при поступлении в техникум.
← →
MBo (2002-04-25 16:13) [27]>На самом деле Vср = sqrt(V1*V2)
Дык оно и сказано ;)
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.007 c