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

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

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

Упорядочить строки массива по неубыванию его первых элементов. Не могу воплотить алгоритм сравнения первых элементов строк и далее замены этих строк, вот что получается, но работает явно не корректно:
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. int main()
  5. {
  6. setlocale(LC_CTYPE,"Russian");
  7. int n=0,m=0,i=0,j=0,t=0,k,l;
  8. int **a;
  9. printf("Введите колличество строк массива: ");
  10. scanf("%d",&m);
  11. printf("Введите колличество столбцов массива: ");
  12. scanf("%d",&n);
  13. a=(int**)malloc(m*sizeof(int*));
  14. for (i=0;i<m; ++i)
  15. {
  16. a[i]=(int**)malloc(n*sizeof(int*));
  17. }
  18. srand(time(NULL));
  19. for (i=0;i<m; ++i)
  20. {
  21. for(j=0;j<n; ++j)
  22. {
  23. a[i][j]=rand()%100;
  24. }
  25. }
  26. printf("Массив \n");
  27. for(i=0;i<m;++i)
  28. {
  29. for(j=0;j<n;++j)
  30. {
  31. printf("%d ",a[i][j]);
  32. }
  33. printf("\n");
  34. }
  35.  
  36. for(i=0,j=0;i<m;i++)
  37. for(k=i+1,l=0;k<m;k++)
  38. {
  39. if(a[i][j]>a[k][l])
  40. {
  41. for(i=0;i<m;i++)
  42. for (k=i+1;k<m;k++)
  43. {
  44. for(j=0;j<n;j++)
  45. for(l=0;l<n;l++)
  46. {
  47. t=a[i][j];
  48. a[i][j]=a[k][l];
  49. a[k][l]=t;
  50. }
  51. }
  52. }
  53. }
  54. printf("\n");
  55. printf("Новый массив\n");
  56. for(i=0;i<m;i++)
  57. {
  58. for(k=0;k<n;k++)
  59. {
  60. printf("%d ",a[i][k]);
  61. }
  62. printf("\n");
  63. }
  64. return 0;
  65. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <conio.h>
  5.  
  6. void main(void)
  7. {
  8.     //setlocale(LC_CTYPE,"Russian");
  9.     clrscr();
  10.     int n=0,m=0,i=0,j=0,t=0,k,l;
  11.     int **a;
  12.     printf("CTPOKu: ");
  13.     scanf("%d",&m);
  14.     printf("CTolbci: ");
  15.     scanf("%d",&n);
  16.     a=(int**)malloc(m*sizeof(int*));
  17.     for (i=0;i<m; ++i)
  18.     {
  19.         a[i]=(int*)malloc(n*sizeof(int*));
  20.     }
  21.     srand(time(NULL));
  22.     for (i=0;i<m; ++i)
  23.     {
  24.         for(j=0;j<n; ++j)
  25.         {
  26.             a[i][j]=rand()%100;
  27.         }
  28.     }
  29.     printf("Massiv \n");
  30.     for(i=0;i<m;++i)
  31.     {
  32.         for(j=0;j<n;++j)
  33.         {
  34.             printf("%d ",a[i][j]);
  35.         }
  36.         printf("\n");
  37.     }
  38.  
  39.  
  40.  for(i=0;i<(m-1);i++)
  41.  {
  42.     for(j=i+1;j<m;j++)
  43.     {
  44.         printf("%d %d %d %d", i,j,a[i][0],a[j][0]);
  45.         getch();
  46.         if((a[i][0])>(a[j][0]))
  47.         {
  48.             for(k=0;k<n;k++)
  49.             {
  50.                 t=a[i][k];
  51.                 a[i][k]=a[j][k];
  52.                 a[j][k]=t;
  53.             }
  54.         }
  55.     }
  56.  }
  57.  
  58.  
  59. //printf("\n");
  60.    printf("\nnew mass\n");
  61. for(i=0;i<m;i++)
  62.   {
  63.     for(k=0;k<n;k++)
  64.     {
  65.         printf("%d ",a[i][k]);
  66.     }
  67.   printf("\n");
  68.   }
  69.     //return 0;
  70.     getch();
  71. }

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


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

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

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы