Работа с динамической памятью - C (СИ) (148139)

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

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

Нужно наименьший элемент каждой строки, начиная со второй заменить наибольшим элементом предшествующей строки. Ошибка в том, что программа просто находит наибольший элемент и присваивает его каждому наименьшему. Например, если в первой строчке встретился элемент 99, то он присвоит его каждому наименьшему последующих строк.
Листинг программы
  1. int max, indexMax, min, indexMin;
  2. for (i = 0; i < SIZE-1; i++)
  3. {
  4. max = matrix[i][0];
  5. indexMax = 0;
  6. for (j = 0; j < SIZE; j++)
  7. {
  8. if (max < matrix[i][j])
  9. {
  10. max = matrix[i][j];
  11. indexMax = j;
  12. }
  13. }
  14. min = matrix[i + 1][0];
  15. indexMin = 0;
  16. for (j = 0; j < SIZE; j++)
  17. {
  18. if (matrix[i + 1][j] < min)
  19. {
  20. min = matrix[i + 1][j];
  21. indexMin = j;
  22. }
  23. }
  24. matrix[i + 1][indexMin] = matrix[i][indexMax];
  25. }
Помогите

Решение задачи: «Работа с динамической памятью»

textual
Листинг программы
  1. int max, i, min, j, max_prev;
  2.     for (i = 0; i < SIZE; i++){
  3.         max = 0;
  4.         if(i)
  5.             min = 0;
  6.         for (j = 1; j < SIZE; j++){
  7.             if (matrix[i][max] < matrix[i][j])
  8.                 max = j;
  9.             if(i){
  10.                 if (matrix[i][min] > matrix[i][j])
  11.                     min = j;
  12.             }
  13.         }
  14.         if(i)
  15.             matrix[i][min] = matrix[i - 1][max_prev];
  16.         max_prev = max;
  17.     }

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

  1. Объявлены следующие переменные: max, i, min, j, max_prev;
  2. Выполняется цикл for для каждого элемента массива (SIZE элементов):
  3. Внутри цикла, переменной max присваивается значение 0.
  4. Если i больше 0, то переменной min также присваивается значение 0.
  5. Выполняется второй цикл for для каждого элемента массива (SIZE-1 элементов):
  6. Внутри второго цикла, проверяется, является ли элемент в текущей строке, в максимальном столбце (max) меньше, чем элемент в следующем столбце (j). Если это так, то значение max обновляется на j.
  7. Если i больше 0, то проверяется, является ли элемент в текущей строке, в минимальном столбце (min) больше, чем элемент в следующем столбце (j). Если это так, то значение min обновляется на j.
  8. После завершения второго цикла, если i больше 0, то элемент в текущей строке, в минимальном столбце (min) заменяется на элемент в предыдущей строке, в максимальном столбце (max_prev).
  9. Значение max_prev обновляется на текущее значение max.
  10. Цикл завершается.

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


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

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

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

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

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

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