Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ «Вектора и действия над векторами»

Автор: marwell 18.02.2010 19:14

Создать приложение по разделу аналитической геометрии «Вектора и действия над векторами». Приложение должно содержать :
1)подпрограммы, реализующие:

а) вычисление скалярного произведения 2-х заданных векторов размерности n (компоненты вектора и n – задаются пользователем);
б) вычисление векторного произведения 2-х заданных векторов размерности n=3 (компоненты векторов задаются пользователем), здесь же находится площадь параллелограмма, построенного на этих векторах;
с)вычисление смешанного произведения трех заданных векторов размерности n (компоненты векторов задаются пользователем);
д) проверку компланарности векторов;

написал, вроде правильно, но на всякий случай прошу проверить

 type myarray=array [1..100] of real;
var i,n:integer;
a,b,c:myarray;
p,s,vek_pr,sm_pr,cosinus,sinus:real;
function sk_pr(n:integer):real;
begin
p:=0;
for i:=1 to n do
begin
p:=p+a[i]*b[i];
end;
sk_pr:=p;
end;
begin
write('введите n= ');
readln(n);
for i:=1 to n do
begin
writeln ('введите a(',i,')');
readln (a[i]);
end;
for i:=1 to n do
begin
writeln ('введите b(',i,')');
readln (b[i]);
end;
cosinus:=sk_pr(n)/((sqrt(sqr(a[1])+sqr(a[2])+sqr(a[3])))*(sqrt(sqr(b[1])+sqr(b[2])+sqr(a[3]))));
sinus:=sqrt(1-(sqr(cosinus)));
p:=(sqrt(sqr(a[1])+sqr(a[2])+sqr(a[3])))*(sqrt(sqr(b[1])+sqr(b[2])+sqr(a[3])))*s
inus;
vek_pr:=abs(p);
writeln ('------------------------------------------------------------');
writeln ('скалярное произведение =',sk_pr(n):2 :2);
writeln ('-------------------------------------------------------------');
writeln ('координаты векторного произведения (',
a[2]*b[3]-a[3]*b[2]:2 :0,',',a[1]*b[3]-a[3]*b[1]:2 :0,',',a[1]*b[2]-a[2]*b[1]:2 :0,')');
writeln ('------------------------------------------------------------');
writeln ('площадь параллелограмма ',vek_pr:2:2);
writeln ('------------------------------------------------------------');
for i:=1 to 3 do
begin
writeln ('введите c(',i,')');
readln (c[i]);
end;
sm_pr:=abs((a[1]*b[2]*c[3])+(c[1]*a[2]*b[3])+(a[3]*b[1]*c[2])-(a[3]*b[2]*c[1])-(c[3]*b[1]*a[2])-(a[1]*c[2]*b[3]));
if sm_pr=0 then writeln ('введенные векторы компланарны')
else writeln ('введенные векторы некомпланарны');
writeln ('------------------------------------------------------------');
writeln ('смешанное произведение ',sm_pr:2 :2);
readln;
end.

Автор: Lapp 18.02.2010 19:22

Цитата(marwell @ 18.02.2010 15:14) *
написал, вроде правильно, но на всякий случай прошу проверить
Гм. А что значит - проверить? Погонять твою прогу в разных режимах на предмет сбоев?.. blink.gif Это неинтересно. Найми тестеров.. dry.gif

Если есть конкретный вопрос - задавай.

И отформатируй код... смотреть же на него неприятно. Или это тестеры должны делать?

Автор: marwell 18.02.2010 19:39

ммм, нет, не надо. Тему можно удалить?