Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2018, 20:39   #1
сергей_ком
Пользователь
 
Регистрация: 20.12.2018
Сообщений: 10
По умолчанию двумерные массивы ВБА

помогите решить задачу: дан вещественный массив размерностью m на n. найти наименьшее число М обладающее таким свойством: в одной строке все элементы превосходят М.
Код:
Sub z5()
Dim a, b, c, d, e, f As Variant
m = CInt(InputBox("введите количество элементов в строках"))
n = CInt(InputBox("введите количество столбцов масссива"))
ReDim x(1 To a, 1 To a) As Integer
For i = 1 To n
For j = 1 To m
x(i, j) = CInt(InputBox("введите элемент массива"))
Next j
Chr (13)
Next i
s = ""
For i = 1 To n
For j = 1 To m
s = s + CStr(x(i, j)) + " "
Next j
s = s + Chr(13)
Next i
MsgBox s
End Sub
я не понял, как вообще выбрать М. помогите
сергей_ком вне форума Ответить с цитированием
Старый 24.12.2018, 11:31   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,312
По умолчанию

1. Конечно, вводить массивы ручками - это ещё тот кайф, но при подготовке программы и её тестировании лучше их готовить программно или, накрайняк, записать в текстовый файл и считывать оттуда.
Да, надо научиться работать с файлом и функцией для генерации случайных чисел, но это окупается с лихвой (сильно экономит время).
В моём ответе на предыдущий твой пост как раз это и демонстрировалось: формирование массива, вывод массива на экран для контроля, процедура слияния.

2. Я думаю, что надо найти минимальные элементы для каждой строки и среди них найти максимальный.
Но будет лучше, если вариант решения уточнить у препода.

3. Если действовать по моему условию, то лучше завести массив, в котором хранятся минимальные элементы. При поиске максимального - порядковый номер этого элемента - номер строки.

PS: В примерах использование глобальных переменных - это нормально, но лучше научиться передавать параметры в подпрограмму (функцию, процедуру).
В VB для этого используются описатели типа ByVal и ByRef.
ByVal - в подпрограмму передаются значения переменных.
ByRef - в подпрограмму передаётся ссылка на переменную. Такую переменную можно изменить в подпрограмме и это изменение будет видно в самой программе.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 24.12.2018, 20:01   #3
сергей_ком
Пользователь
 
Регистрация: 20.12.2018
Сообщений: 10
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
1. Конечно, вводить массивы ручками - это ещё тот кайф, но при подготовке программы и её тестировании лучше их готовить программно или, накрайняк, записать в текстовый файл и считывать оттуда.
Да, надо научиться работать с файлом и функцией для генерации случайных чисел, но это окупается с лихвой (сильно экономит время).
В моём ответе на предыдущий твой пост как раз это и демонстрировалось: формирование массива, вывод массива на экран для контроля, процедура слияния.

2. Я думаю, что надо найти минимальные элементы для каждой строки и среди них найти максимальный.
Но будет лучше, если вариант решения уточнить у препода.

3. Если действовать по моему условию, то лучше завести массив, в котором хранятся минимальные элементы. При поиске максимального - порядковый номер этого элемента - номер строки.

PS: В примерах использование глобальных переменных - это нормально, но лучше научиться передавать параметры в подпрограмму (функцию, процедуру).
В VB для этого используются описатели типа ByVal и ByRef.
ByVal - в подпрограмму передаются значения переменных.
ByRef - в подпрограмму передаётся ссылка на переменную. Такую переменную можно изменить в подпрограмме и это изменение будет видно в самой программе.
как собрать все минимальные элементы в один массив? основа есть,но что дальше делать
Код:
Sub z5()
Dim a, b, c, d, e, f As Variant
m = CInt(InputBox("введите количество элементов в строках"))
n = CInt(InputBox("введите количество столбцов масссива"))
ReDim x(1 To n, 1 To m) As Integer
For i = 1 To n
For j = 1 To m
x(i, j) = CInt(InputBox("введите элемент массива"))
Next j
Chr (13)
Next i
q = ""
k = n
Z = m
Do
t = 0
w = False
For i = 1 To k - 1
For j = 1 To s - 1
If x(i, j) > x(i, j + 1) Then
t = x(i, j)
r = x(i, j): x(i, j) = x(i, j + 1): x(i, j + 1) = r: t = i
w = True
End If
q = q+
Next j
Next i
Z = t
k = t
Loop Until t = 0
s = ""
For i = 1 To n
For j = 1 To m
s = s + CStr(x(i, j)) + " "
Next j
s = s + Chr(13)
Next i
MsgBox s
End Sub
сергей_ком вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двумерные массивы(С++) elena96 Помощь студентам 2 29.05.2016 20:18
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
двумерные массивы N@um Общие вопросы C/C++ 0 22.06.2010 16:08