Найти в каждой строке матрицы G(n, m) максимальный и минимальный элементы
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Найти в каждой строке матрицы G(n, m) максимальный и минимальный элементы и поместить их на место первого и последнего элемента строки соответственно. Вывести на экран исходную и полученную матрицы в общепринятом виде. Для создания массива используйте
Помогите понять,где ошибка?
Rinochka1985, ваш код будет работать, если переписать его так:
Rinochka1985, перед тем, как бросаться кодить, задачу нужно осмысливать.
Сейчас у тебя программа состоит из четырех блоков: (1) генерация значений и вывод матрицы, (2) поиск максимального и минимального значения в строке, (3) замена первого и последнего значения в строке и (4) вывод итоговой матрицы.
Твоя основная ошибка в том, что в блоке 2 ты находишь максимальное и минимальное значение в текущей строке, но к началу блока 3 в переменных
Min
иMax
содержаться минимальное и максимальное значение для последней строки.Вторая ошибка в том, что в блоке 3 ты опять ищешь значения, сравнивая с
Min
иMax
.Если эти две проблемы решать тупо в лоб, то надо организовать еще один массив с таким же количеством строк, как в
mas
, и двумя значениями в строке, в котором запоминать индексы минимального и максимального элементов. Тогда блок 3 сведется к одному циклуfor
по строкам, в котором будут браться индексы максимального и минимального элемента для текущей строки из дополнительного массива и будет осуществляться обмен значений в основном массиве.Если задачу осмыслить, то станет понятно, что блоки 2 и 3 можно совместить и не заморачиваться с лишним массивом. После нахождения в строке индексов элементов с минимальным и максимальным значениями, здесь же выполнить обмен с первым и последним элементами строки соответственно. И дальше переходить к обработке следующей строки.
Еще мне не понравилось что ты мешаешь в одну кучу использование индексов и адресной арифметики для доступа к элементам массива, тем более, что массив двухмерный. Если ты определяешь массив, используя синтаксис определения массива, то и обращайся к элементам массива через индексы. Компилятор лучше тебя сгенерирует всю необходимую адресную арифметику.
Во, еще один любитель адресной арифметики!
Alf, вот скажи, зачем порождать такой неудобочитаемый код?
Зачем писать
когда можно
А вот это меня вообще порадовало!
Честно тебе скажу, Фтьiкай, даже не заморачивался ))). Нашел ошибки о которых ты рассказал, с помощью поиска исправил все индексы на нотацию указателей (начало то у Rinochka1985 закрутилось вокруг этого) и дело в шляпе.
Приношу свои извинения, так конечно делать нельзя.