Поменять местами максимальные элементы массива и матрицы - C (СИ)

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

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

Мне нужно решить задачу "Поменять местами максимальные элементы массива А (45) и матрицы В (6х9)." Я составила программу, а мне говорят что нужно её решить одним циклом, а я не понимаю как. Помогите, посмотрите, посоветуйте, что изменить
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #define L 4 // Количество элементов массива
  4. #define N 3 // Количество строк матрицы
  5. #define M 2 // Количество столбцов матрицы
  6. void EnterData(double A[L], int num, double B[N][M], int numStr, int numCol);
  7. void EnterMatrix(double B[N][M], int numStr, int numCol);
  8. void OutputArray(double A[L], int num);
  9. void OutputMatrix(double B[N][M], int numStr, int numCol);
  10. void Change(double A[L], int num, double B[N][M], int numStr, int numCol);
  11. int main()
  12. {
  13. double A[L], B[N][M];
  14. // Ввод массива и матрицы
  15. printf("Enter array A and Matrix B:\n");
  16. EnterData(A, L, B, N, M);
  17. printf("\n");
  18. // Вывод введенных массива и матрицы
  19. printf("Entered array A:\n");
  20. OutputArray(A, L);
  21. printf("Entered matrix B:\n");
  22. OutputMatrix(B, N, M);
  23. printf("\n");
  24. Change(A, L, B, N, M);
  25. // Вывод измененных матриц
  26. printf("Changed array A:\n");
  27. OutputArray(A, L);
  28. printf("Changed matrix B:\n");
  29. OutputMatrix(B, N, M);
  30. printf("\n");
  31. getch();
  32. return 0;
  33. }
  34. // Ввод массива и матрицы
  35. void EnterData(double A[L], int num, double B[N][M], int numStr, int numCol)
  36. {
  37. int i, j;
  38. for (i = 0; i < num; ++i)
  39. {
  40. printf("Enter element[%d] = ", i);
  41. scanf("%lf", &A[i]);
  42. }
  43. for (i = 0; i < numStr; ++i)
  44. for (j = 0; j < numCol; ++j)
  45. {
  46. printf("Enter element[%d][%d] = ", i, j);
  47. scanf("%lf", &B[i][j]);
  48. }
  49. }
  50. // Вывод массива
  51. void OutputArray(double A[L], int num)
  52. {
  53. int i;
  54. for (i = 0; i < num; ++i)
  55. printf("%5.2lf ", A[i]);
  56. printf("\n");
  57. }
  58.  
  59. // Вывод матрицы
  60. void OutputMatrix(double B[N][M], int numStr, int numCol)
  61. {
  62. int i, j;
  63. for (i = 0; i < numStr; ++i)
  64. {
  65. for (j = 0; j < numCol; ++j)
  66. printf("%5.2lf ", B[i][j]);
  67. printf("\n");
  68. }
  69. }
  70. // Смена максимальный элементов массива и матрицы
  71. void Change(double A[L], int num, double B[N][M], int numStr, int numCol)
  72. {
  73. double buf;
  74. int i, j,
  75. k, l, m;
  76. k = 0;
  77. for (i = 1; i < num; ++i)
  78. if (A[i] > A[k])
  79. k = i;
  80. l = m = 0;
  81. for (i = 0; i < numStr; ++i)
  82. for (j = 0; j < numCol; ++j)
  83. if (B[i][j] > B[l][m])
  84. {
  85. l = i;
  86. m = j;
  87. }
  88. buf = A[k];
  89. A[k] = B[l][m];
  90. B[l][m] = buf;
  91. }

Решение задачи: «Поменять местами максимальные элементы массива и матрицы»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5.  
  6. #define L 14 // Количество элементов массива
  7. #define N 6 // Количество строк матрицы
  8. #define M 9 // Количество столбцов матрицы
  9.  
  10. int main()
  11. {
  12.     int A[L], B[N][M], k, l, m, buf;
  13.     l = k = m = 0;
  14.     srand(time(NULL));
  15.     for (int i = 0; i < L || i < N; ++i) {
  16.         if (i < L)
  17.             printf("\n[%2d]    ", A[i] = rand() % 100);
  18.         if (i < N)
  19.             for (int j = 0; j < M; ++j)
  20.                 printf("[%2d]", B[i][j] = rand() % 100);
  21.     }
  22.     for (int i = 0; i < L || i < N; ++i) // Поиск и в матрице и в массиве
  23.     {                                   // одним циклом
  24.         if (i < L)
  25.             if (A[i] > A[k])
  26.                 k = i;
  27.         if (i < N)
  28.             for (int j = 0; j < M; ++j)
  29.                 if (B[i][j] > B[l][m])
  30.                 {
  31.                     l = i;
  32.                     m = j;
  33.                 }
  34.     }
  35.     buf = A[k];
  36.     A[k] = B[l][m];
  37.     B[l][m] = buf;
  38.     printf("\n Change [%2d] in matrix on [%2d] in array\n", A[k], B[l][m]);
  39.     return 0;
  40. }

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

  1. Включаем необходимые заголовочные файлы для работы с I/O, генерацией случайных чисел и временем
  2. Определяем количество элементов массива и матрицы
  3. Инициализируем переменные для хранения индексов максимальных элементов
  4. Инициализируем генератор случайных чисел текущим временем
  5. Заполняем массив и матрицу случайными числами
  6. Поиск индексов максимальных элементов в массиве и матрице с помощью одного цикла
  7. Обмениваем местами максимальные элементы массива и матрицы
  8. Выводим результат на экран
  9. Возвращаем 0, чтобы указать, что программа успешно завершилась

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


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

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

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

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

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

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