Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 638

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
напишите пожалуйста функцию которая бы складывала два вектора? Я код вам дам . модуль к нему тоже , там где function "sum" написать функцию!!!

Приложение:
  1.  
  2. program Project1;
  3. {$APPTYPE CONSOLE}
  4. uses
  5. SysUtils,
  6. windows,
  7. vectors in 'vectors.pas',
  8. points in 'points.pas';
  9.  
  10. Type
  11.  
  12. Tsegment = record
  13. A,B:Tpoint;
  14. end;
  15.  
  16.  
  17. var
  18. A,B,C,D,E,F,G,H,I:Tpoint;
  19. s:real;
  20. d1,d2,d3,v:real;
  21.  
  22.  
  23.  
  24. begin
  25. A:=inputPoint('A');
  26. B:=inputPoint('B');
  27. C:=inputPoint('C');
  28.  
  29. writeln(PointToStr(A)+';'+PointToStr(B)+';'+PointToStr(C));
  30.  
  31. D:=mid(A,B);
  32. F:=mid(C,D);
  33. F.name:='F';
  34. writeln(PointToStr(F));
  35. writeln(PointToStr(mint(A,B)));
  36. writeln(PointToStr(mint2(A,B)));
  37. if colinear(A,B,C)
  38.  
  39.  
  40.  
  41. {d1:=distPoint(A,B);
  42. d2:=distPoint(A,C);
  43. d3:=distPoint(C,B);
  44. writeln('AB=',d1);
  45. writeln('AC=',d2);
  46. writeln('BC=',d3);
  47.  
  48.  
  49.  
  50.  
  51. D:=mid(A,B);
  52. E:=mid(A,C);
  53. F:=mid(B,C);
  54.  
  55. v:=rvector(A);
  56. writeln(v);
  57.  
  58. G:=mint(A,B);
  59.  
  60. H:=mint(A,C);
  61.  
  62. I:=mint(B,C);
  63.  
  64.  
  65. print(D);
  66. Writeln('D=','(',D.x,',',D.y, ')');
  67. {Writeln(E);
  68. Writeln(F); }
  69. readln(s);
  70.  
  71. end.
  72.  
  73.  
  74.  
  75.  
  76.  
  77. unit points;
  78.  
  79. interface
  80.  
  81. Type
  82. TPoint = record
  83. name:string;
  84. x,y:integer;
  85. end;
  86.  
  87. function inputPoint(name:string):TPoint;
  88. function distPoint(K,M:Tpoint):real;
  89. function mid(K,M:TPoint):TPoint;
  90. function rvector(K:TPoint):real;
  91. function PointToStr(K:TPoint):string;
  92. function mint(K,M:TPoint):TPoint;
  93. function mint2(K,M:TPoint):TPoint;
  94. function colinear(A,B,C:TPoint):boolean;
  95. function eqv(A,B:TPoint):boolean;
  96.  
  97. implementation
  98.  
  99. uses SysUtils;
  100.  
  101. function dist(a1,a2,b1,b2:integer):real;
  102. begin
  103. result:=sqrt(sqr(a1-b1)+sqr(a2-b2));
  104. end;
  105.  
  106. function input(s:string):integer;
  107. begin
  108.  
  109. end;
  110.  
  111.  
  112. function inputPoint(name:string):TPoint;
  113. begin
  114.  
  115.  
  116. result.name:=name;
  117. end;
  118.  
  119. function distPoint(K,M:Tpoint):real;
  120. begin
  121. result:=dist(K.x,K.y,M.x,M.y);
  122. end;
  123.  
  124. function min(a,b:real):real;
  125. begin
  126. if a<b
  127. then result:=a
  128. else result:=b;
  129. end;
  130.  
  131. function mid(K,M:TPoint):TPoint;
  132. begin
  133. result.x:=round((M.x+K.x)/2);
  134. result.y:=round((M.y+K.y)/2);
  135. result.name:='[Mid('+K.name+','+M.name+')]';
  136. end;
  137.  
  138. function rvector(K:TPoint):real;
  139. begin
  140. result:=dist(K.x,K.y,0,0);
  141. end;
  142.  
  143. function PointToStr(K:TPoint):string;
  144. begin
  145. result:=K.name+'('+IntToStr(K.x)+','+IntToStr(K.y)+')';
  146. end;
  147.  
  148. function mint(K,M:TPoint):TPoint;
  149. begin
  150. result.name:='[Mint('+K.name+','+M.name+')]';
  151. if rvector(K)<rvector(M)
  152. then begin
  153. result.x:=K.x;
  154. result.y:=K.y;
  155. end
  156. else begin
  157. result.x:=M.x;
  158. result.y:=M.y;
  159. end
  160. end;
  161.  
  162. function mint2(K,M:TPoint):TPoint;
  163. begin
  164. if rvector(K)<rvector(M)
  165. then result:=K
  166. else result:=M;
  167. end;
  168.  
  169. function colinear(A,B,C:TPoint):boolean;
  170. begin
  171. result:=((B.y-A.y)*(C.x-A.x)=(C.y-A.y)*(B.x-A.x));
  172. end;
  173.  
  174. function eqv(A,B:TPoint):boolean;
  175. begin
  176. result:=(A.x=B.x)and(A.y=B.y);
  177. end;
  178.  
  179.  
  180. end.
  181.  
  182.  
  183.  
  184. unit vectors;
  185.  
  186. interface
  187.  
  188. uses points;
  189.  
  190. Type
  191. TVector = record
  192. name:string;
  193. x,y:integer;
  194. end;
  195.  
  196. function InputVector(name:string): TVector;
  197. function PointsToVector(A,B:TPoint):TVector;
  198. function GetEndPoint(A:Tpoint; v:TVector):TPoint;
  199. function VectorToStr(v:Tvector):string;
  200. function sum(a,b:Tvector):Tvector;
  201. function mult(c:integer; a:TVector):TVector;
  202. function diff(a,b:TVector):TVector;
  203. function eqv(a,b:TVector):boolean;
  204. function Colinear(a,b:TVector):boolean;
  205. function scalar(a,b:TVector):integer;
  206. function angle(a,b:TVector):real;
  207. function abs(v:TVector):integer;
  208. function ort(v:TVector):TVector;
  209. function norm(v:TVector):TVector;
  210.  
  211.  
  212.  
  213. implementation
  214.  
  215. function InputVector(name:string): TVector;
  216. begin
  217.  
  218. end;
  219.  
  220. function PointsToVector(A,B:TPoint):TVector;
  221. begin
  222. result.x=B.x-A.x;
  223. result.y=B.y-A.y;
  224. result.name=
  225. end;
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233. function sum(a,b:Tvector):Tvector;
  234. begin
  235.  
  236. end;
  237.  
  238.  
  239. end;
  240.  
  241.  
  242.  
  243. end.
  244.  
  245.  


Джон Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Джон (статус: Посетитель)
Вопрос отправлен: 7 октября 2010, 16:41
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 6; последнее сообщение — 9 октября 2010, 08:20; участников в обсуждении: 3.
min@y™

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™

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™

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. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:37
Выполнено за 0.04 сек.