Работа с динамической памятью - 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;
- }
Объяснение кода листинга программы
- Объявлены следующие переменные: max, i, min, j, max_prev;
- Выполняется цикл for для каждого элемента массива (SIZE элементов):
- Внутри цикла, переменной max присваивается значение 0.
- Если i больше 0, то переменной min также присваивается значение 0.
- Выполняется второй цикл for для каждого элемента массива (SIZE-1 элементов):
- Внутри второго цикла, проверяется, является ли элемент в текущей строке, в максимальном столбце (max) меньше, чем элемент в следующем столбце (j). Если это так, то значение max обновляется на j.
- Если i больше 0, то проверяется, является ли элемент в текущей строке, в минимальном столбце (min) больше, чем элемент в следующем столбце (j). Если это так, то значение min обновляется на j.
- После завершения второго цикла, если i больше 0, то элемент в текущей строке, в минимальном столбце (min) заменяется на элемент в предыдущей строке, в максимальном столбце (max_prev).
- Значение max_prev обновляется на текущее значение max.
- Цикл завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д