Перестановкой столбцов и строк добиться максимального приближения центра тяжести массива к геометрическому центру - 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на экран.