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

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

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

Нужно наименьший элемент каждой строки, начиная со второй заменить наибольшим элементом предшествующей строки. Ошибка в том, что программа просто находит наибольший элемент и присваивает его каждому наименьшему. Например, если в первой строчке встретился элемент 99, то он присвоит его каждому наименьшему последующих строк.
int max, indexMax, min, indexMin;
 
    for (i = 0; i < SIZE-1; i++)
    {
        max = matrix[i][0];
        indexMax = 0;
        for (j = 0; j < SIZE; j++)
        {
            if (max < matrix[i][j])
            {
                max = matrix[i][j];
                indexMax = j;
            }
        }
        min = matrix[i + 1][0];
        indexMin = 0;
        for (j = 0; j < SIZE; j++)
        {
            if (matrix[i + 1][j] < min)
            {
                min = matrix[i + 1][j];
                indexMin = j;
            }
        }
        matrix[i + 1][indexMin] = matrix[i][indexMax];
    }
Помогите

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

textual
Листинг программы
int max, i, min, j, max_prev;
    for (i = 0; i < SIZE; i++){
        max = 0;
        if(i)
            min = 0;
        for (j = 1; j < SIZE; j++){
            if (matrix[i][max] < matrix[i][j])
                max = j;
            if(i){
                if (matrix[i][min] > matrix[i][j])
                    min = j;
            }
        }
        if(i)
            matrix[i][min] = matrix[i - 1][max_prev];
        max_prev = max;
    }

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

  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
Похожие ответы