powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Задача на матрицы
19 сообщений из 19, страница 1 из 1
Задача на матрицы
    #34134654
Esera
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дана матрица A(m, n), 2  m  10, 2  n  10, состоящая из целых чисел. Удалить из матрицы строки, состоящие из одинаковых элементов. Если таких строк в матрице больше половины, то вывести сообщение и матрицу не преобразовывать. Исходную и преобразованную матрицы вывести в текстовые поля. При решении задачи не использовать дополнительных массивов и матриц. Для решения задачи составить следующие подпрограммы:
- логическую функцию проверки одной строки матрицы;
- процедуру удаления одной строки матрицы;
...
Рейтинг: 0 / 0
Задача на матрицы
    #34134919
Шогал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А открывать файл по 1000 раз в задаче можно?
...
Рейтинг: 0 / 0
Задача на матрицы
    #34135007
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо это сезонное обострение - сессия близко.
...
Рейтинг: 0 / 0
Задача на матрицы
    #34135010
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А не красивее ли вылететь с гордо поднятой головой, чем выклянчивать в долг чужие мозги?
...
Рейтинг: 0 / 0
Задача на матрицы
    #34137895
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EseraУдалить из матрицы строки, состоящие из одинаковых элементов. Если таких строк в матрице больше половины, то вывести сообщение и матрицу не преобразовывать.
...
- логическую функцию проверки одной строки матрицы;
Уже только эти два выражения убивают...
- Значит, сначала, удалить, а потом не преобразовывать ?
- и что даст проверка одной строки? в условии же сказано, что надо искать одинаковые _стрОки_
может, препод русского не знает и путает мн.число с единственным?

С третьей стороны, задача вполне решаема, и вот некоторые пояснения:
- раз логическая ф-я проверки, то ей передаем параметры - номер строки, которую сравниваем,
и номер, с которой сравниваем, а она вернет T/F (равны/не равны).
- процедура удаления - тут пишите сами (из собственного опыта могу посоветовать не
двигать весь остаток вверх, а переписать последнюю строку матрицы в удаляемую строку
и уменьшить размерность на 1 - препод будет очень рад оригинальности :)
- один раз я в оригинальности дошел до того, что сравнивал строки матрицы напрямую - как слова:
действительно, если массив не динамический, то создайте его таким образом, чтобы можно
было считать строку (матрицы) байтами, а затем сравнивать не поэлементно, а стрингами...
...
Рейтинг: 0 / 0
Задача на матрицы
    #34137984
Esera
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот смотри

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
...
Рейтинг: 0 / 0
Задача на матрицы
    #34138008
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Esera,

Это не Visual Basic
...
Рейтинг: 0 / 0
Задача на матрицы
    #34138013
Esera
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо
А как сделать в Visual Basic 6.0?
...
Рейтинг: 0 / 0
Задача на матрицы
    #34138065
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Задача на матрицы
    #34138069
Esera
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо
...
Рейтинг: 0 / 0
Задача на матрицы
    #34138070
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ReDim Preserve у меня как есть работать не будет. Воспользуйтесь для удаления строк советом AndreTM.
...
Рейтинг: 0 / 0
Задача на матрицы
    #34138071
Esera
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но получается как-то сложно
...
Рейтинг: 0 / 0
Задача на матрицы
    #34138078
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я подразумеваю, что строки - это первое измерение, а его в ReDim Preserve менять нельзя, если измерений хотя бы два. А это большое неудобство. Метода Transpose тоже нет.
...
Рейтинг: 0 / 0
Задача на матрицы
    #34138079
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага. Будет еще сложнее, когда дело дойдет до удаления строк.
...
Рейтинг: 0 / 0
Задача на матрицы
    #34138081
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А реальные программы какие сложные! Раз в 500.
...
Рейтинг: 0 / 0
Задача на матрицы
    #34138100
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.developerfusion.co.uk/show/3653/8/
Здесь показано, как удалять отдельные элементы из массивов.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Задача на матрицы
    #34959871
Elka)))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добрый вечер... нужна помощь, не могу решить задачи, а завтра лаба... 1)Ввести произвольную матрицу, сделать К раз циклическую перестановку столбцов влево.
2)Сделать сжатие элементов произвольной матрицы по столбцам.
...
Рейтинг: 0 / 0
Задача на матрицы
    #34959966
lena_###
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyВидимо это сезонное обострение - сессия близко.
...
Рейтинг: 0 / 0
Задача на матрицы
    #34960069
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эй, дерево с тремя скобками! Во-первых, столь массированный акт некрофилии не останется незамеченным администрацией, во-вторых, если не ответят в одной теме, не ответят и в остальных.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Задача на матрицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]