Работа с динамической памятью - 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.
- Цикл завершается.