|
Вопрос # 4 638/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
напишите пожалуйста функцию которая бы складывала два вектора? Я код вам дам . модуль к нему тоже , там где function "sum" написать функцию!!!
Приложение: Переключить в обычный режим-
- program Project1;
- {$APPTYPE CONSOLE}
- uses
- SysUtils,
- windows,
- vectors in 'vectors.pas',
- points in 'points.pas';
-
- Type
-
- Tsegment = record
- A,B:Tpoint;
- end;
-
-
- var
- A,B,C,D,E,F,G,H,I:Tpoint;
- s:real;
- d1,d2,d3,v:real;
-
-
-
- begin
- A:=inputPoint('A');
- B:=inputPoint('B');
- C:=inputPoint('C');
-
- writeln(PointToStr(A)+';'+PointToStr(B)+';'+PointToStr(C));
-
- D:=mid(A,B);
- F:=mid(C,D);
- F.name:='F';
- writeln(PointToStr(F));
- writeln(PointToStr(mint(A,B)));
- writeln(PointToStr(mint2(A,B)));
- if colinear(A,B,C)
-
-
-
- {d1:=distPoint(A,B);
- d2:=distPoint(A,C);
- d3:=distPoint(C,B);
- writeln('AB=',d1);
- writeln('AC=',d2);
- writeln('BC=',d3);
-
-
-
-
- D:=mid(A,B);
- E:=mid(A,C);
- F:=mid(B,C);
-
- v:=rvector(A);
- writeln(v);
-
- G:=mint(A,B);
-
- H:=mint(A,C);
-
- I:=mint(B,C);
-
-
- print(D);
- Writeln('D=','(',D.x,',',D.y, ')');
- {Writeln(E);
- Writeln(F); }
- readln(s);
-
- end.
-
-
-
-
-
- unit points;
-
- interface
-
- Type
- TPoint = record
- name:string;
- x,y:integer;
- end;
-
- function inputPoint(name:string):TPoint;
- function distPoint(K,M:Tpoint):real;
- function mid(K,M:TPoint):TPoint;
- function rvector(K:TPoint):real;
- function PointToStr(K:TPoint):string;
- function mint(K,M:TPoint):TPoint;
- function mint2(K,M:TPoint):TPoint;
- function colinear(A,B,C:TPoint):boolean;
- function eqv(A,B:TPoint):boolean;
-
- implementation
-
- uses SysUtils;
-
- function dist(a1,a2,b1,b2:integer):real;
- begin
- result:=sqrt(sqr(a1-b1)+sqr(a2-b2));
- end;
-
- function input(s:string):integer;
- begin
-
- end;
-
-
- function inputPoint(name:string):TPoint;
- begin
-
-
- result.name:=name;
- end;
-
- function distPoint(K,M:Tpoint):real;
- begin
- result:=dist(K.x,K.y,M.x,M.y);
- end;
-
- function min(a,b:real):real;
- begin
- if a<b
- then result:=a
- else result:=b;
- end;
-
- function mid(K,M:TPoint):TPoint;
- begin
- result.x:=round((M.x+K.x)/2);
- result.y:=round((M.y+K.y)/2);
- result.name:='[Mid('+K.name+','+M.name+')]';
- end;
-
- function rvector(K:TPoint):real;
- begin
- result:=dist(K.x,K.y,0,0);
- end;
-
- function PointToStr(K:TPoint):string;
- begin
- result:=K.name+'('+IntToStr(K.x)+','+IntToStr(K.y)+')';
- end;
-
- function mint(K,M:TPoint):TPoint;
- begin
- result.name:='[Mint('+K.name+','+M.name+')]';
- if rvector(K)<rvector(M)
- then begin
- result.x:=K.x;
- result.y:=K.y;
- end
- else begin
- result.x:=M.x;
- result.y:=M.y;
- end
- end;
-
- function mint2(K,M:TPoint):TPoint;
- begin
- if rvector(K)<rvector(M)
- then result:=K
- else result:=M;
- end;
-
- function colinear(A,B,C:TPoint):boolean;
- begin
- result:=((B.y-A.y)*(C.x-A.x)=(C.y-A.y)*(B.x-A.x));
- end;
-
- function eqv(A,B:TPoint):boolean;
- begin
- result:=(A.x=B.x)and(A.y=B.y);
- end;
-
-
- end.
-
-
-
- unit vectors;
-
- interface
-
- uses points;
-
- Type
- TVector = record
- name:string;
- x,y:integer;
- end;
-
- function InputVector(name:string): TVector;
- function PointsToVector(A,B:TPoint):TVector;
- function GetEndPoint(A:Tpoint; v:TVector):TPoint;
- function VectorToStr(v:Tvector):string;
- function sum(a,b:Tvector):Tvector;
- function mult(c:integer; a:TVector):TVector;
- function diff(a,b:TVector):TVector;
- function eqv(a,b:TVector):boolean;
- function Colinear(a,b:TVector):boolean;
- function scalar(a,b:TVector):integer;
- function angle(a,b:TVector):real;
- function abs(v:TVector):integer;
- function ort(v:TVector):TVector;
- function norm(v:TVector):TVector;
-
-
-
- implementation
-
- function InputVector(name:string): TVector;
- begin
-
- end;
-
- function PointsToVector(A,B:TPoint):TVector;
- begin
- result.x=B.x-A.x;
- result.y=B.y-A.y;
- result.name=
- end;
-
-
-
-
-
-
-
- function sum(a,b:Tvector):Tvector;
- begin
-
- end;
-
-
- end;
-
-
-
- end.
-
-
 |
Вопрос задал: Джон (статус: Посетитель)
Вопрос отправлен: 7 октября 2010, 16:41
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 6; последнее сообщение — 9 октября 2010, 08:20; участников в обсуждении: 3.
|
min@y™ (статус: Доктор наук), 7 октября 2010, 17:06 [#1]:
Type
TVector = record
name:string;
x,y:integer;
end;
Я не понял: это точка на плоскости или, всё-таки, радиус-вектор?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Джон (статус: Посетитель), 7 октября 2010, 19:31 [#2]:
Скорее радиус вектор.
|
|
Ерёмин А.А. (статус: *Администратор), 7 октября 2010, 19:52 [#3]:
Сложить 2 вектора? 
a(x1,y1)
b(x2,y2)
c(x1+x2,y1+y2)
|
|
min@y™ (статус: Доктор наук), 7 октября 2010, 21:55 [#4]:
Цитата (Ерёмин А.А.):
Сложить 2 вектора?  a(x1,y1) b(x2,y2) c(x1+x2,y1+y2)
Если это радиус-вектор, то да.
Но, вообще-то, вектор - это начальная и конечная точки, т.е. координаты. Я поэтому и переспрашивал.
Я в РГРТА(У) изучал вышку 4 семестра. 3 экзамена из 4-х мне поставили автоматом, так что, не смотря на прошедшие годы, кое-что помню...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Джон (статус: Посетитель), 8 октября 2010, 16:32 [#5]:
Здравствуйте, уважаемые эксперты!
напишите пожалуйста , что получается вместо ??
сложить два вектора!!
a
a.x:=1;
a.y:=2;
a.name:='c';
b
b.x:=3;
b.y:=4;
b.name:='d';
result
result.x:= ? ;
result.y:= ? ;
result.name:=?
пожалуйста
|
|
min@y™ (статус: Доктор наук), 9 октября 2010, 08:20 [#6]:
result.x:= a.x + b.x;
result.y:= a.y + b.y;
result.name:= 'a + b'; // или любое другое обозначение
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|