Отсортировать точки в порядке удаления их от центра тяжести - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста с решением такой задачи: В трехмерном пространстве задано множество материальных точек. Отсортировать эти точки в порядке удаления их от центра тяжести этого множества. Спасибо.

Решение задачи: «Отсортировать точки в порядке удаления их от центра тяжести»

textual
Листинг программы
#include<stdio.h>
 
int main()
{
 int i,n;
 float sx=0,sy=0,sz=0,sm=0,dist[5];
 
 //Структура содержит координаты точек и массу
  typedef struct tochka{
  float x,y,z,massa;
  };
 
  struct tochka  cent, toc[5]={
            {4,5,6,12},
            {7,8,9,23},
            {11,12,13,21},
            {14,15,16,32},
            {17,18,19,5}};
 
//Вычисление центра тяжести точек
  for(i=0;i<5;i++)
  {
   sx += toc[i].x*toc[i].massa;
   sy += toc[i].y * toc[i].massa;
   sz += toc[i].z * toc[i].massa;
   sm += toc[i].massa;
  }
  cent.x = sx/sm;
  cent.y = sy/sm;
  cent.z = sz/sm;
 
  //Определение массива квадратов расстояний от центра для каждой точки
  for(i=0;i<5;i++)
  dist[i]=(toc[i].x - cent.x)*(toc[i].x - cent.x) +
          (toc[i].y - cent.y)*(toc[i].y - cent.y) +
          (toc[i].z - cent.z)*(toc[i].z - cent.z);
 
//Сортировка полученного массива по возрастанию
  do
  {n=0;
   for(i=0;i<4;i++)
    if(dist[i]>dist[i+1])
    {
     sm=dist[i];
     dist[i]=dist[i+1];
     dist[i+1]=sm;
     n++;
    }
    }while(n!=0);
 
 
  for(i=0;i<5;i++)
   printf("\n%f",dist[i]);
 
  return 0;
  }

Объяснение кода листинга программы

  1. Включаем заголовочный файл stdio.h для использования функций ввода-вывода
  2. Объявляем переменные:
    • i, n - счетчики
    • sx, sy, sz, sm - суммы координат и массы точек
    • dist[5] - массив для хранения квадратов расстояний
    • struct tochka - объявление структуры, содержащей координаты точек и их массу
    • cent - переменная для хранения центра тяжести
    • toc[5] - массив структур tochka, содержащих координаты и массу точек
  3. Вычисляем центр тяжести, проходя по всем точкам и суммируя их координаты и массу
  4. Вычисляем квадраты расстояний от центра тяжести до каждой точки, сохраняем их в массиве dist
  5. Сортируем массив dist по возрастанию, используя алгоритм сортировки пузырьком
  6. Выводим отсортированные значения на экран
  7. Возвращаем 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.6 из 5
Похожие ответы