Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 12
1

Проверка перпендикулярности/параллельности векторов

05.10.2015, 13:50. Показов 2434. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Есть вектор А(x,y) и вектор B(u,v). На одной кнопке должна быть проверка перпендикулярности, а на другой параллельности. Как реализовать? Код есть, единственное что не могу сделать - проверку.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2015, 13:50
Ответы с готовыми решениями:

Условие перпендикулярности векторов
Здравствуйте! Какому условию должны удовлетворяться векторы a и b, чтоб вектор (a+b) был...

Проверка параллельности прямых - найти ошибки в коде
Компилятор выдает синтаксические ошибки, помогите исправить. #include <stdio.h> #include...

Проверка векторов на базис в R^3
Проверить, что векторы b ⃗={2; 3; 4}, c ⃗={1; 2; 4}, d ⃗={-1; -3; -5} образуют базис в R^3, и...

Проверка векторов на равенство
Даны 2 вектора. Например (1 2 3) и (1 2 3).. Нужен код который проверяет их на равенство,если...

14
Злостный нарушитель
9516 / 5160 / 1175
Регистрация: 12.03.2015
Сообщений: 24,320
05.10.2015, 14:01 2
2 ненулевых вектора перпендикулярны, если их скалярное произведение = 0.
2 ненулевых вектора параллельны (коллинеарны), если отношения их координат равны (векторное произведение = 0-вектору).

Думаю, этой инфы достаточно для написания двух обработчиков тыка на кнопку.
0
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 12
05.10.2015, 15:01  [ТС] 3
Еще вопрос. Я задал глобальные переменные типа стринг. Но при использовании их в процедуре проверки перпендикулярности я получаю ошибку "operator not applicable to this operand type".
В чем проблема?
0
Злостный нарушитель
9516 / 5160 / 1175
Регистрация: 12.03.2015
Сообщений: 24,320
05.10.2015, 15:05 4
Цитата Сообщение от Floser Посмотреть сообщение
В чем проблема?
показывай кусок кода.
0
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 12
05.10.2015, 15:16  [ТС] 5
Verevkin,
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.btn3Click(Sender: TObject);
var
  perp: string;
begin
   perp:= value*value3+value2*value4;
   if perp = '0' then
   begin
   ShowMessage('Âåêòîðû ïåðïåíäèêóëÿðíû');
   end;
end;
Добавлено через 6 минут
Verevkin,
Если что, вот весь код

Не по теме:

Delphi
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math;
 
type
  TForm1 = class(TForm)
    lbl1: TLabel;
    lbl2: TLabel;
    btn1: TButton;
    btn2: TButton;
    lbl3: TLabel;
    lbl4: TLabel;
    lbl5: TLabel;
    lbl6: TLabel;
    btn3: TButton;
    btn4: TButton;
    lbl7: TLabel;
    lbl8: TLabel;
    lbl9: TLabel;
    lbl10: TLabel;
    lbl11: TLabel;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
    value : string;
    value2 : string;
    value3 : string;
    value4 : string;
implementation
 
{$R *.dfm}
 
procedure TForm1.btn1Click(Sender: TObject);
begin
  // Çàäàåì Èêñ è Èãðèê
  repeat
    value := InputBox('Ââåäèòå Õ', 'Ïîæàëóéñòà, ââåäèòå Õ', '');
    lbl7.Caption:=value;
  until value <> '';
    repeat
    value2 := InputBox('Ââåäèòå Y', 'Ïîæàëóéñòà, ââåäèòå Y', '');
    lbl8.Caption:=value2;
  until value2 <> '';
 
end;
 
procedure TForm1.btn2Click(Sender: TObject);
begin
  // Çàäàåì U è V
  repeat
    value3 := InputBox('Ââåäèòå U', 'Ïîæàëóéñòà, ââåäèòå U', '');
    lbl9.Caption:=value3;
  until value3 <> '';
  repeat
    value4 := InputBox('Ââåäèòå V', 'Ïîæàëóéñòà, ââåäèòå V', '');
    lbl10.Caption:=value4;
  until value4 <> '';
 
end;
 
//  Ïðîâåðêà ïåðïåíäèêóëÿðíîñòè
procedure TForm1.btn3Click(Sender: TObject);
var
  perp: string;
begin
   perp:= value*value3+value2*value4;
   if perp = '0' then
   begin
   ShowMessage('Âåêòîðû ïåðïåíäèêóëÿðíû');
   end;
end;
// Ïðîâåðèòü ïàðàëëåëíîñòü
end.

0
Злостный нарушитель
9516 / 5160 / 1175
Регистрация: 12.03.2015
Сообщений: 24,320
05.10.2015, 15:18 6
Delphi
1
perp:= value*value3+value2*value4;
это чо? перемножение строк?
Ты раньше на каком языке программировал?
0
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 12
05.10.2015, 15:25  [ТС] 7
Verevkin, на сколько я понял. Я вбил в переменную цифру через Бокс. В переменную записалось мое число, и я хочу перемножить переменные. Или так не катит?

Добавлено через 1 минуту
Ты раньше на каком языке программировал?
cpp,C#,qsp
0
Злостный нарушитель
9516 / 5160 / 1175
Регистрация: 12.03.2015
Сообщений: 24,320
05.10.2015, 15:31 8
Цитата Сообщение от Floser Посмотреть сообщение
cpp
Уверен?
Ну-ка напиши на С++ функцию нахождения скалярного произведения векторов, а я её тебе на паскаль переведу.
0
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 12
05.10.2015, 15:50  [ТС] 9
Verevkin,
C++
1
2
3
4
5
6
7
8
9
10
void main()
{
    float x, y, u, v, a;
    cout << "vector a";
    cin >> x >> y;
    cout << "vector b";
    cin >> u >> v;
    a = x*u + y*v;
    cout << "Skl Prv" << a << endl;
}
0
4 / 4 / 2
Регистрация: 19.09.2015
Сообщений: 53
05.10.2015, 15:58 10
используй функции strtofloat и strtoint для преобразования типа стринг в вещественное - то что в поле edit пишется для математических операций надо принудительно преобразовать. если хочешь еще лучше то помести преобразование в try except end если вместо числа будет буква то обработать исключение и вывести сообщение что неверный ввод
1
Злостный нарушитель
9516 / 5160 / 1175
Регистрация: 12.03.2015
Сообщений: 24,320
05.10.2015, 15:59 11
Ну вот, видишь, какого типа у тебя переменные x, y, u, v?
float в паскале - это single.
1
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 12
05.10.2015, 16:17  [ТС] 12
Verevkin, я понял в чем моя ошибка. Мне нужны переменные в которые будет записываться строки.
0
4 / 4 / 2
Регистрация: 19.09.2015
Сообщений: 53
05.10.2015, 16:19 13
используй числовой тип данных для координат вектора integer или float
0
Злостный нарушитель
9516 / 5160 / 1175
Регистрация: 12.03.2015
Сообщений: 24,320
05.10.2015, 16:27 14
Цитата Сообщение от Floser Посмотреть сообщение
Мне нужны переменные в которые будет записываться строки.
Зачем?
0
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 12
05.10.2015, 16:39  [ТС] 15
Verevkin, ну у меня значение вписывает в строковый тип данных. Для подсчета мне нужен числовой.

Добавлено через 5 минут
Хотя, можно сделать конвертацию непосредственно при записи. Я прав?
Получилось.
0
05.10.2015, 16:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2015, 16:39
Помогаю со студенческими работами здесь

Создать класс для обработки векторов разность векторов норму векторов
Создать класс для обработки векторов разность векторов норму векторов

знак параллельности
Как в маткаде поставить знак параллельности ||?

Функция: проверка коллинеарности векторов
Напишите функцию, принимающую два массива координат двух векторов n-мерного пространства и...

Определение параллельности прямых
uses System; const Eps = 1E-5; // Погрешность type TPoint = class(ICloneable,...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru