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

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

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

> Найти площадь пирамиды, требуется простенькое решение
Шушпанчик
сообщение 19.10.2004 18:03
Сообщение #1


Гость






Вообщем задача сформулирована следующим образом:

"Написать программу нахождения площади поверхности пирамиды по координатам ее вершин. Подготовить и использовать процедуру определения площади треугольника по известным вершинам".

Задача простенькая с математической и логической т.з., но вот как её описывать в паскале - напрочь забыто.
Желательно использовать базовый инструментарий, такой как: линейные, разветвляющиеся и циклические алгоритмы, массивы, процедуры и функции.

Заранее большое человеческое спасибо! :p2:
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Guest
сообщение 20.10.2004 13:54
Сообщение #2


Гость






Вообщем вот полный код.
Проблема в одном : после процедуры в значениях выходят нули.

var 
x: Array [1..5] of Real;
y: Array [1..5] of Real;
z: Array [1..5] of Real;

{ Площадь треугольника вычисляем по формуле Герона,
но сам треугольник задаем не отдельными координатами,
а вершинами }

Function Plosh(x1, y1, z1, x2, y2, z2, x3, y3, z3: TPoint): Real;
Var
a, b, c, p: Real;
Begin
a:=sqrt(sqr(y2-y3)+sqr(x2-x3)+sqr(z2-z3));
b:=sqrt(sqr(y1-y3)+sqr(x1-x3)+sqr(z1-z3));
c:=sqrt(sqr(y1-y2)+sqr(x1-x2)+sqr(z1-z2));
p:=(a + b + c)/2;
Plosh := p * Sqrt((p-a)*(p-B)*(p-c))
End;

Var
s: Real;
i, j: Integer;
pyramide: TPyramide;

Begin
{ заносим в массив координаты вершин основания пирамиды }
For i := 1 To 4 Do
Begin
if i:=1 then
WriteLn( 'Вершина основания ', i );
Write( 'X = ' ); ReadLn(X[i]);
Write( 'Y = ' ); ReadLn(Y[i]);
Write( 'Z = ' ); ReadLn(Z[i]);
else
WriteLn( 'Вершина основания ', i );
Write( 'X = ' ); ReadLn(X[i]);
Write( 'Y = ' ); ReadLn(Y[i]);
z[i]:=z[1];
End;



WriteLn( 'Верхняя точка пирамиды:' );
Begin
Write( 'X = ' ); ReadLn(X[5]);
Write( 'Y = ' ); ReadLn(Y[5]);
Write( 'Z = ' ); ReadLn(Z[5]);
End;

s := 0;
For i := 1 To 4 Do
Begin
{ считаем сумму площадей боковых граней }
If i <> 4 Then j := Succ(i) Else j := 1;
s := s + Plosh(x[i], y[i], z[i], x[j], y[j], z[j], x[5], y[5], z[5]);
End;

s := s + Plosh(x[1], y[1], z[1], x[2], y[2], z[2], x[3], y[3], z[3]);
s := s + Plosh(x[2], y[2], z[2], x[3], y[3], z[3], x[4], y[4], z[4]);

WriteLn( 'Площадь пирамиды s = ', s )

End.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Шушпанчик   Найти площадь пирамиды   19.10.2004 18:03
Amro   А число вершин может быть любым??? т.е оно тоже за...   19.10.2004 18:27
Amro   Процедуру вычисления площади треугольника по коорд...   19.10.2004 18:39
GoodWind   Amro, если не ошибаюсь, пирамида - трехмерный объе...   19.10.2004 18:48
Amro   GoodWind Так точно!!!! ошибочка вы...   19.10.2004 18:55
GoodWind   ну не в армии же : ) а кол-во граней, если мне не...   19.10.2004 19:03
Amro   GoodWind В принципе кол-во граней в этой задаче н...   19.10.2004 19:08
GoodWind   площадь трехмерной фигуры - сумма площадей всех е...   19.10.2004 19:55
Amro   Ну это само собой!!! Просто я о чём ...   19.10.2004 20:12
GoodWind   да, мой косяк...мне на ночь глядя показалось, что...   19.10.2004 20:28
Amro   Ещё одно но о том же дне ... там мадо найти тоже ...   19.10.2004 20:36
GoodWind   я думаю делить на две части, и каждую часть на 2 ч...   19.10.2004 20:40
Guest   Ладно, делать нечего, придётся ради сохранения соб...   19.10.2004 21:25
volvo   Вот так: программа вычисляет площадь пирамиды п...   20.10.2004 0:11
Guest   Вообщем вот полный код. Проблема в одном : после ...   20.10.2004 13:54
volvo   можешь дать мне координаты всех вершин ?   20.10.2004 14:02
zx1024   Это не площадь 4-угольника. s := s + Plosh(x[1], ...   20.10.2004 14:33
zx1024   После минутных размышлений... Не всегда можно сраз...   20.10.2004 14:44
Atos   Была недавно в чём-то похожая тема http://pascalne...   20.10.2004 14:55
volvo   Так в случае выпуклого основания проблемы нет. А в...   20.10.2004 14:58
Atos   Наверное, следует уточнить условие... Имхо, всё-та...   20.10.2004 15:13
Amro   Видать придётся!!! Вообщето другого ...   20.10.2004 15:14
volvo   Если это действительно только выпуклый многоугол...   20.10.2004 15:31
zx1024   Только задавать вершины основания придётся в одно...   20.10.2004 23:21
volvo   zx1024 Мне это казалось само собой разумеющимся......   20.10.2004 23:34
Amro   volvo Гений!!! Админы должны прибавлят...   20.10.2004 23:49
Guest   volvo: ну к примеру я взял такие : 1 - (1,1,1); 2...   21.10.2004 9:39
volvo   Сделал динамическое распределение вершин... Програ...   21.10.2004 12:23


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

 



- Текстовая версия 29.07.2025 22:35
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"