Заменить матрицу, чтобы первой стояла строка с max суммой элементов, а последней - с min суммой - C (СИ)

Узнай цену своей работы

Формулировка задачи:

заменить заданную прямоугольную матрицу так, чтобы на первом месте стояла строка максимальной а на последнем месте строка с минимальной суммой элементов, сохранив все элементы исходной матрицы. Что не так, поправьте пожалуйста.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
int i, j, l, maxstr, sum, minstr, n, max, min, k, u;
int main()
{
int a[i][j], b[i][j];   
printf("kolichestvo strok matrici=");
scanf("%d",&n);
printf("kolichestvo stolbcov matrici=");
scanf("%d",&l);
for(i = 0; i < n; i++)
 {
   for (j = 0; j <l; j++)
  { 
    printf("Vvedite b[%d][%d]", i, j);
    scanf("%d",&b[i][j]); 
  }
 }   
 
for (i=0;i<n;i++)
{
     printf("\n");
    for (j=0;j<l;j++)
   {
   
    printf("%d  ",b[i][j]);
     
   } 
}
sum=0;
for (j=0;j<l;j++)
{
sum=sum+b[1][j];
max=sum;
maxstr=0;
min=sum;
minstr=0;
}
for (i=0;i<n;i++)
{ sum=0;
  for (j=0; j<l;j++)
    { sum=sum+b[i][j];
      if (max>sum)
      {
        max=sum;
        maxstr=i;
      }
      if (min<sum)
      {
        min=b[i][j];
        minstr=i;
      } 
    }
}
if(min!=max)
{
for (j=0;j<l;j++)
 {
   a[0][j]=b[maxstr][j];
 }
 for (i=0;i<n;i++)
 {
     k=0;   
    if (i!=maxstr) 
    {
     if (i!=minstr)
      {
        k++;
        for (j=0;j<l;j++)
            {
              b[k][j]=a[i][j];      
            }
      }
    }
}
 for (j=0;j<l;j++)
 {
 a[n][j]=b[minstr][j];
 }
}
else
{
printf(summa vseh stroc ravna);
}
 
for (i=0;i<n;i++)
{
     printf("\n");
    for (j=0;j<l;j++)
   {
   
    printf("%d  ",a[i][j]);
     
   } 
}
system("PAUSE");
return 0; 
 
}

Решение задачи: «Заменить матрицу, чтобы первой стояла строка с max суммой элементов, а последней - с min суммой»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
//заменить заданную прямоугольную матрицу так, чтобы на первом месте стояла
//строка максимальной а на последнем месте строка с минимальной суммой элементов,
// сохранив все элементы исходной матрицы.
int main()
{
    int i, j, l, maxstr, minstr, n, max = 0, min, sum, **p = NULL, *tmp;
    printf("kolichestvo strok matrici=");
    scanf("%d",&n);
    printf("kolichestvo stolbcov matrici=");
    scanf("%d",&l);
    p = malloc(n * sizeof(*p));
    for(i = 0; i < n; i++){
        p[i] = malloc(l * sizeof(p));
        for (j = 0; j <l; j++){
            printf("Vvedite b[%d][%d]", i, j);
            scanf("%d", &p[i][j]);
            if(i == 0)
                max += p[i][j];
        }
    }
    min = max;
    maxstr = minstr = 0;
    puts("Source matrix:");
    for (i = 0; i < n; i++){
        sum = 0;
        for (j = 0; j < l; j++){
            printf("%6d",p[i][j]);
            sum += p[i][j];
        }
        if(sum > max){
            max = sum;
            maxstr = i;
        }
        if(sum < min){
            min = sum;
            minstr = i;
        }
        printf("\n");
    }
    printf("maximum sum is row %d = %d minimum sum is row  %d = %d\n", maxstr, max, minstr, min);
    puts("Sorted matrix:");
    tmp = p[0];
    p[0] = p[maxstr];
    p[maxstr] = tmp;
    tmp = p[n - 1];
    p[n - 1] = p[minstr];
    p[minstr] = tmp;
    for(i = 0; i < n; i++){
        for(j = 0; j < l; j++)
            printf("%6d", p[i][j]);
        printf("\n");
    }
    for(i = 0; i < n; i++)
        free(p[i]);
    free(p);
    p = NULL;
return 0;
 
}

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

  1. Подключение необходимых библиотек
  2. Задание постановки задачи
  3. Объявление переменных: i, j, l, maxstr, minstr, n, max, min, sum, *p = NULL, tmp;
  4. Ввод количества строк и столбцов матрицы
  5. Выделение памяти под матрицу
  6. Ввод элементов матрицы
  7. Инициализация переменных max и min значением первого элемента матрицы
  8. Поиск строки с максимальной суммой элементов
  9. Поиск строки с минимальной суммой элементов
  10. Вывод исходной матрицы
  11. Вывод матрицы с замещенными строками
  12. Освобождение памяти

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

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