Упорядочить столбцы матрицы, чтобы их последние элементы образовывали убывающую последовательность - 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;
- }
Объяснение кода листинга программы
Код выполняет следующие действия:
- Ввод от пользователя
- n - количество строк в матрице
- m - количество столбцов в матрице
- Выделение памяти
- mass и mass1 - двумерные массивы, в которых будут храниться исходные и упорядоченные данные соответственно
- mass и mass1 выделяются с помощью функции malloc
- Заполнение матрицы случайными значениями
- значения для mass и mass1 генерируются с помощью функции rand()%100
- Вывод исходной матрицы
- значения матрицы mass выводятся на экран с помощью цикла for
- Упорядочивание матрицы
- используется цикл for для перебора строк матрицы
- для каждой строки используется еще один цикл for для перебора столбцов
- если значение в текущем столбце больше значения в следующем столбце, происходит перестановка этих значений
- после завершения перебора всех строк, последнее значение в последней строке перемещается в первую позицию последней строки
- Вывод упорядоченной матрицы
- значения матрицы mass1 выводятся на экран с помощью цикла for
- Освобождение памяти
- массивы mass и mass1 освобождаются с помощью функции free()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д