как удалить строку из массива? |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
как удалить строку из массива? |
klik1602 |
12.01.2011 20:36
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Женский Реальное имя: Натали Репутация: 1 |
Дана матрица А порядка н. Удалить строки содержащие нулевые элементы.
|
-TarasBer- |
12.01.2011 20:41
Сообщение
#2
|
Гость |
Удалил.
|
klik1602 |
12.01.2011 21:00
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Женский Реальное имя: Натали Репутация: 1 |
|
-TarasBer- |
12.01.2011 21:25
Сообщение
#4
|
Гость |
Ну алгоритм применил.
|
klik1602 |
12.01.2011 21:29
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Женский Реальное имя: Натали Репутация: 1 |
а поделиться? целый день бьюсь над этой задачей..((
я уже поняла, что если матрица не динамическая, то из нее в принципе ничего удалить нельзя. Можно сделать какие-то махинации с переносом строк - на одну выше, или можно пропустить при выводе, но как это сделать правильно? у меня какой-то бред получается( даже стыдно код показывать) |
TarasBer |
12.01.2011 21:35
Сообщение
#6
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
> даже стыдно код показывать
А зря. Именно поэтому я и разговариваю загадками. Тут не любят тех, кто ничего не делает и хочет, чтобы делали за него. > я уже поняла, что если матрица не динамическая, то из нее в принципе ничего удалить нельзя. Можно сделать какие-то махинации с переносом строк - на одну выше, или можно пропустить при выводе Для статической матрицы действительно ничего, кроме сдвига вверх, придумать невозможно. Осводобившуюся область можно занулить, можно уменьшить значение переменной vertSize (которая отвечает за кол-во выводимых и обрабатываемых строк) А алгоритм стандартный, надо только представить матрицу как массив рядов ( type TRow = array [0 .. N-1] of integer; TMatrix = array [0 .. N-1] of TRow; ), также надо написать функцию, которая определяет наличие нулевого элемента в строке. Дальше - применить алгоритм из ЧАВО, только в качестве элемента массива надо взять ряд матрицы: Многократное удаление символов из строки Сообщение отредактировано: TarasBer - 12.01.2011 21:35 -------------------- |
klik1602 |
12.01.2011 21:46
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Женский Реальное имя: Натали Репутация: 1 |
как-то всё сложно)) а попроще нельзя никак?
Сообщение отредактировано: klik1602 - 12.01.2011 21:54 |
TarasBer |
12.01.2011 21:58
Сообщение
#8
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Код var A: TMatrix; ... j := 0; Пройти по рядам матрицы с индексом i. Если в ряду i все числа ненулевые, то если j<i то копируем ряд i в ряд j (простыи A[j] := A[i]) увеличить j Вывести на экран первые j строк матрицы. -------------------- |
klik1602 |
12.01.2011 22:21
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Женский Реальное имя: Натали Репутация: 1 |
я по-другому сделала)) наконец-то заработало!!)))
|
TarasBer |
12.01.2011 22:59
Сообщение
#10
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
1.
> for p:=1 to m do a[k,p]:=a[k+1,p]; Если бы m совпадало с размером матрицы, то можно было бы писать просто a[k] := a[k + 1]; (для не совпадающего - тоже как бы можно, но не надо так делать) Для динамической матрицы (массив указателей на массивы строк) через a[k] := a[k+1] было бы идеально - копируется не ряд, а только указатель. 2. Алгоритм ужасен, для каждого удаления элемента выполняет сдвиг всей оставшейся таблицы. Именно для этого я и написал статью в ЧАВО, чтобы так не делали. Ужас в том, что эту ошибку делают не только новички. Часто обработчики некоторых форматов, написанные опытными людьми, тоже применяют операцию удаления и сдвига для каждого встреченного комментария. Впрочем, раз работает, то препода это устроит. Когда сдашь задачу преподу, напишу, как бы делал я. -------------------- |
klik1602 |
12.01.2011 23:05
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 49 Пол: Женский Реальное имя: Натали Репутация: 1 |
спасибо за комментарии, как сдам лабу, отпишусь)
|
Текстовая версия | 19.05.2024 14:46 |