Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [VB6] Задача на матрицу


Автор: Esera 29.11.2006, 17:19
Дана матрица A(m, n), 2  m  10, 2  n  10, состоящая из целых чисел. Удалить из матрицы строки, состоящие из одинаковых элементов. Если таких строк в матрице больше половины, то вывести сообщение и матрицу не преобразовывать. Исходную и преобразованную матрицы вывести в текстовые поля. При решении задачи не использовать дополнительных массивов и матриц. Для решения задачи составить следующие подпрограммы: 
-    логическую функцию проверки одной строки матрицы;
-    процедуру удаления одной строки матрицы;

Найдите ошибку  и дополните, пожалуйста

Код

Private Sub Vvod (A() As Integer, ByRef m%, ByRef n%)
Dim i As Integer
Dim j As Integer

Do
m = Val(InputBox("stroki"))
n = Val(InputBox("stolbcyi="))
Loop Until n > 0 And n <= 10 And m > 0 And m <= 10

For i% = 1 To m
For j% = 1 To n

A(i, j) = Val(InputBox("A(i,j)="))
Next j
Next i

End Sub
Private Sub Вывод(Text1 As Object, A() As Integer, ByVal m%, ByVal n%)
Dim s As String
Dim i As Integer
Dim j As Integer

s$ = " "
For i% = 1 To m
For j% = 1 To n
s = s + Str(A(i, j)) + " "
Next
s = s + vbCrLf
Next
Text1.Text = s
End Sub

Private Function Проверка(A() As Integer, ByVal m%, ByVal n%, ByVal num%) As Boolean
Dim j As Integer
Dim i As Integer

Проверка = False

For j% = 1 To n - 1
If A(num, j) = A(num, j + 1) Then
Проверка = True
Exit Function
End If
Next
End Function

Private Sub Удаление(A() As Integer, ByRef m%, ByVal n%, ByVal num%)
Dim i As Integer
For i% = num + 1 To m

Next
m = m - 1


End Sub


Private Sub Command1_Click()
Dim b(1 To 10, 1 To 10) As Integer
Dim m As Integer
Dim n As Integer
Dim i As Integer

Ввод b, m%, n%
Вывод Text1, b, m, n
Вывод Text2, A, m, n
For i% = m To 1 Step -1
If Проверка(b, m, n, i) = True Then
Удаление b, m, n, i
End If
Next
Вывод Text2, b, m, n
End Sub


Автор: Esera 29.11.2006, 17:54
Как много тех, кто желает мне помочь!

Автор: cardinal 29.11.2006, 23:20
Для поиска ошибок есть программа - отладчик. Ну неужели не пройтись по коду самой?

p.s. русскими буквами никто не пишет в языках программирования...

Автор: Esera 29.11.2006, 23:23
Я ее сделала
У меня проблема теперь с другой прогой, про строки...

Автор: cardinal 30.11.2006, 00:51
Я пока так и не увидел, как ты сделала первую задачу (процедуру формирования списка слов одной строки).
Я бы начал так:
Код

'-------------------------------------------------------------------------------
' Вызывающая процедура (главная программа)
Private Sub Command1_Click()

Dim res() As String
res = GetListOfWords(Text1.Text)

...

End Sub

Private Function GetListOfWords(s As String) As String()
Dim res() As String
res = split(s, " ")
GetListOfWords = res()
End Function


Дальше ты делаешь "процедуру разбиения отдельного слова на части в соответствии с правилами переноса" и т.д.

То есть улавливаешь разницу: тебе говорят

Код

 GetListOfWords
 SplitWords
 FormatText


а ты делаешь

Код

 Вывод_в_текстовое_поле Text1, s1, m
 Форматирование s1, новый_текст, k, m, kolvo%
 Вывод_в_текстовое_поле Text2, новый_текст, kolvo%


Короче попроси модератора "центра помощи" перенести в раздел VB6, если тут народу мало отвечает и жди помощи там. У меня нет времени, чтобы за всех решать их задачи.

Успехов!

p.s. обязательно выкладывай тот кусок кода, по которому задаешь вопрос (код изменился - выкладывай еще раз)...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)