Заменить матрицу, чтобы первой стояла строка с 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; }
Объяснение кода листинга программы
- Подключение необходимых библиотек
- Задание постановки задачи
- Объявление переменных: i, j, l, maxstr, minstr, n, max, min, sum, *p = NULL, tmp;
- Ввод количества строк и столбцов матрицы
- Выделение памяти под матрицу
- Ввод элементов матрицы
- Инициализация переменных max и min значением первого элемента матрицы
- Поиск строки с максимальной суммой элементов
- Поиск строки с минимальной суммой элементов
- Вывод исходной матрицы
- Вывод матрицы с замещенными строками
- Освобождение памяти
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д