Двумерный массив. соседи элементов, оочень интересная задача не для глупых |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Двумерный массив. соседи элементов, оочень интересная задача не для глупых |
DruiD |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 31 Пол: Мужской Реальное имя: Андрей Репутация: 0 |
Будем называть соседями элемента с индексами i,j некой матрицы такие элементы, что соответствующие индексы которых отличаются от i,j не больше чем на единицу. Для данной целочисленной матрицы А(m*m) найдите матрицу В, которая состоит из нулей и единиц, элемент которой bi равен единице, когда все соседи a ij меньше самого a ij.
Обьясню подробно: У каждого элемента в матрице есть соседние элементы: справа, слева, сверху, снизу и по диагоналям (соответсвенно у крайних элементов соседей меньше). Необходимо найти сумму всех соседей и определить больше ли сумма соседей самого элемента. Если да то в новой матрице на месте элемента ставим 0 если нет, то 1. Сообщение отредактировано: DruiD - |
volvo |
Сообщение
#2
|
Гость |
Ну и что в этой задаче такого интересного? Опиши функцию, которая по i, j будет возврашать тебе 0 или 1 в зависимости от того, больше или нет сумма соседей в матрице A, чем сам элемент... И возвращенное значение ставь в матрицу B на то же место [i, j]...
Как написать такую функцию? type matrix = array[1 .. m, 1 .. m] of integer; |
DruiD |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 31 Пол: Мужской Реальное имя: Андрей Репутация: 0 |
А как мне матрицу В поставить на прежнее место [i,j]?
И почему ты матрицу В не описал в приведённой программе |
мисс_граффити |
Сообщение
#4
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
потому что это не программа, а функция - подпрограмма....
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
DruiD |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 31 Пол: Мужской Реальное имя: Андрей Репутация: 0 |
а как тогда будет выглядеть программа?
|
volvo |
Сообщение
#6
|
Гость |
А это уж ты сам как-нибудь... Основная честь уже готова, а ПОЛНОСТЬЮ писать за тех, кто не хочет пальцем пошевелить, я не буду...
|
DruiD |
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 31 Пол: Мужской Реальное имя: Андрей Репутация: 0 |
Цитата А это уж ты сам как-нибудь... Основная честь уже готова, а ПОЛНОСТЬЮ писать за тех, кто не хочет пальцем пошевелить, я не буду... Да я бы с радостью написал бы, только я функции ещё не проходил, а только двумерные массивы. Так что функция, которую ты написал мне абсолютно бесполезна. Здесь наверно можно решить просто через обычные циклы с параметрами, как мне и необходимо. Я не прошу вылаживать все решения, я прошу только обьяснить мне как через цикл с параметрами найти сумму соседей, а остальное я уж сам. И всё... Но всё равно спасибо, что хоть уделил внимание... |
мисс_граффити |
Сообщение
#8
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
просто не оформляй это отдельной функцией, а возьми ее тело и запихни в основную программу (добавив описание и задание значений переменных и т.д.)
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
DruiD |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 31 Пол: Мужской Реальное имя: Андрей Репутация: 0 |
Можете обьяснить что означает эта строка, у меня в ней выводит ошибку.
Код GetNeighbour := Byte(s < A[i, j]); что здесь подразумевается под Byte Сообщение отредактировано: DruiD - |
volvo |
Сообщение
#10
|
Гость |
Подразумевается возврат значения НЕ в виде True/False, как положено при сравнении, а в виде 1 если условие выполнено, и 0 - в противном случае... Для этого результат рассматривается НЕ как Boolean, а как Byte...
|
DruiD |
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 31 Пол: Мужской Реальное имя: Андрей Репутация: 0 |
Вышеуказанное утверждение (ix = 0) and (iy = 0) неправильно так как нам будет искать сумму только по диагоналям. Блоки ix = 0 и iy = 0 необходимо расписывать отдельно. Вот Полная программа
program insatiable; |
мисс_граффити |
Сообщение
#12
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Вышеуказанное утверждение (ix = 0) and (iy = 0) неправильно так как нам будет искать сумму только по диагоналям. Блоки ix = 0 и iy = 0 необходимо расписывать отдельно. ну ладно, написал вариант, который тебе понятнее - хорошо.... зачем другой неправильным обзывать? -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Текстовая версия | 22.12.2024 0:12 |