Дано m точек в n-мерном пространстве. Упорядочить точки по неубыванию их расстояний - C (СИ)
Формулировка задачи:
Дано m точек в n-мерном пространстве. Упорядочить точки по неубыванию их
расстояний до начала координат.
#include <stdio.h> #include <stdlib.h> #include <math.h> #define M 3 #define N 3 int main() { int m=0,max,y,z,i,j,A[M][N],R[M]={0,0,0}; for (i=0; i<M; i++) { for (j=0; j<N; j++) { scanf("%d", &A[i][j]); } } for (i=0; i<M; i++) { for (j=0; j<N; j++) { R[i]=R[i]+A[i][j]*A[i][j]; } } /*for (i=0; i<M-1; i++) { for (j=M-2; j>=i; j--) { if (R[j]>R[j+1]) { max=R[j]; R[j]=R[j+1]; R[j+1]=max; for (z=0; i<M; i++) { for (y=0; y<N; y++) { m=A[z][y]; A[z][y]=A[z+1][y]; A[z+1][y]=m; } } } } } */ for (i=0; i<M-1; i++) { if (R[i]>R[i+1]) { for (z=0; i<M; i++) { for (j=0; j<N; j++) { m=A[z][j]; A[z][j]=A[z+1][j]; A[z+1][j]=m; } } } } for (i=0; i<M; i++) { for (j=0; j<N; j++) { printf("%d ", A[i][j]); } printf("\n"); } }
Решение задачи: «Дано m точек в n-мерном пространстве. Упорядочить точки по неубыванию их расстояний»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <math.h> #define M 3 #define N 3 int main() { int m, i, j, k, A[M][N], R[M]; for (i = 0; i < M; i++) { for (j = 0; j < N; j++) { scanf("%d", &A[i][j]); } } for (i = 0; i < M; i++) { R[i] = 0; for (j = 0; j < N; j++) { R[i] += A[i][j] * A[i][j]; } } for (i = 0; i < M; i++) { for (j = 0; j < N; j++) { printf("%d ", A[i][j]); } printf("= %d", R[i]); printf("\n"); } for (i = 0; i< M - 1; i++) { for (j = i + 1; j < M; j++) { if (R[i]>R[j]) { for (k = 0; k < N; k++) { m = A[i][k]; A[i][k] = A[j][k]; A[j][k] = m; } m = R[i]; R[i] = R[j]; R[j] = m; } } } printf("\n===================================\n"); for (i = 0; i < M; i++) { for (j = 0; j < N; j++) { printf("%d ", A[i][j]); } printf("= %d", R[i]); printf("\n"); } getchar(); getchar(); }
Объяснение кода листинга программы
В этом коде:
- Создаются массивы A[M][N] для хранения координат точек в n-мерном пространстве и R[M] для хранения их квадратов.
- С помощью двух вложенных циклов точки считываются с консоли и сохраняются в массиве A.
- С помощью ещё двух вложенных циклов вычисляются квадраты расстояний от каждой точки до начала координат, результат сохраняется в массиве R.
- С помощью двух вложенных циклов и условного оператора точки сортируются по неубыванию их расстояний.
- Сортировка отражается в перестановке координат точек в массиве A и их квадратов в массиве R.
- Выводится отсортированный массив A и массив R.
- Выполняется дополнительная сортировка по неубыванию значений в массиве R.
- Выводится отсортированный массив A и массив R.
- Программа завершается после нажатия двух символов Enter.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д