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

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

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

> Задача: Центр тяжести
ipu
сообщение 12.10.2004 21:43
Сообщение #1


Гость






Помогите с задачей: Центр тяжести. Система из n материальных точек в пространстве задана с помощью последовательности действительных чисел x1, y1, z1, p1,; x2, y2, z2, p2 … xn, yn, zn, pn. Где xi, yi, zi – координаты i-точки, pi-ее вес. (i =1,2…n). Получить координаты центра тяжести системы. Проверить правильность результата, определив суммарный момент вращения.
Заранее спасибо, особенно интересует суммарный момент вращения
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 23.10.2004 5:23
Сообщение #2


Гость






Решение выглядит так:


Const
 nPoints = 4;

{ Допустим, что данные хранится в массиве
(также можно осуществить ввод из файла) }
Const
 stream: Array[1 .. 4 * nPoints] Of Real =
 (*   X    Y    Z    p   *)
   ( 1.0, 1.0, 1.0, 2.0,
     5.0, 1.0, 1.0, 1.5,
     5.0, 5.0, 1.0, 2.5,
     1.0, 5.0, 1.0, 2.75 );

Var
 i: Integer;
 x, y, z, p: Array[1 .. nPoints] Of Real;
 sx, sy, sz, sm: Real;

 centerx, centery, centerz: Real;
 momentx, momenty, momentz: Real;
Begin
 { Подготовим данные к более удобному использованию }
 For i := 1 To nPoints Do
   Begin
     x[i] := stream[Pred(i)*nPoints + 1];
     y[i] := stream[Pred(i)*nPoints + 2];
     z[i] := stream[Pred(i)*nPoints + 3];
     p[i] := stream[Pred(i)*nPoints + 4];
   End;

 { Подсчет сумм для вычисления центра тяжести }
 sx := 0; sy := 0; sz := 0; sm := 0;
 for i := 1 to nPoints Do
  Begin
    sx := sx + x[i]*p[i];
    sy := sy + y[i]*p[i];
    sz := sz + z[i]*p[i];
    sm := sm + p[i];
  End;

 { координаты самого центра тяжести }
 centerx := sx/sm;
 centery := sy/sm;
 centerz := sz/sm;

 WriteLn( 'mass center: (',
   centerx:5:2, centery:5:2, centerz:5:2, ')' );

 momentx := 0.0; momenty := 0.0; momentz := 0.0;
 {сумма моментов вращения - }
 For i := 1 To nPoints Do
   Begin
     momentx := momentx + (centerx - x[i]) * p[i];
     momenty := momenty + (centery - y[i]) * p[i];
     momentz := momentz + (centerz - z[i]) * p[i];
   End;

{ при правильно рассчитанном центре тяжести суммарный
момент вращения должен быть нулевым }
 WriteLn( 'moment : (',
   momentx:5:2, momenty:5:2, momentz:5:2, ')' );
End.

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

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


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

 



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