Преобразование матрицы, Сложная задача |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Преобразование матрицы, Сложная задача |
irena |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: 0 |
Я еще плохо разбираюсь в массивах и у меня не получается решить эту задачу, помогите пожалуйста.
Назовем допустимым преобразованием матрицы смещение строк матрицы на одну снизу вверх и столбцов на один справа налево, при этом первая строка опускается вниз, а первый столбец становится последним. Дана действительная квадратная матрица порядка n. С помощью допустимых преобразований добиться того, чтобы элемент матрицы, обладающий наименьшим значением, располагался в левом верхнем углу матрицы. Заранее благодарна Сообщение отредактировано: irena - |
volvo |
Сообщение
#2
|
Гость |
Я сделал для 10-ти элементов ... измени n на 100 и добавь недостающие значения в массив...
Код const n = 10; arr: array[ 1 .. n ] of integer = (2, 5, 8, 3, 9, 42, 5, 6, 14, 28); { нам не нужно само мин. или макс. значение - ищем только его индекс } function minIndex: integer; var i: integer; min: integer; begin min := maxInt; for i := 1 to n do if min > arr[i] then begin min := arr[i]; minIndex := i end; end; function maxIndex: integer; var i: integer; max: integer; begin max := - maxInt; for i := 1 to n do if max < arr[i] then begin max := arr[i]; maxIndex := i end; end; var start_count, stop_count: integer; T, i, s: integer; begin start_count := minIndex; stop_count := maxIndex; { если макс. число стояло перед мин. числом - меняем индексы местами } if start_count > stop_count then begin T := start_count; start_count := stop_count; stop_count := T; end; s := 0; for i := start_count to stop_count do s := s + arr[i]; writeln( 's = ', s ); end. Сообщение отредактировано: volvo - |
Текстовая версия | 28.04.2024 14:41 |