Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2012, 23:32   #1
Juliks
 
Регистрация: 26.12.2012
Сообщений: 8
По умолчанию С квадратной матрицы получить ромб путем отсечение углов по n элементов. Элементы, которыми заполнено ромб переписать в вых. файл

С квадратной матрицы получить ромб путем отсечение углов по n элементов. Элементы, которыми заполнено ромб переписать в выходной файл без повторений.
помогите пожалуйста, очень важно, хоть чуточку, часть программы, буду очень благодарна
я уже так долго над ней туплю... представление имею как это все должно быть, а вот сделать не получается

Последний раз редактировалось Juliks; 27.12.2012 в 01:29.
Juliks вне форума Ответить с цитированием
Старый 27.12.2012, 09:21   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
получить ромб путем отсечение углов по n элементов
я, например, тоже не могу представить, что такое отсечение по n элементов...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.12.2012, 01:22   #3
Juliks
 
Регистрация: 26.12.2012
Сообщений: 8
По умолчанию Serge_Bliznykov

нужно каждую сторону поделить по средине и соединить. в результате получились диагонали четырех маленьких квадратов. нужно выделить внутренние треугольники и таким образом получить ромб. а внешние треугольники мы не трогаем, они нам не нужны. поскольку размер самой матрицы нам не известен, то и количество элементов внутри образовавшегося треугольника нам тоже не известно, поэтому в условии и звучит ''n''
Juliks вне форума Ответить с цитированием
Старый 28.12.2012, 11:12   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

мда..
ладно. "продолжаем разговор..." (с) Карлсон...

Допустим. Дана матрица 4 x 4.
вот такая (просто пример):
Код:
 1    2   3   4
 5    6   7   8
 9   10  11  12
13   14  15  16
покажите матрицу, которая останется после "отсечения по n элементов"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.12.2012, 12:24   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Подозреваю, что размерность MxM, где должно быть M-нечетное. Примерно так:

Код:
1 2 3 4 5                          0 0 3 0 0
5 6 7 8 9                          0 6 7 8 0
6 7 8 9 1          при n=2         6 7 8 9 1
1 2 3 4 5                          0 2 3 4 0 
2 3 4 5 6                          0 0 4 0 0
Но! В таком случае должно быть еще ограничение:

n<m div 2

В задаче об этом не слова. И что означает "без повторений"?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 28.12.2012, 14:15   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Sciv
Подозреваю, что размерность MxM, где должно быть M-нечетное.
я это тоже подозреваю. Но хотел, чтобы мои подозрения потвердила автор топика.
Поэтому и привёл пример с чётной матрицей!

Цитата:
Сообщение от Sciv
при n=2
нет.
Цитата:
то и количество элементов внутри образовавшегося треугольника нам тоже не известно, поэтому в условии и звучит ''n''
в вашем пример n получается 3 (три элемента отсекаются с каждой стороны матрицы)

Цитата:
Сообщение от Sciv
Но! В таком случае должно быть еще ограничение:
n<m div 2
Это уже неважно. Важно то, что n фактически нам не нужно!

Цитата:
Сообщение от Sciv
И что означает "без повторений"?
подозреваю, что если в оставшихся элементах матрицы есть дублирующие значения, то нужно записать такие значения только 1 раз.
для вашего примера нужно в выходной файл записать 3 6 7 8 9 1 2 4
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.12.2012, 23:11   #7
Juliks
 
Регистрация: 26.12.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Подозреваю, что размерность MxM, где должно быть M-нечетное. Примерно так:

Код:
1 2 3 4 5                          0 0 3 0 0
5 6 7 8 9                          0 6 7 8 0
6 7 8 9 1          при n=2         6 7 8 9 1
1 2 3 4 5                          0 2 3 4 0 
2 3 4 5 6                          0 0 4 0 0
Но! В таком случае должно быть еще ограничение:

n<m div 2

В задаче об этом не слова. И что означает "без повторений"?

да, так оно и должно быть
Juliks вне форума Ответить с цитированием
Старый 28.12.2012, 23:14   #8
Juliks
 
Регистрация: 26.12.2012
Сообщений: 8
По умолчанию

подозреваю, что если в оставшихся элементах матрицы есть дублирующие значения, то нужно записать такие значения только 1 раз.
для вашего примера нужно в выходной файл записать 3 6 7 8 9 1 2 4[/QUOTE]

да, это оно
Juliks вне форума Ответить с цитированием
Старый 28.12.2012, 23:25   #9
Juliks
 
Регистрация: 26.12.2012
Сообщений: 8
По умолчанию

Serge_Bliznykov

у меня уже программа написана, вот только есть один вопрос: могу ли я задав размерность массива автоматически подсчитать количество отсекаемых элементов?
а то пока мне нужно самой задав размерность подсчитать количество элементов в отсекаемом треугольнике. в маленькой я могу это вделать, но если она будет большая, то не совсем удобно
Juliks вне форума Ответить с цитированием
Старый 29.12.2012, 09:44   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
то пока мне нужно самой задав размерность подсчитать количество элементов в отсекаемом треугольнике
ну, это несложно.
введём переменную m обознаючающую катет отсекаемого треугольника (для удобства включим и диагональ, которая отсекает элементы (выделил красным):
Код:
x x x x .... x x x x x x .... x x
x x x x .... x x x x x x .... x x
x x x x .... x x x x x x .... x x
x x x x .... x x x x x x .... x x
.................................
x x x x .... x x x x x x .... x x
x x x x .... x x x x x x .... x x
x x x x .... x x x x x x .... x x
x x x x .... x x x x x x .... x x
x x x x .... x x x x x x .... x x
x x x x .... x x x x x x .... x x
.................................
.................................
x x x x .... x x x x x x .... x x
x x x x .... x x x x x x .... x x
x x x x .... x x x x x x .... x x
Обозначим через K размер общей (исходной) матрицы
очевидно, что для нечётных K получаем, что m равна (K div 2) + 1
путём несложных манипуляций (достроения матрицы размером m x m и подсчётом, сколько элементов лежит выше диагонали
Код:
n = (m*m - m)  div 2

проверим для примера при K= 5 (тот пример, что привёл Sciv)
m = (K div 2) + 1 = (5 div 2) + 1 = 3
n = (m*m - m) div 2 = ( 3*3 - 3 ) div 2 = 3
ответ. в отсекаемой части получается 3 элемента.



p.s. не забывайте, что отсекаются все четыре угла, поэтому всего у Вас будет отсекаться n *4 элементов исходной матрицы...

Последний раз редактировалось Serge_Bliznykov; 29.12.2012 в 09:46.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2. Получить элементы квадратной матрицы Annyska Паскаль, Turbo Pascal, PascalABC.NET 2 11.12.2012 09:38
Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент (Delphi) tatarin4555 Помощь студентам 1 04.12.2012 01:06
Получить элементы квадратной матрицы(Pascal) xxxartikxxx Помощь студентам 3 17.10.2012 17:35
Паскаль:Получить элементы квадратной матрицы xxxartikxxx Помощь студентам 3 12.10.2012 17:35
графика. ромб. оч странный ромб aka_faith Паскаль, Turbo Pascal, PascalABC.NET 19 11.06.2009 02:57