Упорядочить столбцы матрицы, чтобы их последние элементы образовывали убывающую последовательность - C (СИ)

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

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

Задали задачу на Си. Дана матрица размера M x N. Упорядочить ее столбцы так, чтобы их последние элементы образовывали убывающую последовательность. написал код:
#include <stdio.h>
main()
{
    int mas[3][3]={1,2,3,4,5,6,7,8,9},i,j,z,temp;

        for(j=0,i=2,z=1;j<3;j++,z++)
        {
        if(mas[i][j]<mas[i][z])
        {
        printf("+");
    }
        }
        for(i=0;i<3;i++)
            for(j=0;j<3;j++)
            {
                printf("%d",mas[i][j]);
            }
}
если запустить, то выбьет три плюса, тоесть проверка на то что столбцы возрастающие, но как сделать чтобы они местами менялись? помогите пожайлуста

Решение задачи: «Упорядочить столбцы матрицы, чтобы их последние элементы образовывали убывающую последовательность»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <malloc.h>
#include <stdlib.h>
int main()
{
        float **mass,**mass1,temp;//mass - исходный, mass1 - новый с учетом дублирования
    int i,j,n,m,k=0,y=0,n1,m1,c=0; //n - строки, m - столбцы 1 масссива, n1 m1 второго, temp - temp)
          printf("BBEDUTE PA3MEPHOCTb MACCUBA\n");
          printf("BBEDUTE N\n");
          scanf("%d",&n);
          printf("BBEDUTE M\n");
          scanf("%d",&m);
          n1=n+1;//учет дублирования
          m1=m;
          //--------------------------выделение памяти
mass=(float**)malloc(n*sizeof(float*));
for(i=0;i<n;i++)
{
mass[i]=(float*)malloc(m*sizeof(float));
}
mass1=(float**)malloc(n1*sizeof(float*));
for(i=0;i<n1;i++)
{
mass1[i]=(float*)malloc(m1*sizeof(float));
}
//--------------------------/выделение памяти
//------------------------------zapolnenie и вывод---------------------------
for (i=0;i<n;i++)
          {
                for (j=0; j<m; j++)
                {
                  mass[i][j]=rand()%100;
                  mass1[i][j]=mass[i][j];
                }
                printf("\n"); 
          }
for(i=0;i<n;i++) 
{
for(j=0;j<m;j++)
{
printf("   [%d][%d]=%5.2f",i,j,mass[i][j]);
}
printf("\n");   
}
//------------------------------/zapolnenie и вывод---------------------------
printf(" -----------------------------------------------\n");
 
for(i=0;i<n-1;i++)
    for(j=0; j<n-1; j++)
        if(mass1[j][0]>mass1[j+1][0])
            for(k=0; k<m1; k++)
            {
                temp=mass1[j][k]; 
                mass1[j][k]=mass1[j+1][k]; 
                mass1[j+1][k]=temp;
            }
 for(i=0; i<m1; i++)
     mass1[n1-1][i]=mass1[n1-2][i];
 
printf(" -----------------------------------------------\n");
//-----------------------конечный вывод 2 массива 
for(i=0;i<n1;i++) 
{
for(j=0;j<m1;j++) 
{
printf("   [%d][%d]=%3.2f",i,j,mass1[i][j]);
}
printf("\n");   
}
//-----------------------/конечный вывод 2 массива 
return 0;
}

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

Код выполняет следующие действия:

  1. Ввод от пользователя
    • n - количество строк в матрице
    • m - количество столбцов в матрице
  2. Выделение памяти
    • mass и mass1 - двумерные массивы, в которых будут храниться исходные и упорядоченные данные соответственно
    • mass и mass1 выделяются с помощью функции malloc
  3. Заполнение матрицы случайными значениями
    • значения для mass и mass1 генерируются с помощью функции rand()%100
  4. Вывод исходной матрицы
    • значения матрицы mass выводятся на экран с помощью цикла for
  5. Упорядочивание матрицы
    • используется цикл for для перебора строк матрицы
    • для каждой строки используется еще один цикл for для перебора столбцов
    • если значение в текущем столбце больше значения в следующем столбце, происходит перестановка этих значений
    • после завершения перебора всех строк, последнее значение в последней строке перемещается в первую позицию последней строки
  6. Вывод упорядоченной матрицы
    • значения матрицы mass1 выводятся на экран с помощью цикла for
  7. Освобождение памяти
    • массивы mass и mass1 освобождаются с помощью функции free()

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


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

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

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