Напишите на VisualBasic программу, переставляющую в начало массива все его положительные элементы. — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Напишите на VisualBasic программу, переставляющую в начало массива все его положительные элементы.

2017-11-16 148
Напишите на VisualBasic программу, переставляющую в начало массива все его положительные элементы. 0.00 из 5.00 0 оценок
Заказать работу

M = Array(0, -5, 86, -9, 3, 0, -4, -8, -15, 45, 7)

i = 0

d = UBound(M) 'получаем индек последнего элемента в массиве

DoWhile i < d 'перебираем все элементы мвссива

DoWhile M(i) >= 0 And i <= d 'находим индекс первого отрицательного

i = i + 1

Loop

If i < d Then

'если полученный индекс привыходе из пред цикла не равен индексу последнего эл-та

'запоминаем отриц элемент,

b = M(i)

k = i

DoWhile k < d And M(k) < 0 'ищем положительный после найденного отрицательного

k = k + 1

Loop

 

If k = d Then 'если перебрали все элементы

If M(k) < 0 ThenExitDo 'и если последний эл-т отриц то конец цикла

EndIf

'инач обмен

'на место отриц вставляем поож и на оборот

M(i) = M(k)

M(k) = b

If k = d Then Exit Do

EndIf

Loop

 

Напишите на VisualBasic программу, подсчитывающую сумму всех четных элементов массива.

n = 0

s = 0

For Each e In A

If n Mod 2 = 0 Then

s = e + s

End If

n = n + 1

Next

MsgBox s

Напишите на VisualBasic подпрограмму, рассчитывающую векторное произведение двух данных трехмерных векторов.

M1 = Array(1.2, -3.2, 0.7)

M2 = Array(4.1, 6.5, -2.9)

x = 0: y = 1: z = 2

M1xM2 = Array(M1(y) * M2(z) - M1(z) * M2(y), _

M1(z) * M2(x) - M1(x) * M2(z), _

M1(x) * M2(y) - M1(y) * M2(x))

s = ""

For i = 0 To UBound(M1xM2)

s = s &CStr(M1xM2(i)) & ";"

Next

MsgBox s

 

Напишите на VisualBasic подпрограмму, находящую методом деления пополам один корень кубического уравнения с данными коэффициентами.

Дано А, В, С, D, дельта

Найти х: f(x) = Ах3 + Вх2 + Сх + D = 0 с точностью дельта.

Найти границы xL, xH: f(xL)*f(xH)<0

xH = 1

do while (A*xH^3 + B*xH^2 + C*xH + D) * (-A*xH^3 + B*xH^2 - C*xH + D) > 0

xH = xH*2

loop

xL = -xH

do while xH-xL>дельта

xM = (xH + xL) / 2

if (A*xL^3 + B*xL^2 + C*xL + D) * (A*xM^3 + B*xM^2 + C*xM + D) < 0 then

xH = xM

else

xL = xM

end if

loop

Msgbox “корень=” & (xL + xH) / 2

 

 

19. Напишите на VisualBasic подпрограмму, находящую методом Симпсона определенный интеграл функции. Исходные данные: массивы x и f длиной N. Упорядоченный по возрастанию массив x содержит значения аргумента, f (i) – значение интегрируемой функции в точке x (i). Интегрирование ведется от x (1) до x (N).

Dim X() As Double

Dim F() As Double

Sub simpson()

Dim n As Long

n = InputBox("Введитедлинумассивов n")

ReDimX(n), F(n)

For i = 0 To n - 1

X(i) = InputBox("Введите значения аргумента ")

F(i) = InputBox("Введите значение интегрируемой функции в этой точке ")

Next

otvet = Simps(X(0), X(n - 1), n - 1, F())

End Sub

 

 

Public Function Simps(ByVal a As Double, _

ByVal b As Double, _

ByVal n As Long, _

ByRefF() As Double) As Double

Dim Result As Double

Dim i As Long

Dim h As Double

h = (b - a) / n

Result = (F(0) - F(n)) / 2

i = 2

Do

Result = Result + 2 * F(i - 1) + F(i)

i = i + 2

Loop Until Not i <= n

Result = 2 * h * Result / 3

Simps = Result

EndFunction

20. Дан массив Аc коэффициентами полинома n -й степени от x. А(i) коэффициент - при хi. Напишите на VisualBasic подпрограмму, подсчитывающую значение этого полинома и его производной при данном значении x по схеме Горнера.

'A() - массив со значениями

'Xend - конечный предел значения X

'Xstep - шаг или точность

'N - степень

Sub PGorn(A() As Single, Xend As single,Xstep As Single, N As Integer)

Dim As Single Y1,P,P1,X,Y

For X = 0 ToXend Step Xstep

P =0

Y = A(0)

For K As Integer= 1 To N

P = P * X + Y

Y = Y * X + A(K)

Next K

Y1=1.* X^4 - 6.* X^2 + X + 4.

P1=4.* X^3 - 12.* X + 1.

Print X, Y, P, Y1, P1

Next

Sleep

End Sub

 

Dim a(10) As Single= {1,0,-6,1,4}

PGorn(a(),2,0.25,4)

Напишите модуль класса, реализующий стек через массив. Операции оформите как подпрограммы и функции.

Dim m(10), uk_st ' стек

Sub Class_Initialize()

uk_st = 0

End Sub

Sub добавление(elem)

If uk_st< 10 Then

uk_st = uk_st + 1

m(uk_st) = elem

End If

End Sub

Function извлечение()

If uk_st<> 0 Then

извлечение = m(uk_st)

uk_st = uk_st - 1

End If

End Function

Function пуст_стек() As Boolean

If uk_st = 0 Then пуст_стек = True Else пуст_стек = False

EndFunction

 

Напишите модуль класса, реализующий очередь через кольцевой буфер. Операции оформите как подпрограммы и функции.

 

Dim m(10), nz, kolvo ' очередь

Sub Class_Initialize()

nz = 1

kolvo = 0

End Sub

Sub добавление(elem)

If kolvo< 10 Then

m((nz + kolvo - 1) Mod 10 + 1) = elem

kolvo = kolvo + 1

End If

End Sub

Function извлечение()

If kolvo<> 0 Then

извлечение = m(nz)

nz = (nz + 10) Mod 10 + 1

kolvo = kolvo - 1

End If

End Function

Function пуста_очередь() As Boolean

If kolvo = 0 Then пуста_очередь = True Else пуста_очередь = False

EndFunction

Напишите модуль класса, реализующий дек через массив. Операции оформите как подпрограммы и функции.

Dim m(10), uk_n, uk_k ' дек

Sub Class_Initialize()

uk_n = 0

uk_k = 0

EndSub

Subдобавление_в_начало(elem)

Ifuk_n> 0 Then

m(uk_n) = elem

uk_n = uk_n - 1

End If

End Sub

Sub добавление_в_конец(elem)

If uk_k< 10 Then

uk_k = uk_k + 1

m(uk_k) = elem

End If

EndSub

Functionизвлечение_с_начала()

If uk_n<>uk_k Then

uk_n = uk_n + 1

извлечение_с_начала = m(uk_n)

End If

End Function

Function извлечение_с_конца()

If uk_n<>uk_k Then

извлечение_с_конца = m(uk_k)

uk_k = uk_k - 1

End If

End Function

Function пуст_дек() As Boolean

If uk_n = uk_k Then пуст_дек = True Else пуст_дек = False

EndFunction

 


Поделиться с друзьями:

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.015 с.