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

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

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

Написал программу, не могу понять почему она не выводит то, что нужно, помоги пожалуйста кто может! пример работы: если исходная матрица такая: 5 3 4 3 1 2 4 3 8 на выходе должно получиться вот так: 3 1 2 5 3 4 4 3 8
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <time.h>
  5.  
  6. int main(void)
  7. {
  8. int i,j,n,m,t,max,p;
  9. printf("Enter Size(n,m): ");
  10. scanf("%i %i", &n,&m);
  11. int (*Mas)[n][m] = (int (*)[n][m])malloc(100);
  12. int (*Vector)[n] = (int (*)[n])malloc(100);
  13. srand (time (NULL));
  14. for (i=0; i<n; i++)
  15. {
  16. for (j=0; j<m; j++)
  17. {
  18. *Mas[i][j]=(rand()%10);
  19. printf("%2i",*Mas[i][j]);
  20. }
  21. printf("\n");
  22. }
  23. for(i=0; i<n; i++)
  24. {
  25. max=*Mas[i][1];
  26. for(j=1; j<m; j++);
  27. if(*Mas[i][j]>max)
  28. {
  29. max= *Mas[i][j];
  30. }
  31. *Vectori]=max;
  32. }
  33. for(i=1; i<n; i++)
  34. for(j=n; j>0; j--)
  35. {
  36. if(*Vector[j-1]> *Vector[j])
  37. {
  38. t= *Vector[j-1];
  39. *Vector[j-1]= *Vector[j];
  40. *Vector[j]=t;
  41. for (p=0; p<m; p++)
  42. {
  43. t= *Mas[j-1][p];
  44. *Mas[j-1][p]= *Mas[j][p];
  45. *Mas[j][p]=t;
  46. }
  47. }
  48. }
  49. printf("New Massiv\n");
  50. for(i=0; i<n; i++)
  51. {
  52. for(j=0; j<m; j++)
  53. {
  54. printf("%2i",*Mas[i][j]);
  55. }
  56. printf("\n");
  57. }
  58. free(Mas);
  59. }

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

textual
Листинг программы
  1. for(i=0; i<n; i++)
  2. {
  3.  max=*Mas[i][0];
  4.  for(j=1; j<m; j++);// последнюю ; убирайте
  5.  if(*Mas[i][j]>max)
  6.  {
  7.  max= *Mas[i][j];
  8.  }
  9.  *Vector[i]=max;

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

  1. Объявляется цикл for для перебора строк матрицы.
  2. В каждой итерации цикла инициализируется переменная max значением первого элемента текущей строки матрицы.
  3. В каждой итерации цикла (начиная со второй) сравнивается каждый элемент текущей строки с текущим максимальным значением. Если текущий элемент больше max, то он становится новым max.
  4. В каждой итерации цикла (начиная со второй) значение max присваивается соответствующему элементу вектора.
  5. Код в блоке if от найденного максима в текущей строке не выполняется (возможно, это какая-то ошибка в коде, потому что блок if никогда не выполняется).
  6. Код в цикле завершается, и управление передается следующему оператору или конструкции в коде.

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


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

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

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

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

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

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