Упорядочить матрицу ее строки по неубыванию наибольших элементов строк - 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;

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

  1. Объявляется цикл for для перебора строк матрицы.
  2. В каждой итерации цикла инициализируется переменная max значением первого элемента текущей строки матрицы.
  3. В каждой итерации цикла (начиная со второй) сравнивается каждый элемент текущей строки с текущим максимальным значением. Если текущий элемент больше max, то он становится новым max.
  4. В каждой итерации цикла (начиная со второй) значение max присваивается соответствующему элементу вектора.
  5. Код в блоке if от найденного максима в текущей строке не выполняется (возможно, это какая-то ошибка в коде, потому что блок if никогда не выполняется).
  6. Код в цикле завершается, и управление передается следующему оператору или конструкции в коде.

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


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

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

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