powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Задача на массивы
8 сообщений из 8, страница 1 из 1
Задача на массивы
    #38101902
Георгий_rnd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дана матрица NxM диапазон от -16 до 16. Найти количество элементов в четных столбцах.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub p()
Dim N As Integer, S As Integer, i As Integer, j As Integer, M As Integer
Cells.Clear
M = InputBox("M=")
N = InputBox("N=")
S = 0
For i = 1 To N
For j = 1 To M
Cells(i, j) = Int(Rnd() * 36 - 16)
If i Mod 2 = 0 And j Mod 2 = 0 Then
S = S + 1
End If
Next j
Next i
MsgBox ("S=") & S
End Sub


Правильно ли решение? И, например, если мне надо найти сумму элементов, одновременно кратных 3 и 5, то программа приобретет вид:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub p()
Dim N As Integer, S As Integer, i As Integer, j As Integer, M As Integer
Cells.Clear
M = InputBox("M=")
N = InputBox("N=")
S = 0
For i = 1 To N
For j = 1 To M
Cells(i, j) = Int(Rnd() * 36 - 16)
If Cells(i,j) Mod 3 = 0 And Cells(i,j) Mod 5 = 0 Then
S = S + Cells(i, j)
End If
Next j
Next i
MsgBox ("S=") & S
End Sub
...
Рейтинг: 0 / 0
Задача на массивы
    #38101965
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Георгий_rnd,

Для того, чтобы найти количество элементов в матрице, не нужно знать диапазон значений ее элементов.
...
Рейтинг: 0 / 0
Задача на массивы
    #38102355
Георгий_rnd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladConn,
т.е
Код: vbnet
1.
Cells(i, j) = Int(Rnd() * 36 - 16)

строчка необязательна?
...
Рейтинг: 0 / 0
Задача на массивы
    #38102374
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подразумевалось, что при расчете количеств программе без разницы, что находится в матрице...
Причем первый алгоритм у вас считает отнюдь не столбцы, а одновременно четные столбцы и строки.
Впрочем, для первого алгоритма и цикл не нужен, достаточно
Код: vbnet
1.
S = (N \ 2) * (M \ 2)


А вот если работаете с содержимым матрицы - то да, перебираёте в цикле и проверяйте условия.
...
Рейтинг: 0 / 0
Задача на массивы
    #38102431
Георгий_rnd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,
Т.е если я уберу из строки
Код: vbnet
1.
If i Mod 2 = 0 And j Mod 2 = 0 Then

оставлю
Код: vbnet
1.
If j Mod 2 = 0 Then

, то задача будет решена верно, но нерационально?
...
Рейтинг: 0 / 0
Задача на массивы
    #38102484
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Георгий_rnd,

да, нерационально. Ибо тогда S=(M\2)*N и всё...
...
Рейтинг: 0 / 0
Задача на массивы
    #38102703
Георгий_rnd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Найти из массива MxN, в диапазоне от -10 до 18, максимальный элемент.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub prr()
Dim N As Integer, M As Integer, i As Integer, j As Integer, max As Integer
Cells.Clear
M = InputBox("M=")
N = InputBox("N=")
For i = 1 To M
For j = 1 To N
Cells(i, j) = Int(Rnd() * 28 - 10)
max = Cells(1, 1)
If Cells(i, j) > max And Cells(i, j) > Cells(i + 1, j) Then
max = Cells(i, j)
End If
Next j
Next i
MsgBox ("max=") & max
End Sub


Никак не могу решить задачу, т.е моё условие не подходит, потому что, например, в 1-й ячейке 6, во второй ячейке 3, в третьей 9, у меня ответ выдает 6. Но ведь дописывать условие до бесконечности(and cells(i,j)>cells(i+2,j) и т.д) не получится. Подскажите, пожалуйста, как записать условие.
...
Рейтинг: 0 / 0
Задача на массивы
    #38102765
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам нужен максимальный элемент? Ну так именно он и должен искаться в условии. В одном условии - том, что текущий элемент больше максимального:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
max = -11
For i = 1 To M
 For j = 1 To N
  Cells(i, j) = Int(Rnd() * 28 - 10)
  If Cells(i, j) > max Then max = Cells(i, j)
 Next j
Next i
MsgBox "Max=" & max


С другой стороны, если вам нужно найти позицию максимально элемента (т.е. который именно элемент матрицы является максимальным), то делаем, например, так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Dim N As Integer, M As Integer, i As Integer, j As Integer, nMax As Integer
Dim iMax as Integer, jMax as Integer
Cells.Clear
M = InputBox("M=")
N = InputBox("N=")
max = -11
For i = 1 To M
 For j = 1 To N
  Cells(i, j) = Int(Rnd() * 28 - 10)
  If Cells(i, j) > nMax Then
   iMax = i
   jMax = j
   nMax = Cells(i, j)
  End If
 Next j
Next i
MsgBox "Max = A(" & iMax & "," & jMax & ") = " & nMax
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Задача на массивы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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