-
Учусь программировать :)
Задача :Дан двухмерный, квадратный массив размерностью n на n (я беру 5х5). Заполняю массив слуайными цифрами. дальше надо найти макс. значение элементов массива. Это тоже делаю. Далее нада найти макс. значение но определённой области массива (см. ниже, область отмечена единицами)
1 1 1 1 1
0 1 1 1 1
0 0 1 1 1
0 0 0 1 1
0 0 0 0 1
это тоже делаю :)
Но теперь нада найти макс. значение в следущей области :
1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
и тут тупик, пользовался до этого циклом в цикле (for). Думаю что в этом случае такой же нужно пользоваться системой, только не могу понять как заставить его смотреть первую строку все элементы а потом на 2 меньше, на 4 меньше и так далее (если у меня будет массив 10 на 10)....
Кто что подскажет :)
-
Один массив - исходный. Второй вспомогательный - такой же только содержит нули или единицы как ты написал. Если в вспомогательном массиве элемент равен 1, то соответствующий элемент основного массива учавствует в поиске. Перебираешь их в цикле да и все.
Это если не думать такое решение, все остальное возможно и будет быстрее, но не так очевидно.
-
[QUOTE=maxx™]Один массив - исходный. Второй вспомогательный - такой же только содержит нули или единицы как ты написал. Если в вспомогательном массиве элемент равен 1, то соответствующий элемент основного массива учавствует в поиске. Перебираешь их в цикле да и все.
Это если не думать такое решение, все остальное возможно и будет быстрее, но не так очевидно.[/QUOTE]
не понял ничего:)
я заполняю массив случайными числами, ну допустим я сделаю второй массив, но в него нужно записать именно нужные мне значения, тоесть их всёравно нада "найти" в первом массиве , ик тому же второй массив должен быть динамичесским, которого по задумке я ещё не знаю (не учили пока) :)
-
[QUOTE=Nobless]не понял ничего:)
я заполняю массив случайными числами, ну допустим я сделаю второй массив, но в него нужно записать именно нужные мне значения, тоесть их всёравно нада "найти" в первом массиве , ик тому же второй массив должен быть динамичесским, которого по задумке я ещё не знаю (не учили пока) :)[/QUOTE]
Ужос, какие вспомогательные массивы!!!
Правильно организуй цикл по этой матрице
i индекс по строкам
j индекс по столбцам
k=0 вспомогательный индекс
По строкам иди от 0 до i/2
Для i/2 поставь округление до наибольшего целого, т.е. если у тебя i/2 = 2.5, чтоб округляло до 3
По столбцам иди от j+k до j-k, просто в в цикле for поставь ещё один инкремент для вспомогательного k
Ну и стандартный поиск максимума
End по столбцам
End по строкам
Удачи!!!
-
[QUOTE=Nobless]
Кто что подскажет :)[/QUOTE]
Учись алгоритмически мыслить, а только потом программировать.
Короче - малюй блок-схемы алгоритмов и будит тибе счастие.
-
[QUOTE=Nobless]не понял ничего:)
я заполняю массив случайными числами, ну допустим я сделаю второй массив, но в него нужно записать именно нужные мне значения, тоесть их всёравно нада "найти" в первом массиве , ик тому же второй массив должен быть динамичесским, которого по задумке я ещё не знаю (не учили пока) :)[/QUOTE]
У тебя есть массив -
1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
Вот это и есть содержание вспомогательного массива.
-
[QUOTE=GGenius]Ужос, какие вспомогательные массивы!!!
[/QUOTE]
Он тебе в следующем посте предложит еще какую-то другую область,
например такую:
1 1 0 1 1
0 1 1 1 0
0 0 1 0 0
1 1 0 1 1
0 0 1 0 0
Ты тоже будешь изворачиваться с циклами и округлениями?
-
[QUOTE=Nobless]только не могу понять как заставить его смотреть первую строку все элементы а потом на 2 меньше, на 4 меньше и так далее (если у меня будет массив 10 на 10)....
Кто что подскажет :)[/QUOTE]
:stop: Я написала для вот этого случая.
А если нужно искать максимум только из мн-ва позиций, где он рандомом ставит 1, то самый простой способ, это вставить иф перед сравнением элемента с максимумом, хотя можно и "соптимизить":)
-
А вообще, можно исходную матрицу и матрицу позиций [B]поэлементно [/B]умножить. Получится матрица с ненулевыми значениями только на местах, где были 1.
Другой вопрос, если исходная содержала отрицательные числа.......))))
-
Так так я вижу я вас запутал своими единицами :)
нулями и единицами я просто отметил область ,вместо них разные числа от 0 до 100,
и подобных комбинаций
1 1 0 1 1
0 1 1 1 0
0 0 1 0 0
1 1 0 1 1
0 0 1 0 0
мне не нужно :) мне нужно только треугольнички внутри квадрато в разных полежениях :) сейчас попробую со вспомогательным индексом, хотя толком не понял что от меня требуется :)
-
[QUOTE=Nobless]Так так я вижу я вас запутал своими единицами :)
мне не нужно мне нужно только треугольнички внутри квадрато в разных полежениях сейчас попробую со вспомогательным индексом, хотя толком не понял что от меня требуется[/QUOTE]
:laugh:
Попробуй четко сформулировать задачу:)
У тебя область для поиска максимума фиксирована или получается после волшебных слов "аааааап"?:)
Слу, а ты где "учишься программировать"?
Что-то у тебя соображалка и воображалка пока не оч натренирована
-
-
Вложений: 1
вот....1-е задание сделал :)
во 2-м а и б сделал :) дальше идут те самые треугольники
В шаге учусь :) можно сказать с нуля...до этого пару раз всего слышал слово алгоритм (и то из-за угла)
-
Да не надо твоих скринов:)
Просто чётко и грамотно опиши в чём трабл.
Если тебе нужно только по таким треугольникам, то без вспомогательного индекса никак:) (если матрица не всегда квадратная)
-
Ну вот, а тут на форуме такие бла-бла разводят по поводу универов ,высшего образования в принципе и шага.....:rtfm:
А вышку где-то получаешь?
Мда...там делать нефик.
Тебе катострофически не хватает той самой соображалки:)
Ты только не исчи максимум сразу, а попробуй сделать цикл и выводи матрицу из 0 и 1. Пусть 1 ставит там, где потом будешь искать максимум:)
-
[QUOTE=GGenius]Да не надо твоих скринов:)
Просто чётко и грамотно опиши в чём трабл.
Если тебе нужно только по таким треугольникам, то без вспомогательного индекса никак:) (если матрица не всегда квадратная)[/QUOTE]
Иногда круглая (матрица) :)
-
[QUOTE=GGenius]Да не надо твоих скринов:)
Просто чётко и грамотно опиши в чём трабл.
Если тебе нужно только по таким треугольникам, то без вспомогательного индекса никак:) (если матрица не всегда квадратная)[/QUOTE]
Матрица всегда квадратная, трабл наверное в отсутсвии соображаловки и этого факин индекса :)
-
[QUOTE]
Но теперь нада найти макс. значение в следущей области :
1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
[/QUOTE]
можно попробовать запустить что-небудь подобное по всем элементам показанного выше единицами треугольника:
[CODE]for (int i = 0; i<N; i++)
for (int j = i ; j<N-i; j++)
{
// сравниваем A[i][j] c чем-то там..
}[/CODE]
-
[QUOTE=GGenius]Ну вот, а тут на форуме такие бла-бла разводят по поводу универов ,высшего образования в принципе и шага.....:rtfm:
А вышку где-то получаешь?
Мда...там делать нефик.
Тебе катострофически не хватает той самой соображалки:)
Ты только не исчи максимум сразу, а попробуй сделать цикл и выводи матрицу из 0 и 1. Пусть 1 ставит там, где потом будешь искать максимум:)[/QUOTE]
вышку пока не получаю, пока получаю что могу, на что времени хватает :)
Да и насчёт там разговоров не разговоров, мне многие советовали не идти туда учится. но я доволен, я на полустационаре, занятия 1 раз в неделю по полтора часа на урок ,сами понимаете что и как....за то мизерное время что нам уделяют я хоть чемуто научился
Для Яр
не канает, уже пробовал, он считает все элементы кроме последнего столбца, если ян е ошибаюсь :)
-
[QUOTE=Яр]можно попробовать запустить что-небудь подобное по всем элементам показанного выше единицами треугольника:
[CODE]for (int i = 0; i<N; i++)
for (int j = i ; j<N-i; j++)
{
// сравниваем A[i][j] c чем-то там..
}[/CODE][/QUOTE]
Не пугайте так человека!!!:)
Он долго это будет понимать, а т.к. додумался не сам, то оч скоро забудет:)