Отсортировать точки в порядке удаления их от центра тяжести - 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; }
Объяснение кода листинга программы
- Включаем заголовочный файл stdio.h для использования функций ввода-вывода
- Объявляем переменные:
- i, n - счетчики
- sx, sy, sz, sm - суммы координат и массы точек
- dist[5] - массив для хранения квадратов расстояний
- struct tochka - объявление структуры, содержащей координаты точек и их массу
- cent - переменная для хранения центра тяжести
- toc[5] - массив структур tochka, содержащих координаты и массу точек
- Вычисляем центр тяжести, проходя по всем точкам и суммируя их координаты и массу
- Вычисляем квадраты расстояний от центра тяжести до каждой точки, сохраняем их в массиве dist
- Сортируем массив dist по возрастанию, используя алгоритм сортировки пузырьком
- Выводим отсортированные значения на экран
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д