Перестановкой столбцов и строк добиться максимального приближения центра тяжести массива к геометрическому центру - C (СИ)
Формулировка задачи:
задано количество строк и столбцов,и положительные действительные значения.перестановкой столбцов и строк добиться максимального приближения центра тяжести массива к геометрическому центру.
в C.
в чем ошибка и как лучше сделать?
#include <stdio.h> #include <stdlib.h> #include <conio.h> int a[10][10]; int i,j,n,m,s,max; printf("Vvedite razmer massiva"); scanf("%d", &n); scanf("%d", &m); for(i=0;i<n;i++) { for(j=0;j<m;j++) { printf("vvedite elt"); scanf("%d",&a[i][j]); } } for(i=0;i<n;i++) { for(j=0;j<m;j++) { printf("%d ",a[i][j]); } printf("\n"); } for(i=0;i<n;i++) for(j=0;j<m;j++) { s(i)+=a[i][j]; /* пытался найти сумму столбцов */ if(s(i)>max) /* найти максимальную сумму */ { s(i)=max; } max=a[n/2][m/2]; /* переместить на середину */ } return 0;
Решение задачи: «Перестановкой столбцов и строк добиться максимального приближения центра тяжести массива к геометрическому центру»
textual
Листинг программы
void output (int a[100][100], int n, int m) //Вывод массива { int i, j; for(i=0;i<n;i++) { for(j=0;j<m;j++) { printf("%d ",a[i][j]); } printf("\n"); } } void mstr(int a[][100],int i,int k,int n) { int t[100],h; for (h=0;h<n;h++) t[h]=a[i][h]; for (h=0;h<n;h++) a[i][h]=a[k][h]; for (h=0;h<n;h++) a[k][h]=t[h]; } void msto(int a[][100],int i,int k,int n) { int t[100],h; for (h=0;h<n;h++) t[h]=a[h][i]; for (h=0;h<n;h++) a[h][i]=a[h][k]; for (h=0;h<n;h++) a[h][k]=t[h]; } int _tmain(int argc, _TCHAR* argv[]) { int a[100][100]; int i,j,n,m,k,l, k1, k2; printf("Vvedite razmeri massiva"); scanf("%d",&n); scanf("%d",&m); for(i=0;i<n;i++) { for(j=0;j<m;j++) { printf("vvedite elt"); scanf("%d",&a[i][j]); } } output(a, n, m); int max; for(i=1, max=a[0][0], k1=0, k2=0; i<n-1; i++) for(j=0; j<m; j++) if(max<a[i][j]) max=a[k1=i][k2=j]; printf("\n %d[{%d}{%d}] \n", max, k1, k2); mstr(a, k1, n/2, n); msto(a, k2, m/2, m); output(a, n, m); return 0; }
Объяснение кода листинга программы
- В функции
output
происходит вывод массиваa
на экран. - В функции
mstr
осуществляется перестановка строк в массивеa
таким образом, что элементы из строкиi
становятся элементами строкиk
, а элементы из строкиk
становятся элементами строкиi
. - В функции
msto
осуществляется перестановка столбцов в массивеa
таким образом, что элементы из столбцаi
становятся элементами столбцаk
, а элементы из столбцаk
становятся элементами столбцаi
. - В функции
_tmain
происходит ввод размеров массиваn
иm
, а затем ввод всех элементов массиваa
. - Затем происходит поиск максимального элемента массива
a
и его позиции. - После этого вызываются функции
mstr
иmsto
, которые переставляют строки и столбцы массиваa
соответственно так, чтобы центр тяжести массиваa
был максимально приближен к геометрическому центру. - В конце функции
_tmain
происходит вывод массиваa
на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д