|
Работа с матрицей
|
|||
---|---|---|---|
#18+
Всем доброго времени суток! Сразу оговорюсь, что мой первый вопрос довольно прост, но что-то все никак не могу разобраться, как бы прискорбно это не звучало. Итак, задача состоит вот в чем: 1) всего лишь нужно найти сумму элементов заштрихованной области матрицы nxn, где n - число нечетное, которая вводится вручную с клавиатуры (данное условие обязательное) (рисунок прилагаю). (если найдется человек, который захочет и сможет помочь, очень прошу вписать код полностью с начала и до конца, а не его часть) 2) а вот вторая часть интересней (лично для меня, так как любопытно, это придумал такой бред мой мозг, либо это действительно можно сделать) вопрос следующий: нужно эти же элементы матрицы отсортировать по возрастанию. Можно ли это как-то выполнить в одном коде вместе с 1 пунктом, но после того, как сумма была найдена, либо же это обязательно нужно делать отдельным кодом? Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 18:09 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
1) А в чём проблема-то? if (заштриховано) сумма += матрица[i][j]; 2) Можно и одновременно. Третий том Кнута в помощь, сортировка вставками. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 18:52 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, упорно не доходит как делается 1 пункт, в отличии от второго, за что Вам спасибо) А вот с первым совсем беда. Понимаю, что нужно задать условие отбора элементов, но в этом сама проблема, не соображу что нужно в if записать ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 19:33 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
JustSomething Dimitry Sibiryakov, упорно не доходит как делается 1 пункт, в отличии от второго, за что Вам спасибо) А вот с первым совсем беда. Понимаю, что нужно задать условие отбора элементов, но в этом сама проблема, не соображу что нужно в if записать Ну давайте подумаем. Если размер матрицы нечётный то как найти координату по ширине верхнего (по X) угла? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 19:51 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
Dima T, да, спасибо, но прочла это еще до того как зарегистрироваться здесь) С первым вопросом пытаюсь разобраться уже второй день, при этом пособие моего же преподавателя не помогло, а на второй вопрос получила грамотную подсказку, хотя впрочем как и на первый) Так что абсолютно не пыталась просто получить решение, не прилагая усилий со своей стороны) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 21:35 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
JustSomething, подумайте как устроить циклы перебора элементов матрицы. Предположительно нарисован ромб . Тогда перебираем все элементы справа от левой-верхней стороны ромба. Левая вершина с координатами в матрице: y0=(n-1)/2, x>=1 Строчкой выше, y1=y0-1, x>=2 Строчкой выше y=y1-1, x>=3 ........ Наконец, верхняя строка матрицы y=1, x>=(n-1)/2 Ограничения справа в каждой строке - сообразите сами. Аналогично в нижней половине ромба. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 21:50 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
JustSomething Dima T, да, спасибо, но прочла это еще до того как зарегистрироваться здесь) С первым вопросом пытаюсь разобраться уже второй день, при этом пособие моего же преподавателя не помогло, а на второй вопрос получила грамотную подсказку, хотя впрочем как и на первый) Так что абсолютно не пыталась просто получить решение, не прилагая усилий со своей стороны) Тут в основном высококвалифицированные программисты, мы плохо помним школьную арифметику, а задача не тривиальная. У меня за пять минут не получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 21:58 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
JustSomething, код писать точно не буду, но что можно сделать подскажу :) 1) рассматриваем тривильный случай M = {a11=25}, в данном случае матрица состоит из одного элемента n = 1, sum = a11 = 25 2) рассматриваем следующий случай n = 3 Код: plaintext 1. 2. 3.
n=3, sum = a12 + a21 + a22 + a23 + a32 = 2 + 4 +5 + 6 + 8 = 25 3) дальше рассмотрите случай n=5, ну и т.д, просто все нужно выписать на бумаге, и тогда все станет понятно 4) в коде нужно просто пройтись по выделенным элементам матрицы ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 00:39 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
exp98, да что там ромб. Давай общий случай решим. Произвольный выпуклый многоугольник вписан в прямоугольник (матрица). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 09:54 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
JustSomething, ну что, Данила-мастер, не выходит Аленький цветок? Ещё подсказки нужны? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 10:15 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
rdb_dev, честно говоря, аж стыдно признаваться, что после стольких подсказок я все еще сижу над первым пунктом. Даже решение нашла по моему условию, пусть и на C#. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Все никак не доходит, а это ведь только 1/2 заданий. (код смещается, там он не так ужасно выглядит, а времени разбираться можно ли здесь вставлять код нормально, увы, нет) Модератор: Оформляй исходники тегом SRC ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 13:07 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
JustSomething, Работает? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 13:32 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
Решение двух пунктов сразу. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 13:51 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
JustSomething, задачка не стоит и выеденного яйца! Смотрите, "серединку" (k) вы уже нашли. k определяет индекс элемент первой и последней строки двумерного массива, а также индекс строки, все элементы которой необходимо включить в сумму. Для первой строки индекс первого элемента для суммирования равен k, а кол-во элементов = 1. Для второй строки индекс первого элемента равен k-1, а кол-во элементов равно 2 и т.д. На лицо декремент на единицу индекса первого суммируемого элемента в строке и инкремент кол-ва суммируемых элементов в строке до тех пор, пока индекс строки < k или пока индекс первого суммируемого элемента > 0, после чего наоборот - инкремент индекса первого элемента и декремент кол-ва суммируемых элементов в строке, до тех пор, пока индекс первого элемента не равен k или пока индекс строки не равен n-1. Для упрощения алгоритма я рекомендую сделать два последовательных цикла. Первый цикл для индексов строк от 0 до k-1 и индексов первых суммируемых элементов строк от k до 1, а второй цикл для индексов строк от k до n-1 и индексов первых суммируемых элементов от 0 до k. Так алгоритм будет даже быстрее, так как нет никакого дополнительного условия внутри цикла. Соответственно: 1. Инициализация индекса первого суммируемого элемента (k) и кол-ва элементов (1); 2. Цикл по строкам от 0 до k-1 с декрементом индекса первого суммируемого элемента и инкрементом кол-ва элементов + вложенный цикл по соответствующим элементам (проще через while); 3. Реинициализация индекса первого суммируемого элемента (0) и кол-ва элементов (n); 4. Цикл по строкам от k до n-1 с инкрементом индекса первого суммируемого элемента и декрементом кол-ва элементов + вложенный цикл по соответствующим элементам; ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:04 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
petrav, и чему твой исходный код может научить? Здесь не принято давать готовые решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:05 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
У автора-ж надо посчитать сумму элементов расположенных по "diamond". Как в бубновой масти. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:12 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
И у меня есть некое недоверие к тестовым данным которые расположены слишком уж ... закономерно. Можем получить некую авто-компенсацию суммм. Давайте возьмем случайные числа. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:14 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
mayton У автора-ж надо посчитать сумму элементов расположенных по "diamond". Как в бубновой масти. А разве я не это посчитал? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:14 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
mayton И у меня есть некое недоверие к тестовым данным которые расположены слишком уж ... закономерно. Можем получить некую авто-компенсацию суммм. Давайте возьмем случайные числа. Возьмите. Нужно написать unit test-ы. Это мы вам поручим. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:16 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
petrav, а сколько у тебя получилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:19 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
mayton petrav, а сколько у тебя получилось? 186. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:22 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
petrav mayton petrav, а сколько у тебя получилось? 186. Я прошу прощения. Да. Ты был прав. Я не заметил коррекцию цикла здесь. Код: plaintext 1.
Так что твой код - корректен. Кстати я хотел усугубить этот топик но несколько в другом направлении. Ты читал Степанова (он по STL книжки писал) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:28 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
mayton Кстати я хотел усугубить этот топик но несколько в другом направлении. Ты читал Степанова (он по STL книжки писал) ? Нет, Степанова не читал. Я что-то некорректно написал с точки зрения STL? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:35 |
|
Работа с матрицей
|
|||
---|---|---|---|
#18+
Нет у тебя все корркетно. Я просто по инерции продолжаю топик https://www.sql.ru/forum/1280222/tyapnichnaya-hvostovaya-rekursiya Мысль такая. У нас есть козырная бубновая функция которая чего-то считает в сях императивно. Она - эффективна. В этом никто не сомневается исходя из нашего понимания компиллятора. Далее. Я хочу ее транформировать в хвостовую функцию . И посмотреть как ее понял компиллятор (хотя-бы 2 варианта GCC, Clang). И во что он свернул рекурсию. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:46 |
|
|
start [/forum/topic.php?fid=57&msg=39961703&tid=2017415]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 142ms |
0 / 0 |