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

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

  1. В функции output происходит вывод массива a на экран.
  2. В функции mstr осуществляется перестановка строк в массиве a таким образом, что элементы из строки i становятся элементами строки k, а элементы из строки k становятся элементами строки i.
  3. В функции msto осуществляется перестановка столбцов в массиве a таким образом, что элементы из столбца i становятся элементами столбца k, а элементы из столбца k становятся элементами столбца i.
  4. В функции _tmain происходит ввод размеров массива n и m, а затем ввод всех элементов массива a.
  5. Затем происходит поиск максимального элемента массива a и его позиции.
  6. После этого вызываются функции mstr и msto, которые переставляют строки и столбцы массива a соответственно так, чтобы центр тяжести массива a был максимально приближен к геометрическому центру.
  7. В конце функции _tmain происходит вывод массива a на экран.

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


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

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

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