Упорядочить матрицу ее строки по неубыванию наибольших элементов строк - 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 никогда не выполняется).
- Код в цикле завершается, и управление передается следующему оператору или конструкции в коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д