Нужна помощь в Vb. (Код я сделал помогите найти ошибку)

  • Автор темы Bernuar
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

Bernuar

#1
Вот такая задачка:
Дан двумерный массив размером n*m, заполненный случайными числами. Определить в нем строку с максимальной и столбец с минимальной суммой элементов.

Заполнить массив 7*7 по правилу:
Код:
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Text1.Text <> "" And Text2.Text <> "" Then
Dim n, m, a, b As Integer
n = Text1.Text
m = Text2.Text
a = 0
b = 0
Dim mas(0 To n - 1, 0 To m - 1) As Integer
For i = 0 To (n) * (m) + (m - 1)
If b <= n - 1 Then
Randomize()
mas(a, b) = Int(Rnd() * 30)
b = b + 1
Else
a = a + 1
b = 0
End If
Next
a = 0
b = 0
Dim stolb(0 To m - 1), strok(0 To n - 1) As Integer
Dim schot(0 To n - 1, 0 To m - 1) As Integer
For i = 0 To (n) * (m) + (m - 1)
If b <= m - 1 Then
stolb(a) = stolb(a) + mas(a, b)
b = b + 1
ElseIf b = n Then
a = a + 1
b = 0
End If
Next
End If
End Sub
End Class
Выдает ошибку что индекс находится вне границ массива. И еще помогите составить пр. форму
тут выдает
Код:
mas(a, B) = Int(Rnd() * 30)
 

hosm

* so what *
18.05.2009
2 442
6
#2
разве это правильно? (Индекс b меняется 0 To m - 1)
Должно быть b <= m - 1.
И дальше внизу ElseIf b = m.
тут что-то с кол-вом не то. Надо что-то типа i=0 to (n-1)*(m) + (m - 1)
или как-то иначе проверить нужное кол-во, типа такого:
Код:
			 If b <= m - 1 Then
Randomize()
mas(a, b) = Int(Rnd() * 30)
b = b + 1
Else
a = a + 1
if a<n then
b = 0
else
Exit for
end if
End If
 
B

Bernuar

#3
Спасибо. Та же самая ошибка только тут
Код:
 stolb(a) = stolb(a) + mas(a, b)
System.IndexOutOfRangeException не обработано
Message=Индекс находился вне границ массива.
Source=WindowsApplication23
StackTrace:
в WindowsApplication23.Form1.Button1_Click(Object sender, EventArgs e) в c:\users\programmer\documents\visual studio 2010\Projects\WindowsApplication23\WindowsApplication23\Form1.vb:строка 32
в System.Windows.Forms.Control.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ButtonBase.WndProc(Message& m)
в System.Windows.Forms.Button.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
в System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNat
iveMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.Run(ApplicationContext context)
в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicat
ionModel()
в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String
[] commandLine)
в WindowsApplication23.My.MyApplication.Main(String[] Args) в 17d14f5c-a337-4978-8281-53493378c1071.vb:строка 81
в System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()
InnerException:
Не знаю поможет или нет, а я еще подумаю
 
Статус
Закрыто для дальнейших ответов.