Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Misye_kot3
2 / 2 / 2
Регистрация: 27.10.2015
Сообщений: 35
1

Вектор

22.12.2015, 11:22. Просмотров 211. Ответов 1
Метки нет (Все метки)

даны три трехмерных вектора a,b и c, заданные своими координатами.
Найти вектор, равный (a+b)+(2a+3c).
реализовать функции умножения скаляра на вектор, суммы векторов.
Объясните пожалуйста что я делаю не так ?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
program PROG8_3;
 type
   Vec=array[1..3] of real;
   
 var
   a,b,c:Vec;
   
 
 procedure vvod(var x:Vec);
  var i:byte;
  begin {vvod}
  for i:=1 to 3 do
    readln(x[i]);
  end; {vvod}
  
 function AB(a,b,s:Vec):real; {A+B}
  var c:Vec;
      i:integer;
  begin {AB}
  for i:=1 to 3 do
    s[i]:=a[i]+b[i];
  end; {AB}
  
 function AA(a:Vec):real; {2a}
  var q:Vec;
      i:integer;
  begin
  for i:=1 to 3 do
    q[i]:=2*a[i];
  end;
  
 function CCC(c:Vec):real; {3c}
  var r:Vec;
      i:integer;
  begin
  for i:=1 to 3 do
     r[i]:=3*c[i]
  end;
  
 function AC(a,c,r,q:Vec):real; {2a+3c}
  var d:Vec;
      i:integer;
  begin
  for i:=1 to 3 do
    d[i]:=q[i]+r[i];
   end;
 
 procedure ABAC(c,d,s:Vec); {(a+b)+(2a+3c)}
  var O:Vec;
      i:integer;
  begin
  for i:=1 to 3 do
    O[i]:=s[i]+d[i];
    writeln(O);
  end;
  
  begin
  writeln('Введите координаты вектора a');
  Vvod(a);
  writeln('Введите координаты вектора b');
  Vvod(b);
  writeln('Введите координаты вектора c');
  Vvod(c);
  
  
  end.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2015, 11:22
Ответы с готовыми решениями:

Сформировать вектор
Сформировать вектор Р(6) из корней 3-х квадратных ур. a1x^+b1x+c1=0,...

Сформировать вектор по образцу
Сформировать вектор U из упорядоченных по уменьшению элементов вектор...

Умножение матрицы на вектор
Задание: Дана матрица А, действительного размера (n*m)и вектор В(b1...bm)....

Сформировать вектор по заданному правилу
Задание во вложении Прога моя работает правильно,но выводит не красиво Я бы...

Ввести вектор и нормировать его
При помощи случайных чисел вести вектор А=(a1,a2,...,an), n=10. Нормировать...

1
JuriiMW
2053 / 1120 / 1595
Регистрация: 10.12.2014
Сообщений: 4,271
22.12.2015, 12:05 2
Во-первых: Ваши функции должны возвращать вектор, а не „ничего“!
Во-вторых: Про записи (record) что-нибудь слышали?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
type
  tVector = record
    x, y, z : Real;
    
    function ToString : String;
    begin
      Result := String.Format('({0}, {1}, {2})', x, y, z);
    end;
  end;
 
function ReadVector(msg : String := '') : tVector;
begin
  if msg.Length > 0 then WriteLn(msg);
  Result.x := ReadLnReal('x =');
  Result.y := ReadLnReal('y =');
  Result.z := ReadLnReal('z =');
end;
 
function AddVec(a, b : tVector) : tVector;
begin
  Result.x := a.x + b.x;
  Result.y := a.y + b.y;
  Result.z := a.z + b.z;
end;
  
function MulVec(a : tVector; c : Real) : tVector;
begin
  Result.x := a.x * c;
  Result.y := a.y * c;
  Result.z := a.z * c;
end;
 
begin
  var a := ReadVector('Введите вектор a:');
  var b := ReadVector('Введите вектор b:');
  var c := ReadVector('Введите вектор c:');
 
  WriteLn('Вектор a: ', a.ToString);
  WriteLn('Вектор b: ', b.ToString);
  WriteLn('Вектор c: ', c.ToString);
  
  WriteLn('(a+b)+(2a+3c) = ', AddVec(AddVec(a, b), AddVec(MulVec(a, 2), MulVec(c, 3))).ToString);
end.
Более того! Если в IDE нажать F1 и поискать слово „перегрузка“, то программу можно переписать так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
type
  tVector = record
    x, y, z : Real;
    
    function ToString : String;
    begin
      Result := String.Format('({0}, {1}, {2})', x, y, z);
    end;
    
    class function operator+(a, b : tVector) : tVector;
    begin
      Result.x := a.x + b.x;
      Result.y := a.y + b.y;
      Result.z := a.z + b.z;
    end;
 
    class function operator*(c : Real; a : tVector) : tVector;
    begin
      Result.x := a.x * c;
      Result.y := a.y * c;
      Result.z := a.z * c;
    end;
  end;
 
function ReadVector(msg : String := '') : tVector;
begin
  if msg.Length > 0 then WriteLn(msg);
  Result.x := ReadLnReal('x =');
  Result.y := ReadLnReal('y =');
  Result.z := ReadLnReal('z =');
end;
 
begin
  var a := ReadVector('Введите вектор a:');
  var b := ReadVector('Введите вектор b:');
  var c := ReadVector('Введите вектор c:');
 
  WriteLn('Вектор a: ', a.ToString);
  WriteLn('Вектор b: ', b.ToString);
  WriteLn('Вектор c: ', c.ToString);
  
  WriteLn('(a+b)+(2a+3c) = ', ( (a+b)+(2*a+3*c) ).ToString);
end.
Теперь вычисление формулы элементарное: (a+b)+(2*a+3*c)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2015, 12:05

Заполнить комплекснозначный вектор a[1..n] числами
Нужна подмога в написании программы. Заполнить комплекснозначный вектор a...

По заданной перестановке построить вектор инверсий
Доброго времени суток. Программа почти написана, но она работает для массивов с...

Заполнить вектор модулями комплексных чисел
Помогите решить


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru