|
|
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
Дана матрица A(m, n), 2 m 10, 2 n 10, состоящая из целых чисел. Удалить из матрицы строки, состоящие из одинаковых элементов. Если таких строк в матрице больше половины, то вывести сообщение и матрицу не преобразовывать. Исходную и преобразованную матрицы вывести в текстовые поля. При решении задачи не использовать дополнительных массивов и матриц. Для решения задачи составить следующие подпрограммы: - логическую функцию проверки одной строки матрицы; - процедуру удаления одной строки матрицы; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2006, 19:04 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
А открывать файл по 1000 раз в задаче можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2006, 22:06 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
Видимо это сезонное обострение - сессия близко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2006, 23:32 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
А не красивее ли вылететь с гордо поднятой головой, чем выклянчивать в долг чужие мозги? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2006, 23:33 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
EseraУдалить из матрицы строки, состоящие из одинаковых элементов. Если таких строк в матрице больше половины, то вывести сообщение и матрицу не преобразовывать. ... - логическую функцию проверки одной строки матрицы; Уже только эти два выражения убивают... - Значит, сначала, удалить, а потом не преобразовывать ? - и что даст проверка одной строки? в условии же сказано, что надо искать одинаковые _стрОки_ может, препод русского не знает и путает мн.число с единственным? С третьей стороны, задача вполне решаема, и вот некоторые пояснения: - раз логическая ф-я проверки, то ей передаем параметры - номер строки, которую сравниваем, и номер, с которой сравниваем, а она вернет T/F (равны/не равны). - процедура удаления - тут пишите сами (из собственного опыта могу посоветовать не двигать весь остаток вверх, а переписать последнюю строку матрицы в удаляемую строку и уменьшить размерность на 1 - препод будет очень рад оригинальности :) - один раз я в оригинальности дошел до того, что сравнивал строки матрицы напрямую - как слова: действительно, если массив не динамический, то создайте его таким образом, чтобы можно было считать строку (матрицы) байтами, а затем сравнивать не поэлементно, а стрингами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 20:17 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
Вот смотри for i=k to n-1 for j=1 to m a(k,j)=a(k+1,j) next j next i n=n-1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 21:48 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
Esera, Это не Visual Basic ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 22:11 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
Хорошо А как сделать в Visual Basic 6.0? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 22:13 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
Esera, Я накидал код. Он почти наверняка сходу не заработает : нужно доводить до ума, проверять границы массивов и т.д. Берите его как идею и дорабатывайте: Private mintMatrix(5, 3) As Integer 'поставите свои размерности Private Sub Command1_Click() LoadMatrix 'Здесь заполните матрицу If ThrowMessage(0, 5, 0, 3) Then MsgBox "Слишком много строк содинаковыми элементами!" Else DeleteRows End If End Sub Private Function ElementsTheSameInRow(ByVal pintRow As Integer, _ ByVal pintLowColBound As Integer, _ ByVal pintUpperColBound As Integer) As Boolean Dim intCol As Integer Dim blnReturn As Boolean For intCol = pintLowColBound To pintUpperColBound - 1 blnReturn = mintMatrix(pintRow, intCol) = mintMatrix(pintRow, intCol + 1) If Not blnReturn Then Exit For Next intCol ElementsTheSameInRow = blnReturn End Function Private Function ThrowMessage(ByVal pintLowRowBound As Integer, _ ByVal pintUpperRowBound As Integer, _ ByVal pintLowColBound As Integer, _ ByVal pintUpperColBound As Integer) As Boolean Dim blnReturn As Boolean Dim intRow As Integer Dim intRows As Integer For intRow = pintLowRowBound To pintUpperRowBound If ElementsTheSameInRow(intRow, pintLowColBound, pintUpperColBound) Then intRows = intRows + 1 End If If intRows >= Int(pintUpperRowBound / 2) + 1 Then blnReturn = True Exit For End If Next intRow ThrowMessage = blnReturn End Function Private Sub DeleteRows(ByVal pintLowRowBound As Integer, _ ByVal pintUpperRowBound As Integer, _ ByVal pintLowColBound As Integer, _ ByVal pintUpperColBound As Integer) Dim intRow As Integer For intRow = pintUpperRowBound To pintLowRowBound Step -1 If ElementsTheSameInRow(intRow, pintLowColBound, pintUpperColBound) Then ReDim Preserve mintMatrix(pintUpperRowBound - 1) End If Next intRow End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 23:21 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
ReDim Preserve у меня как есть работать не будет. Воспользуйтесь для удаления строк советом AndreTM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 23:28 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
Но получается как-то сложно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 23:28 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
Я подразумеваю, что строки - это первое измерение, а его в ReDim Preserve менять нельзя, если измерений хотя бы два. А это большое неудобство. Метода Transpose тоже нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 23:37 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
Ага. Будет еще сложнее, когда дело дойдет до удаления строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 23:39 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
А реальные программы какие сложные! Раз в 500. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 23:39 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
http://www.developerfusion.co.uk/show/3653/8/ Здесь показано, как удалять отдельные элементы из массивов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2006, 00:02 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
добрый вечер... нужна помощь, не могу решить задачи, а завтра лаба... 1)Ввести произвольную матрицу, сделать К раз циклическую перестановку столбцов влево. 2)Сделать сжатие элементов произвольной матрицы по столбцам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 23:24 |
|
||
|
Задача на матрицы
|
|||
|---|---|---|---|
|
#18+
AntonariyВидимо это сезонное обострение - сессия близко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2007, 04:00 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34138079&tid=2163043]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
55ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 379ms |

| 0 / 0 |
