IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Нахождение ортагональных векторов в пространстве, Среди n(n <= 10) векторов в пространстве (x;y;z) заданных своими к
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Среди n(n <= 10) векторов в пространстве (x;y;z) заданных своими координатами, имеется только 2 ортоганальных вектора.Написать программу нахождения ортоганальных векторов .Подготовить и использовать процедуру проверки ортоганальных векторов.
Вот чиво получилось,прога работает, о есть большие сомнения в формуле,если чиво неправильно,подскажите что исправить
program vektors;
var
x: array[1..10] of real;
y:array[1..10] of real;
z:array[1..10] of real;
k,j,i:integer;


BEGIN
writeln('Введите значение x');
for j:=1 to 10 do
read(x[j]);
writeln('Введите значение y');
for j:=1 to 10 do
read(y[j]);
writeln('Введите значение z');
for j:=1 to 10 do
read(z[j]);
for k:=2 to 10 do
for i:=1 to 10 do
for j:=k to 10 do
if (x[j]*x[i]+y[j]*y[i]+z[j]*z[i])/(sqrt(x[j]*x[j]+y[j]*y[j]+z[j]*z[j])*sqrt(x[i]*x[i]+y[i]*y[i]+z[i]*z[i]))=0 then
writeln(x[j]:5:2,y[j]:5:2,z[j]:5:2 );
write(' ',x[i]:5:2,y[i]:5:2,z[i]:5:2);
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(latysh @ 27.04.2010 22:15) *
имеется только 2 ортоганальных вектора.Написать программу нахождения ортоганальных векторов .Подготовить и использовать процедуру проверки ортоганальных векторов.
Вот чиво получилось,прога работает, о есть большие сомнения в формуле,если чиво неправильно,подскажите что исправить
latysh, я не совсем понял,

а. зачем тебе тройной цикл в проверке?
б. зачем делить на что-то, если ты проверяешь на равенство нулю?

И еще: избався от явного указания числа 10. Введи константу:
MaxN = 10;

Массивы заводи по максимуму:
x,y,z: array[1..MaxN]of double
, а в цикле проходись только до N (N вводится пользователем).
И на замечание Ozzи нужно обратить внимание.
Короче, я бы сделал как-то так:
function Ortog(i,j: integer): boolean;
const
e=1e-12;
begin
Ortog:=Abs(x[j]*x[i]+y[j]*y[i]+z[j]*z[i])<=e
end;

....
i:=1;
Found:=false
while (i<=N)and not Found do begin
j:=1+i;
while j<=N do begin
Found:=Ortog(i,j);
Inc(j)
end;
Inc(i)
end;
if Found then WriteLn('Vectors ',i,' and ',j,' are orthogonal') else WriteLn('No orthogonal vectors were found')


Сообщение отредактировано: Lapp -


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 7.09.2025 10:30
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name