Упорядочить матрицу ее строки по неубыванию наибольших элементов строк - C (СИ)
Формулировка задачи:
Написал программу, не могу понять почему она не выводит то, что нужно, помоги пожалуйста кто может!
пример работы:
если исходная матрица такая:
5 3 4
3 1 2
4 3 8
на выходе должно получиться вот так:
3 1 2
5 3 4
4 3 8
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
int main(void)
{
int i,j,n,m,t,max,p;
printf("Enter Size(n,m): ");
scanf("%i %i", &n,&m);
int (*Mas)[n][m] = (int (*)[n][m])malloc(100);
int (*Vector)[n] = (int (*)[n])malloc(100);
srand (time (NULL));
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{
*Mas[i][j]=(rand()%10);
printf("%2i",*Mas[i][j]);
}
printf("\n");
}
for(i=0; i<n; i++)
{
max=*Mas[i][1];
for(j=1; j<m; j++);
if(*Mas[i][j]>max)
{
max= *Mas[i][j];
}
*Vectori]=max;
}
for(i=1; i<n; i++)
for(j=n; j>0; j--)
{
if(*Vector[j-1]> *Vector[j])
{
t= *Vector[j-1];
*Vector[j-1]= *Vector[j];
*Vector[j]=t;
for (p=0; p<m; p++)
{
t= *Mas[j-1][p];
*Mas[j-1][p]= *Mas[j][p];
*Mas[j][p]=t;
}
}
}
printf("New Massiv\n");
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf("%2i",*Mas[i][j]);
}
printf("\n");
}
free(Mas);
}Решение задачи: «Упорядочить матрицу ее строки по неубыванию наибольших элементов строк»
textual
Листинг программы
for(i=0; i<n; i++)
{
max=*Mas[i][0];
for(j=1; j<m; j++);// последнюю ; убирайте
if(*Mas[i][j]>max)
{
max= *Mas[i][j];
}
*Vector[i]=max;
Объяснение кода листинга программы
- Объявляется цикл for для перебора строк матрицы.
- В каждой итерации цикла инициализируется переменная max значением первого элемента текущей строки матрицы.
- В каждой итерации цикла (начиная со второй) сравнивается каждый элемент текущей строки с текущим максимальным значением. Если текущий элемент больше max, то он становится новым max.
- В каждой итерации цикла (начиная со второй) значение max присваивается соответствующему элементу вектора.
- Код в блоке if от найденного максима в текущей строке не выполняется (возможно, это какая-то ошибка в коде, потому что блок if никогда не выполняется).
- Код в цикле завершается, и управление передается следующему оператору или конструкции в коде.