LINUX.ORG.RU

Fortran. Задача из курсовой


0

0

Надеюсь не наделаю много шума) сам я в маи учусь, задача тут угребистая попалась, никак решить не могу. а 24ого кровь из носу нести надо.

по-человечески прошу помочь а теперь собственно трабл:

На плоскости задано множество точек (А) и точка d вне плоскости. Подсчитайте кол-во неупорядоченных различных троек точек a, b, c из множества (A) таких, чтобы 4хугольник abcd являлся параллелограмм (от себя замечу, что сумма квадратов диагоналей параллелограмм равна сумме квадратов 4х его сторон)

заранее пасиба

Перебираешь все тройки точек и считаешь, сколько раз выполняется какой-нибудь критерий "параллелограмистости" (например, что среди всех векторов, соединяющих всевозможные пары точек, найдутся два равных).

anonymous
()

Меня терзают смутные сомнения, что условия задачи приведены не в оригинальном виде - ведь параллелограмм плоская фигура =) ?

grimp3ur
()
Ответ на: комментарий от grimp3ur

А, ведь НА ПЛОСКОСТИ задано множество точек :) Тогда да, просто PRINT 0 :)

anonymous
()
Ответ на: комментарий от grimp3ur

>Меня терзают смутные сомнения, что условия задачи приведены не в оригинальном виде

А у меня сомнения в отношении того, что ничего не говорится о точности. Или в задаче все в целых числах?

mky ★★★★★
()
Ответ на: комментарий от mky

а что если множество (А) -это кусок плоскости в который не входит точка d? тогда все четыре точки лежат на одной плоскости.

Опираясь на это и критерии параллелограмности, я попытался начертать ченить пристойное - нифига не даеца - мы вообще такого раздела не проходили. ради всего святого, толкните хоть какуюнить идейку, ато нести скоро!

anonymous
()
Ответ на: комментарий от anonymous

Ещё раз. Все точки множества A лежат в одной плоскости. Возьмём любые три. Если они вдруг лежат на одной прямой, то параллелограмма, ясно, уже не получится. Если же не лежат, то через них можно провести плоскость единственным образом - это будет та самая, в которой они все лежат. А четвертая точка в ней лежать не будет. Так что параллелограмма опять же не получится, т.к. 4 его вершины обязаны лежать в одной плоскости.

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

> мы вообще такого раздела не проходили

В школе это вообще-то проходят. Параллелограмм - 7 или 8 класс, вектора - кажется 9, стереометрия - 10-11.

anonymous
()
Ответ на: комментарий от anonymous

хым! но насколько я знаю, множество не обязано быть плоскостью, но оно может быть частью плоскости. а точка d лежит вне множества но на той же плоскости. т е, если переделать условие, получится следующее: в плоскости есть точка d, найдите такие тройки точек a b c в этой же плоскости, чтобы 4хугольник abcd был паралелограмом

*В школе это вообще-то проходят* я не знаю как это в фортране начертать

anonymous
()
Ответ на: комментарий от anonymous

Ну найди книжку по фортрану.

anonymous
()
Ответ на: комментарий от anonymous

Я уже запутался полностью... 
anonymous (*) (20.07.2007 23:16:33) == billy_smoke ???

В общем исходное условие "На плоскости задано множество точек (А) и точка d вне плоскости."
неверно, так как если параллелограм плоская фигура и все ее 4 вершины должны лежать в 
одной плоскости. То есть точка d должна лежать в одной плоскости с множесвом (A)...

По поводу Фортрана, ну вот так, допустим, абсолютно тупо:
REAL*8 FUNCTION SQLEN(X1,Y1,Z1, X2,Y2,Z2)
  SQLEN=(X1-X2)**2 + (Y1-Y2)**2 + (Z1-Z2)**2
  RETURN
END
LOGICAL FUNCTION ISPAR(X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z2,X4,Y4,Z4)
  REAL*8 SUM1, SUM2
  ISPAR=.FALSE.
  ! Здесь код вычисления суммы квадратов его сторон SUM1
  ! И суммы квадратов его диагоналей SUM2 с использованием SQLEN
  IF ( ABS(SUM1-SUM2) .LT. 1E-6 ) ISPAR=.TRUE.
  RETURN  
END

LOGICAL PARAL
REAL X(1000), Y(1000), Z(1000), XD, YD, ZD
! Занесение множества точек в массивы их координат
! Или через READ, или DATA, или NAMELIST
! N --- число точек.
   DO I=1, N-2
     DO J=1, N-1
        DO K=1, N
           PARAL=.FALSE.
           IF ( .NOT. PARAL ) PARAL = ISPAR(DX,DY,DZ,X(I),Y(I),Z(I),X(J),Y(J),Z(J),X(K),Y(K),Z(K)) ) 
           IF ( .NOT. PARAL ) PARAL = ISPAR(DX,DY,DZ,X(J),Y(J),Z(J),X(I),Y(I),Z(I),X(K),Y(K),Z(K)) ) 
! и так далее, все шесть вариантов перестановки вершин

           IF ( PARAL ) WRITE(*,*) "Образуют ", I,J,K     
        ENDDO
     ENDDO
   ENDDO


mky ★★★★★
()
Ответ на: комментарий от mky

anonymous (*) (20.07.2007 23:16:33) == billy_smoke* агась:)

пасиб огромное, теперь хоть будет что нести

billy_smoke
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.