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

Подпрограмма: вычисление модуля суммы отрицательных элементов массива

22.02.2011, 02:22. Показов 1737. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для массивa x=(x1,x2,..,xn) составить подпрограмму,вычисляющую модуль суммы отриц. элементов массива. Подпрограмму использовать для обработки массивов A12,B16,C20,D8,ЭЛЕМЕНТЫ КОТОРЫХ ВЫЧИСЛЯЮТСЯ ПО ФОРМУЛАМ:
Ai=3.8*i^2-12.4*i+5.1
Bi=5.6*i^2+11.5*i-29.3
Ck=18.1*k^2-6.8*k-9.9
Dl=10.5*l^2-21.6*l+6.9
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Sub Podpr()
Dim n As Integer, x(100) As Single, A(100) As Single, B(100) As Single, C(100) As Single, D(100) As Single, S As Single
Cells(5, 1) = "Ìàññèâû"
Cells(6, 1) = "X="
Cells(7, 1) = "A="
Cells(8, 1) = "B="
Cells(9, 1) = "C="
Cells(10, 1) = "D="
Cells(11, 1) = "Ñóììà"
Cells(12, 1) = "S="
n = InputBox("Ââåäèòå ðàçìåðíîñòü")
Call vvod(n, x)
Call vivodAi(n, A)
Call vivodBi(n, B)
Call vivodCk(n, C)
Call vivodDl(n, D)
Call Sum(n, x, A, B, C, D)
End Sub
 
Sub vvod(n As Integer, x() As Single)
Dim i As Integer
For i = 1 To n
x(i) = Cells(6, i + 1)
Next i
End Sub
 
Sub vivodAi(n As Integer, A() As Single)
Dim i As Integer
i = Cells(4, 2)
A(i) = 3.8 * i ^ 2 - 12.4 * i + 5.1
For i = 1 To n
Cells(7, i + 1) = A(i)
Next i
End Sub
Sub vivodBi(n As Integer, B() As Single)
Dim i As Integer
i = Cells(4, 2)
B(i) = 5.6 * i ^ 2 + 11.5 - 29.3
For i = 1 To n
Cells(8, i + 1) = B(i)
Next i
End Sub
Sub vivodCk(n As Integer, C() As Single)
Dim k As Integer
k = Cells(4, 6)
C(k) = 18.1 * k ^ 2 - 6.8 * k - 9.9
For k = 1 To n
Cells(9, k + 1) = C(k)
Next k
End Sub
Sub vivodDl(n As Integer, D() As Single)
Dim l As Integer
l = Cells(4, 4)
D(l) = 10.5 * l ^ 2 - 21.61
For l = 1 To n
Cells(10, l + 1) = D(l)
Next l
End Sub
 
Sub Sum(n As Integer, x() As Single, A() As Single, B() As Single, C() As Single, D() As Single)
Dim i As Integer, j As Integer, k As Integer, l As Integer
S = 0
For i = 1 To n
If x(i) < 0 Then
  If A(i) < 0 Then
    If B(i) < 0 Then
      If C(k) < 0 Then
        If D(l) < 0 Then
        S = Abs(S) + A(i) + B(j) + C(k) + D(z) + x(i)
        Else
        Cells(11, 2) = "íåò S"
        GoTo 1
        End If
     Else
     Cells(11, 2) = "íåò S"
     GoTo 1
     End If
   Else
   Cells(11, 2) = "íåò S"
   GoTo 1
   End If
  Else
  Cells(11, 2) = "íåò S"
  GoTo 1
  End If
Else
Cells(11, 2) = "íåò S"
GoTo 1
End If
Next i
Cells(11, 2) = S
1: End Sub
Заранее спасибо.
P.S. массивы выводятся,равными нулю,следовательно суммы нет.

Добавлено через 1 час 42 минуты
плиз помогите,мне в четверг нужно сдать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.02.2011, 02:22
Ответы с готовыми решениями:

Подпрограмма: вычислить модуль суммы отрицательных элементов массива
Для массива X=(X(1),X(2),...,X(N) слставить подпрограмму,вычисляющую модуль отрирц.элементов массива.Подпрграмму использовать для...

Вычисление суммы отрицательных элементов массива (подпрограмма)
Написать подпрограмму для вычисления суммы отрицательных элементов массива A(200). помогите чем можете

Вычисление суммы отрицательных элементов массива
. Составьте программу вычисления в массиве B(8) суммы отрицательных элементов

6
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
22.02.2011, 11:27
Сначала ты
Visual Basic
1
2
3
For i = 1 To n
x(i) = Cells(6, i + 1)
Next i
считываешь в локальный массив(размер, которого(как и многих других локальных массивов) задан заранее) пустые значения с листа.
Зачем был задан размер массивов? Если ты опять его запрашиваешь
После считывания пустых значений вызывается процедура:
Call vivodAi(n, A)

Visual Basic
1
2
3
4
5
6
7
8
Sub vivodAi(n As Integer, A() As Single)
Dim i As Integer
i = Cells(4, 2)
A(i) = 3.8 * i ^ 2 - 12.4 * i + 5.1
For i = 1 To n
Cells(7, i + 1) = A(i)
Next i
End Sub
И опять с листа считывается пустое значение.
Потом одному элементу с индексом "Пестое значение" присваивается какое-то значение,
А все остальные пустые значения массива вываливаются на лист.
Дальше по коду аналогично.
Всё это напоминает фантастику, читанную мной в детстве.
Там робот, не обученный ругаться матом, ругался так:
"Четыре нуля умножить на четыре нуля и ещё раз на четыре нуля"

И ещё: непонятно обозначение массивов: A12,B16,C20,D8
Как это надо понимать?
Возможно А(12) ?

Добавлено через 45 минут
И, как я понял, надо подсчитать сумму для каждого отдельного массива, а не сумму элементов разных массивов с одинаковыми индексами.
составить подпрограмму,вычисляющую модуль суммы отриц. элементов массива. Подпрограмму использовать для обработки массивов
Именно подпрограмма подсчёта суммы должна использоваться несколько раз( для каждого массива).
А у тебя вообще непонятные подпрограммы работы с нулями. Да и используются только по одному разу.
Не было необходимости выносить их в подпрограммы.

Как я понял задание, должно быть примерно такое:
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
Option Explicit
Dim N As Integer
Dim I As Integer
Dim x() As Single
Dim A() As Single
Dim B() As Single
Dim C() As Single
Dim D() As Single
Dim S As Single
 
 
Sub Podpr()
Cells.ClearContents
N = InputBox("Введите размерность", "Ввод данных", 10)
ReDim A(1 To N)
ReDim B(1 To N)
ReDim C(1 To N)
ReDim D(1 To N)
 
Cells(5, 1) = "Массивы"
Cells(6, 1) = "I ="
Cells(7, 1) = "A ="
Cells(8, 1) = "B ="
Cells(9, 1) = "C ="
Cells(10, 1) = "D ="
Cells(5, N + 2) = "Сумма"
 
For I = 1 To N
Cells(6, I + 1) = I
A(I) = 3.8 * I ^ 2 - 12.4 * I + 5.1
Cells(7, I + 1) = A(I)
B(I) = 5.6 * I ^ 2 + 11.5 - 29.3
Cells(8, I + 1) = B(I)
C(I) = 18.1 * I ^ 2 - 6.8 * I - 9.9
Cells(9, I + 1) = C(I)
D(I) = 10.5 * I ^ 2 - 21.61
Cells(10, I + 1) = D(I)
Next I
 
 
Cells(7, N + 2).Value = Sum(A)
Cells(8, N + 2) = Sum(B)
Cells(9, N + 2) = Sum(C)
Cells(10, N + 2) = Sum(D)
 
 
End Sub
  
Function Sum(M)
Dim j
For j = 1 To N
Sum = IIf(M(j) < 0, Sum + Abs(M(j)), Sum)
Next j
End Function
1
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 17
22.02.2011, 14:37  [ТС]
Спс огромное.
А можешь объяснить:

IIf(M(j)
Cells(7, N + 2).Value = Sum(A)
Cells.ClearContents

И можешь сказать,если мне нужно посчитать только те номера массивов как в условии,то как быть?

Добавлено через 5 минут
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
63
64
65
66
67
68
69
70
71
72
73
74
Option Explicit
Dim n As Integer
Dim I As Integer
Dim K As Integer
Dim L As Integer
Dim x() As Single
Dim A() As Single
Dim B() As Single
Dim C() As Single
Dim D() As Single
Dim S As Single
 
 
Sub Podpr()
Cells.ClearContents
n = InputBox("Ââåäèòå ðàçìåðíîñòü", "Ââîä äàííûõ", 10)
 
ReDim A(1 To n)
ReDim B(1 To n)
ReDim C(1 To n)
ReDim D(1 To n)
 
Cells(5, 1) = "Ìàññèâû"
Cells(2, 1) = "I ="
Cells(4, 1) = "K ="
Cells(3, 1) = "L ="
Cells(7, 1) = "A ="
Cells(8, 1) = "B ="
Cells(9, 1) = "C ="
Cells(10, 1) = "D ="
Cells(5, n + 2) = "Ñóììà"
 Call vivodAB(n, A, B)
 Call vivodC(n, C)
 Call vivodD(n, D)
 
Cells(7, n + 2).Value = Sum(A)
Cells(8, n + 2) = Sum(B)
Cells(9, n + 2) = Sum(C)
Cells(10, n + 2) = Sum(D)
 End Sub
 
Sub vivodAB(n As Integer, A() As Single, B() As Single)
For I = 1 To n
Cells(2, I + 1) = I
A(I) = 3.8 * I ^ 2 - 12.4 * I + 5.1
Cells(7, I + 1) = A(I)
B(I) = 5.6 * I ^ 2 + 11.5 - 29.3
Cells(8, I + 1) = B(I)
Next I
End Sub
Sub vivodC(n As Integer, C() As Single)
For K = 1 To n
Cells(4, K + 1) = K
C(K) = 18.1 * K ^ 2 - 6.8 * K - 9.9
Cells(9, K + 1) = C(K)
Next K
End Sub
 
Sub vivodD(n As Integer, D() As Single)
For L = 1 To n
Cells(3, L + 1) = L
D(L) = 10.5 * L ^ 2 - 21.61 * L + 6.9
Cells(10, L + 1) = D(L)
Next L
End Sub
 
  
Function Sum(M)
Sum = 0
Dim j
For j = 1 To n
Sum = IIf(M(j) < 0, Sum + Abs(M(j)), Sum)
Next j
End Function
ВОТ такое получилось.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
22.02.2011, 19:22
Объясню. Если ты мне объяснишь Зачем Это:
CALL vivodAB(n, A, B)
CALL vivodC(n, C)
CALL vivodD(n, D)
Все твои подпрограммы уже реализованы
в самой программе. И подпрограммы не нужны.

А вот именно ответом на задание является использование ОДНОЙ подпрограммы для всех массивов
И эта подпрорамма подсчёта суммы согласно условий. Вот она и вызывается с передачей ей очередного массива:
Visual Basic
1
Cells(7, N + 2).Value = Sum(A)
только те номера массивов
а вот это я у тебя и спрашивал: что за номера?
Я так подозреваю, что это просто номера твоего варианта

Вот это всё - рудименты:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SUB vivodC(n AS INTEGER, C() AS SINGLE)
FOR K = 1 TO n
Cells(4, K + 1) = K
C(K) = 18.1 * K ^ 2 - 6.8 * K - 9.9
Cells(9, K + 1) = C(K)
NEXT K
END SUB
 
SUB vivodD(n AS INTEGER, D() AS SINGLE)
FOR L = 1 TO n
Cells(3, L + 1) = L
D(L) = 10.5 * L ^ 2 - 21.61 * L + 6.9
Cells(10, L + 1) = D(L)
NEXT L
END SUB
Добавь в цикл :
Visual Basic
1
2
FOR I = 1 TO n
Cells(2, I + 1) = I
Две строчки вместо двух процедур

Добавлено через 18 минут
Visual Basic
1
Cells.ClearContents
- просто очистка всего листа от записей
1
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 17
22.02.2011, 22:22  [ТС]
Да пусть будут рудименты-у меня просто были лекции про call. Нужно их заюзать-а то не приймут.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
23.02.2011, 12:51
У вас же лекции не только про Call были. Значит ли это, что всё нужно мспользовать?
Некоторые жить не могут без вынесения в отдельные процедуры. Сталкивался с такими:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub Proba()
dim A As Byte, B As Byte
dim SUM As Byte
A = 5
B = 6 
SUM = Summa(A, B)
End Sub
 
Function Summa(ByVal X As Byte, ByVal Y As Byte) As Byte
Summa = X + Y
End Function
Может по теории это и правильно, но по здравому смыслу - бред.
Так, что решать тебе. А если точнее - твоему преподу. Если он сторонник ненужного увеличения объёма кода - придётся смириться
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
23.02.2011, 13:24
Alex77755, между прочим очень часто встречается в институтских заданиях такие строки : "ввод и вывод массива осуществлять с помощью подпрограмм" ИМХО идиотизм)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.02.2011, 13:24
Помогаю со студенческими работами здесь

Вычисление суммы отрицательных элементов массива
Написать подпрограмму для вычисления суммы отрицательных элементов массива А(200)

Если модуль суммы положительных элементов больше модуля суммы отрицательных элементов, то заменить все положитьные элементы на нули.
нужна помощь, не понимаю как сделать:( Дан массив F1,...,F20.Если модуль суммы положительных элементов больше модуля суммы...

Процедура поиска модуля суммы отрицательных элементов матрицы и суммы положительных
Написать две процедуры 1) поиск модуля суммы отрицательных элементов матрицы 2) поиск суммы положительных элементов матрицы

Вычисление суммы положительных элементов каждой строки матрицы (подпрограмма)
1. Написать программу решения следующей задачи: Вычислить и запомнить суммы положительных элементов каждой строки матриц A(6,6) и B(5,5). ...

Подпрограмма. Среди элементов четных строк массива определить количество отрицательных элементов
Добрый день. Помогите, пожалуйста, сделать в виде подпрограммы. Дан массив X(N,M). Среди элементов четных строк массива определить K -...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru