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

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


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

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

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