12 / 11 / 3
Регистрация: 12.10.2010
Сообщений: 268
|
||||||
1 | ||||||
Сложный массив !!12.10.2010, 22:28. Показов 1896. Ответов 27
Метки нет (Все метки)
народ скажите , у меня есть файл , в котором храниться двумерный динамический массив . Массив может иметь любое количество столбцов , строк , причем в строке может быть любое количество элементов , как положительных так и отрицательных . задача в том , что нужно найти первой отрицательное и последнее положительное числа в массиве . вот мой пример кода :
0
|
12.10.2010, 22:28 | |
Ответы с готовыми решениями:
27
Сложный алгоритм Сложный процент Сложный запрос по выражению Сложный элемент управления |
12 / 11 / 3
Регистрация: 12.10.2010
Сообщений: 268
|
|
12.10.2010, 22:50 [ТС] | 3 |
так я в delphi и имел в виду . но все равно помогите
0
|
161 / 159 / 39
Регистрация: 10.10.2010
Сообщений: 461
|
|||||||||||
12.10.2010, 22:50 | 4 | ||||||||||
tipo4ek, в твоих условиях вот где ошибки
идем пошагово: p=-1 считываем i 1. i=-1 if (i>0) and (p=-1) then не проходит по выборке т.к. i<0 2. i=3 if (i>0) and (p=-1) then проходит по выборке,а значит p:=3 3. i=4 if (i>0) and (p=-1) then не проходит по выборке так как p уже не равно -1 а значит для положительных значений нужно условие
не буду долго показывать а всего лишь напишу
и также когда определили первое отрицательное число и заменив m с 1 на наше и определив не возможность выполнение условие m=1 мы находим первое отрицательное число П.С. правда не могу уточнить как там правильно считать данные с файла давно не работал с ними а вспоминать в лом )
0
|
12 / 11 / 3
Регистрация: 12.10.2010
Сообщений: 268
|
|
12.10.2010, 22:57 [ТС] | 5 |
вот как раз в этом и проблема . дело в том что мой массив не квадратный , и этот массив динамический.
читать его из файла для меня проблема . вот пример матрицы : 1 -2 3 5 9 43 2 40 -4 8 90 32 5 61 этот пример можно видоизменять как угодно , то есть делать свой массив как угодно , и в этом и состоит проблема . мне этот массив нужно читать построчно в memo , выделять память под каждую строку . а другого способа занести такой массив из файла в memo , я не знаю (
0
|
12.10.2010, 23:09 | 6 |
Ты что-то путаешь...
Как так? Как массив может быть таким?... Он должен быть обязательно квадратным либо прямоугольным... Либо у тебя там где нету чисел это просто пустые ячейчки?...Как бы они есть, но там ничего нету...
0
|
12 / 11 / 3
Регистрация: 12.10.2010
Сообщений: 268
|
|
12.10.2010, 23:11 [ТС] | 7 |
вот как раз в этом и прикол , что массив выглядит именно так !!
вот я и говорю , что нужно выделять память под каждую строку или что то еще чего я не знаю . это мое задание , сам бы я такой фигней не страдал .
0
|
161 / 159 / 39
Регистрация: 10.10.2010
Сообщений: 461
|
||||||
12.10.2010, 23:18 | 8 | |||||
Держи код
0
|
12 / 11 / 3
Регистрация: 12.10.2010
Сообщений: 268
|
|
12.10.2010, 23:24 [ТС] | 9 |
а можешь пожалуйста объяснить :
1) while not eof(f) do // ты читаешь файл до конца файла begin while not Eoln(f) do // а здесь ты читаешь файл до конца строки , то есть построчно . а можешь объяснить , разве так можно делать и зачем . 2) а можешь объяснить , а почему ты читаешь файл (Readln(f)) , уже после выполнения алгоритма , просто ведь вроде это строка должна идти после while not Eoln(f) do <readln(f)> begin
0
|
161 / 159 / 39
Регистрация: 10.10.2010
Сообщений: 461
|
|
12.10.2010, 23:36 | 10 |
1) Да так можно и нужно делать, когда нужно прочитать каждое значение и при єтом каждое значение отобразить в Memo
2) в цикле while not Eoln(f) do я считываю пока не закончиться строка, и что бы переместить каретку на новую строчку за циклом нужно прочитать пустую строчку Readln(f) Read (f,i) читает каждое значение отдельно 1, -2, 3, 5 readln (f,s) читает уже строку причем в типе string и будет 1 -2 3 5 а также ставить readln в цикле while not eoln(f) не имеет смысла т.к. readln и так читает всю строку и еще просто создай проект и вставь эту процедуру и ты увидишь как оно работает (mmo1 - это у меня Memo
0
|
12 / 11 / 3
Регистрация: 12.10.2010
Сообщений: 268
|
||||||
12.10.2010, 23:40 [ТС] | 11 | |||||
слушай извини конечно , но задам вопрос не по теме .
у меня есть числовая последовательность и нужно посчитать ее рекурсией . вот мой код :
0
|
161 / 159 / 39
Регистрация: 10.10.2010
Сообщений: 461
|
|||||||||||
13.10.2010, 00:50 | 12 | ||||||||||
tipo4ek, ты привел не полный код своей процедуры, а также я не вижу формулу твоей числовой последовательности математически. По этому объясню на пальцах что такое рекурсия:
Определение факториала не рекурсивным способом:
Рекурсивный метод определение факториала
0
|
12 / 11 / 3
Регистрация: 12.10.2010
Сообщений: 268
|
||||||
14.10.2010, 00:54 [ТС] | 13 | |||||
народ , а подскажите , мне недавно помогли с прогой о массивах , о нахождении первого отрицательного элемента в массиве , но вот в чем проблема , читая из memo массив , прога проходит до конца массива , и находит последнее отрицательное , а не первое , как должно .вот мой переделанный код :
0
|
12 / 11 / 3
Регистрация: 12.10.2010
Сообщений: 268
|
|
14.10.2010, 22:00 [ТС] | 14 |
Добавлено через 10 секунд
народ , подскажите пожалуйста , а то просто я чета не в чихляю . Добавлено через 40 минут там че та с флагами не то . откорректиравоть пробовал , но безрезультатно .
0
|
161 / 159 / 39
Регистрация: 10.10.2010
Сообщений: 461
|
|
14.10.2010, 22:24 | 15 |
а что твой flag делает? Где именно ты его используешь
А вообще то я проверял тот код что скидывал раньше то он находит у меня именно 1ое отрицательное число
0
|
12 / 11 / 3
Регистрация: 12.10.2010
Сообщений: 268
|
|
14.10.2010, 22:27 [ТС] | 16 |
не . у меня он находит последнее отрицательное .
просто , у меня ведь массив может быть и другой . и почему то это условие под другой массив не подходит .
0
|
161 / 159 / 39
Регистрация: 10.10.2010
Сообщений: 461
|
|
14.10.2010, 22:49 | 17 |
tipo4ek,
наведи примера где мой код находит не первое а последнее значение и ты так не ответил зачем в твоем коде flag, если ты его так и не используешь а всего лишь назначаешь ему истину или ложь?
0
|
12 / 11 / 3
Регистрация: 12.10.2010
Сообщений: 268
|
|
14.10.2010, 22:58 [ТС] | 18 |
попробуй ввести любую матрицу , которую я привел для примера . последнее положительное он ищет правильно , а вот первое отрицательное - нет . он проходит до конца массива и выдает последнее отрицательное , вместо первого . я просто попробовал ввести другую матрицу и твой пример заработал наполовину . а насчет флагов , я пытался сделать ограничение на поиск последнего , но не получилось .
Добавлено через 4 минуты все народ , я лол . все ищет правильно , забыл ввести m:=1; а кстати , а почему именно m должно равняться 1 ??
0
|
161 / 159 / 39
Регистрация: 10.10.2010
Сообщений: 461
|
||||||
14.10.2010, 23:07 | 19 | |||||
tipo4ek, для проверки, его може сделать любым положительным числом, только не забудь и в проверке это же сделать
условие
А значит в в следующий раз условие выполняться не будет потому как m уже не равно нашему числу Добавлено через 2 минуты И на будущее если ты используешь переменную типа boolean то наверняка ты хотел ее проверять типа if...then, while...do и т.д. А не просто назначать ее false or true, так она ничего не делает
0
|
12 / 11 / 3
Регистрация: 12.10.2010
Сообщений: 268
|
|
15.10.2010, 12:52 [ТС] | 20 |
ага , спасибо большое .
Добавлено через 13 часов 42 минуты а вот скажи , что бы найти количество элементов в массиве от p и до m : for i:=p to m do i:=i+1 да ? Mawrat: количество, в данном случае, определяется одним действием: i: = m - p + 1;
0
|
15.10.2010, 12:52 | |
15.10.2010, 12:52 | |
Помогаю со студенческими работами здесь
20
Не сложный вопрос по Delphi Сложный,одномерный массив Добавить элемент в сложный массив Как реализовать сложный двумерный массив Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |