|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.12.2012, 06:32 | #1 |
Форумчанин
Регистрация: 13.12.2012
Сообщений: 116
|
free pascal. Где-то Ошибка. Бинарный поиск в двумерном динамическом целочисленном массиве.
Даны число N и двумерный динамический целочисленный массив A, содержимое строк которого отсортировано по возрастанию, а сами строки - отсортированы по возрастанию значений первого элемента строк. Используя универсальную функцию поиска SearchBinMultiDyn (см.лекции), найти все строки массива A, которые содержат не менее 2-х значений N. Вывести содержимое найденных строк на экран.
Функцию эту SearchBinMultiDyn нам не давали. надо было написать самим. зато есть такая: Код:
Код:
___________ Код нужно оформлять по правилам: тегом [CODE]..[/СODE] (это кнопочка с решёточкой #) Не забывайте об этом! Модератор. Последний раз редактировалось Serge_Bliznykov; 14.12.2012 в 11:32. |
14.12.2012, 09:15 | #2 | |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
1. поскольку ваши строки отсортированы по возрастанию, то проверяете лишь те строки, где первый элемент <=N
2. В каждой строке подсчёт ведёте до первого элемента >N. После этого можете привязать строку к массиву результатов, если выполняется условие поиска. з.ы. в вашем примере никак не двумерный массив, судя по описанию: Цитата:
Правильно поставленная задача - три четверти решения.
Последний раз редактировалось DiemonStar; 14.12.2012 в 09:18. |
|
15.12.2012, 06:22 | #3 |
Форумчанин
Регистрация: 13.12.2012
Сообщений: 116
|
нееет. двумерный. type TDynArray=array of pointer; var ps:array of array of integer;
А эта функция Const N=15; type TArray=array[0..N-1] of integer; Function SearchBinMulti(Const A:TArray; X:integer; var LeftBound,RightBound:integer):boole an; для примера. Она для одномерного статического массива. Нам её препод дал. И надо написать такую же только для одномерного динамического. А потом эту написанную для одномерного динамического использовать в задаче для двумерного динамического, передавая функции по строке массива. У меня в мозгах зацикливание. Потому что заголовок функции и типы менять нельзя. и вообще всю функцию. Вот как она есть для одномерного динамического (которую я написала) так её и надо использовать в задаче, дописав только основной блок задачи. Но как если передавая по строке массива array of array of integer передается array of integer то есть pointer, а не array of pointer (TDynArray). И функция не понимает что ей передаются строки(адресом на первый элемент строки @ps[i]), она видит только первый столбец массива. поэтому и вылетает за пределы памяти. Если в функции array of pointer, то надо передавать не адрес на строку, а на весь массив @ps. А уже в функции for i:=0 to length(a)-1 do ... и каждую строку проверять. НО тогда надо будет записывать результат (строки, подходящие под критерий) в массив TIndexArray = array of integer. И ставить его вместо boolean в result. НО менять заголовок нельзя! Вот я и понять не могу что делать... Ладно сама потом разберусь. Препода замучаю. Скажет, что хочет. А то понять не могу... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Замена максимального элемента минимальным и наоборот в динамическом двумерном массиве | dreik92 | Microsoft Office Excel | 2 | 13.04.2011 12:04 |
Где мой кося в динамическом массиве? | Utkin | Общие вопросы Delphi | 9 | 09.07.2010 15:35 |
В заданном целочисленном двумерном массиве найти среднее арифметическое в каждой строке | Rise | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 06.01.2009 00:55 |
Бинарный поиск в 1мерном массиве, ошибка в программе из книги | ILDAR@GIZmo | Помощь студентам | 4 | 02.12.2007 22:22 |