Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.06.2020
Сообщений: 4

Добавление функций в код

28.05.2021, 10:22. Показов 737. Ответов 7

Студворк — интернет-сервис помощи студентам
Как можно сократить код, путём добавления функций?
Пытался сделать функции генерации матриц и вычисления суммы, так и не разобрался, помогите советом.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Option Explicit
Option Base 1
Sub lab924()
Dim A() As Integer, B() As Integer, C() As Integer, n%, i%, j%, sumA%, sumB%, sumC%, k%, st$
n = InputBox("Введите порядок матриц:", "Определение размера")
ReDim A(n, n)
A = matr
ReDim B(n, n)
Randomize
For i = 1 To n
  For j = 1 To n
    B(i, j) = Int(10 * Rnd() - 5)
  Next j
Next i
ReDim C(n, n)
Randomize
For i = 1 To n
  For j = 1 To n
    C(i, j) = Int(10 * Rnd() - 5)
  Next j
Next i
For i = 1 To n
    For j = 1 To n
      sumA = sumA + Abs(A(i, j))
    Next j
Next i
For i = 1 To n
    For j = 1 To n
      sumB = sumB + Abs(B(i, j))
    Next j
Next i
For i = 1 To n
    For j = 1 To n
      sumC = sumC + Abs(C(i, j))
    Next j
Next i
If sumA < sumB And sumA < sumC Then
    For j = 1 To n
        For i = 1 To n
    st = st + Str(A(i, j)) + "  "
    Next i
    ActiveDocument.Range.Text = ActiveDocument.Range.Text & st
    st = ""
    Next j
    ElseIf sumB < sumA And sumB < sumC Then
    For j = 1 To n
    For i = 1 To n
st = st + Str(B(i, j)) + "  "
Next i
ActiveDocument.Range.Text = ActiveDocument.Range.Text & st
st = ""
Next j
    ElseIf sumC < sumA And sumC < sumB Then
    For j = 1 To n
    For i = 1 To n
st = st + Str(C(i, j)) + "  "
Next i
ActiveDocument.Range.Text = ActiveDocument.Range.Text & st
st = ""
Next j
End If
End Sub
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2021, 10:22
Ответы с готовыми решениями:

Перевод с Си++ на Си и добавление функций в код
Вот мой код: #include &lt;iostream&gt; using namespace std; int main() { const int n = 2; const int m = 3; bool flag = false;...

Добавление функций в PDF документ ?
Доброе время суток! Хочу сразу сказать, я чайник и простите заранее за бональные вопросы! 1 - Есть пустой ПДФ документ, в нём должы...

Создание профиля и добавление функций
Добрый вечер! Я новичок в php) Подскажите пожалуйста можно ли с помощью php создать систему профилей пользователей? Пользователи могут...

7
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
28.05.2021, 11:51
Цитата Сообщение от Kadzut0 Посмотреть сообщение
так и не разобрался
Вынести из подпрограммы объявление переменных
Visual Basic
1
Dim A() As Integer, B() As Integer, C() As Integer, n%, i%, j%, sumA%, sumB%, sumC%, k%, st$
Повторяющиеся части кода, например:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Randomize
For i = 1 To n
  For j = 1 To n
    B(i, j) = Int(10 * Rnd() - 5)
  Next j
Next i
ReDim C(n, n)
Randomize
For i = 1 To n
  For j = 1 To n
    C(i, j) = Int(10 * Rnd() - 5)
  Next j
Next i
оформить в виде функций.
0
0 / 0 / 0
Регистрация: 11.06.2020
Сообщений: 4
28.05.2021, 12:25  [ТС]
А как будет выглядеть функция, если мне нужно вывести 3 разные матрицы?
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
28.05.2021, 12:46
В той части, где происходит заполнение матриц, функция не нужна, т.к. не производятся никакие вычисления. Достаточно подпрограммы, в которую надо передать массив по значению. Переменная "n" должна быть глобальной и её можно не передавать, т.к. она не изменяется.
Visual Basic
1
2
3
4
5
6
7
8
9
10
ReDim C(n, n)
Randomize
Call RandArray(C())
...........
Private Sub RandArray(Arr())
For i = 1 To n
  For j = 1 To n
    Arr(i, j) = Int(10 * Rnd() - 5)
  Next j
Next i
Как-то так. Написал навскидку без проверки в IDE.
0
0 / 0 / 0
Регистрация: 11.06.2020
Сообщений: 4
28.05.2021, 13:06  [ТС]
Не понял где это должно находиться и как выглядеть в коде.
Добавил подпрограмму, но при вызове ругается на несоответствие типов.
Сделал вот так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub RandArray(arr())
For i = 1 To n
  For j = 1 To n
    arr(i, j) = Int(10 * Rnd() - 5)
  Next j
Next i
End Sub
Sub lab924()
Dim A() As Integer, B() As Integer, C() As Integer, n%, i%, j%, sumA%, sumB%, sumC%, k%, st$
n = InputBox("Введите порядок матриц:", "Определение размера")
ReDim arr(n, n)
Randomize
Call RandArray(A())
ReDim arr(n, n)
Randomize
Call RandArray(B())
ReDim arr(n, n)
Randomize
Call RandArray(C())
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
28.05.2021, 13:49
Пришлось использовать IDE. Попробуйте так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Option Explicit
'Массивы и переменные объвлены глобально относительно процедур,
'чтобы к ним был доступ
Dim A() As Integer, B() As Integer, C() As Integer, n%, i%, j%, sumA%, sumB%, sumC%, k%, st$
 
'Это событие загрузки формы, у вас может быть другая процедура
Private Sub Form_Load()
n = InputBox("Введите порядок матриц:", "Определение размера")
ReDim A(n, n)
'Использовал однократно, чтобы получать разные результаты
Randomize
Call RandArray(A())
ReDim B(n, n)
Call RandArray(B())
ReDim C(n, n)
Call RandArray(C())
End Sub
 
Private Sub RandArray(ByRef arr() As Integer)
For i = 1 To n
  For j = 1 To n
    arr(i, j) = Int(10 * Rnd() - 5)
        Debug.Print arr(i, j)
  Next j
Next i
End Sub
1
0 / 0 / 0
Регистрация: 11.06.2020
Сообщений: 4
28.05.2021, 15:07  [ТС]
Не много поменял строчки местами и добавил
Visual Basic
1
ReDim arr(n, n)
Вроде как, подошло, поэтому пока так оставлю. Спасибо
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
28.05.2021, 19:31
Цитата Сообщение от Kadzut0 Посмотреть сообщение
Не много поменял строчки местами и добавил
В тело подпрограммы сразу после
Visual Basic
1
Private Sub RandArray(ByRef arr() As Integer)
? Если да, то правильно. Это мой недосмотр.

Добавлено через 11 минут
У вас три участка кода:
Visual Basic
1
2
3
4
5
For i = 1 To n
    For j = 1 To n
      sumC = sumC + Abs(C(i, j))
    Next j
Next i
и
Visual Basic
1
2
3
4
5
6
7
8
    For j = 1 To n
    For i = 1 To n
st = st + Str(C(i, j)) + "  "
Next i
ActiveDocument.Range.Text = ActiveDocument.Range.Text & st
st = ""
Next j
End If
Их тоже можно седлать подпрограммами. На входе опять массив.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.05.2021, 19:31
Помогаю со студенческими работами здесь

Добавление двух функций на кнопку
C++ Подскажите пожалуйста, как на одну кнопку добавить две функции,пример- включение выключение что нибудь.

Добавление различных функций в блог
Здравствуйте, уважаемые! Заглянула в ветку &quot;Вопросы чайников&quot;, а там идут рассуждения по поводу ссылок. Не стала прерывать цепочку, и...

Добавление функций для калькулятора
нужно добавить функции min,max,pow,random,round и ещё результат должен выводится цветом полученным случайным образом при помощи генератора ...

Создание профиля и добавление функций
Добрый вечер! Я новичок в php) Подскажите пожалуйста можно ли с помощью php создать систему профилей пользователей? Пользователи могут...

добавление функций в пхп скрипты
доброго времени суток.вникаю в создание сайта на php?скачал доску объявлений ,занимаюсь наполнением,а вот как сделать что бы и фото...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru