Упорядочить строки массива по неубыванию его первых элементов - C (СИ)
Формулировка задачи:
Упорядочить строки массива по неубыванию его первых элементов. Не могу воплотить алгоритм сравнения первых элементов строк и далее замены этих строк, вот что получается, но работает явно не корректно:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main()
{
setlocale(LC_CTYPE,"Russian");
int n=0,m=0,i=0,j=0,t=0,k,l;
int **a;
printf("Введите колличество строк массива: ");
scanf("%d",&m);
printf("Введите колличество столбцов массива: ");
scanf("%d",&n);
a=(int**)malloc(m*sizeof(int*));
for (i=0;i<m; ++i)
{
a[i]=(int**)malloc(n*sizeof(int*));
}
srand(time(NULL));
for (i=0;i<m; ++i)
{
for(j=0;j<n; ++j)
{
a[i][j]=rand()%100;
}
}
printf("Массив \n");
for(i=0;i<m;++i)
{
for(j=0;j<n;++j)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
for(i=0,j=0;i<m;i++)
for(k=i+1,l=0;k<m;k++)
{
if(a[i][j]>a[k][l])
{
for(i=0;i<m;i++)
for (k=i+1;k<m;k++)
{
for(j=0;j<n;j++)
for(l=0;l<n;l++)
{
t=a[i][j];
a[i][j]=a[k][l];
a[k][l]=t;
}
}
}
}
printf("\n");
printf("Новый массив\n");
for(i=0;i<m;i++)
{
for(k=0;k<n;k++)
{
printf("%d ",a[i][k]);
}
printf("\n");
}
return 0;
}Решение задачи: «Упорядочить строки массива по неубыванию его первых элементов»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <conio.h>
void main(void)
{
//setlocale(LC_CTYPE,"Russian");
clrscr();
int n=0,m=0,i=0,j=0,t=0,k,l;
int **a;
printf("CTPOKu: ");
scanf("%d",&m);
printf("CTolbci: ");
scanf("%d",&n);
a=(int**)malloc(m*sizeof(int*));
for (i=0;i<m; ++i)
{
a[i]=(int*)malloc(n*sizeof(int*));
}
srand(time(NULL));
for (i=0;i<m; ++i)
{
for(j=0;j<n; ++j)
{
a[i][j]=rand()%100;
}
}
printf("Massiv \n");
for(i=0;i<m;++i)
{
for(j=0;j<n;++j)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
for(i=0;i<(m-1);i++)
{
for(j=i+1;j<m;j++)
{
printf("%d %d %d %d", i,j,a[i][0],a[j][0]);
getch();
if((a[i][0])>(a[j][0]))
{
for(k=0;k<n;k++)
{
t=a[i][k];
a[i][k]=a[j][k];
a[j][k]=t;
}
}
}
}
//printf("\n");
printf("\nnew mass\n");
for(i=0;i<m;i++)
{
for(k=0;k<n;k++)
{
printf("%d ",a[i][k]);
}
printf("\n");
}
//return 0;
getch();
}