Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

6. 4 задачи для самостоятельного решения




Пример 4

'Имя файла Simple_Nombers. vbs

'Программа находит все простые числа в двумерном массиве (в матрице)

Option Explicit

Dim k, i, j, p, s

Dim A(4, 5)  ' объявление двумерного массива А

Const m=4    ' m, n -индексы последнего элемента матрицы

Const n=5       

'-------------------------------------------------------------------------------

Sub Input (A)  

' Процедура ввода элементов матрицы с клавиатуры

' процедура с параметрами

' A-параметр, передаваемый по ссылке

' m, n -глобальные константы

For i=0 to m

     For j=0 to n

           A(i, j)=CDbl(InputBox(" Введите элемент A(" & i& ", " & j& " )", " Ввод матрицы A: ", 5))

     Next

Next

End Sub

'-------------------------------------------------------------------------------

Function Simple (k)  

' Функция возвращает True, если число k окажется простым, и false - в противном случае

Dim x

Simple=True

If k< > 1 Then

        For x=2 to Int(sqr(k))

               If k mod x =0 Then

                        Simple=False

               End If

         Next   

Else Simple=False

End If                             

End Function

'-------------------------------------------------------------------------------

Input A ' Вызов процедуры ввода элементов матрицы

' В цикле происходит проверка, является ли элемент матрицы простым числом

For i=0 to m

     For j=0 to n

        If Simple(A(i, j)) Then   ' Вызов процедуры, которая проверяет, является ли A(i, j)             ' простым числом

                     p=p& A(i, j)& " " ' если да, то число записывается в строку p

             End If

     Next

Next

' Выводим введённую матрицу и те элементы массива, которые являются простыми числами

For i=0 to m

     For j=0 to n

          s=s+CStr(A(i, j))+" "

     Next

     s=s& vbCrLf

  Next

MsgBox " Вы ввели двухмерный массив: " & vbCrLf& _

                s& vbCrLf& _

                " Элементы массива, которые являются простыми числами: " & vbCrLf& _

                 p, _

                vbExclamation, _

                " Результат: "

Пример 5

'Имя файла Zero. vbs

'Программа определяет количество нулевых элементов двумерного массива (матрицы)

Option Explicit

Dim k, i, j, s

Dim A(4, 5)  ' объявление двумерного массива А

Const m=4    ' m, n -индексы последнего элемента матрицы

Const n=5       

 Вводим матрицу

k=0

  For i=0 to m

     For j=0 to n

           A(i, j)=CDbl(InputBox(" Введите элемент A(" & i& ", " & j& " )", " Ввод матрицы A: ", 5))

           If A(i, j)=0 Then ' проверяем, нулевой ли элемент мы ввели

                   k=k+1    ' счётчик нулевых элементов

           End If

     Next

Next

' Выводим введённую матрицу и количество нулевых элементов

For i=0 to m

     For j=0 to n

          s=s+CStr(A(i, j))+"   "

     Next

     s=s& vbCrLf

Next

MsgBox " Вы ввели двухмерный массив: " & vbCrLf& _

                s& vbCrLf& _

                " Количество нулевых элементов в данной матрице: " & k, _

                vbExclamation, _

                " Результат: "

Пример 6

' Имя файла Difference. vbs

' Программа находит разность между произведением и суммой элементов целочисленного

' одномерного массива, состоящего из 5-ти положительных элементов

Option Explicit

Dim i, s         

Dim A(4)       ' объявление одномерного массива А

Const k=4   ' k-индекс последнего элемента в векторе

'-------------------------------------------------------------------------------

Sub Input_Rnd (A)  

' процедура заполнения одномерного массива целыми

' числами от 0 до 20, выбранными случайным образом

Dim i  

For i=0 to k

      Randomize

      A(i)=Fix(Rnd(1)*20)

Next

End Sub

'-------------------------------------------------------------------------------

Function Summa (A)

Dim i, s

    For i=0 to k

     s=s+A(i)

Next

Summa=s

End Function

'-------------------------------------------------------------------------------

Function Multiplication (A)

Dim i, s

s=1

For i=0 to k

     s=s*A(i)

Next

Multiplication=s

End Function

'-------------------------------------------------------------------------------

Function Difference (multiplication, summa)

Difference=multiplication-summa

End Function

'-------------------------------------------------------------------------------

Input_Rnd A ' вызов процедуры ввода элементов массива

' Вывод введённого вектора:

For i=0 to k

      s=s+CStr(A(i))+" "

Next

MsgBox " Вектор, полученный случайным образом: " & vbCrLf& _

                s& vbCrLf& _

                " Произведение элементов вектора: " & Multiplication (A)& vbCrLf& _

                " Сумма элементов вектора: " & Summa (A)& vbCrLf& _

                " Разность между произведением и суммой элементов данного”& _ “вектора: " & vbcrLf& _

                Difference(multiplication (A), summa (A)), _

                vbExclamation, _

                " Результат: "


Пример 7

' Имя файла Array of Arrays. vbs

' Дана нерегулярная матрица: 1 3 -4

'                                              -2 5 5 7

'                                               6 3 -6

'                                               5 5 7 2 -8

' Задача: Найти в данной матрице все отрицательные элементы и распечатать их вместе с 'индексами.

Option Explicit

' Объявление матрицы как массива массивов

Dim Arr(3)

Arr(0)=Array(1, 3, -4)

Arr(1)=Array(-2, 5, 5, 7)

Arr(2)=Array(6, 3, -6)

Arr(3)=Array(5, 5, 7, 2, -8)

dim i, j, s

' В данном цикле организована проверка каждого элемента матрицы, является ли

' он отрицательным. если да, то данный элемент вместе со своими индексами сохраняется

' в строку s

For i=0 to 3

For j=0 to UBound(Arr(i)) ' Функция UBound возвращает индекс последнего элемента

' в i-той строке

    If Arr(i)(j)< 0 Then

           s=s& " A(" & i& ", " & j& " ) = " & Arr(i)(j)& vbCrLf

    End if                              

Next

Next

' Вывод исходной матрицы, а также найденных в ней отрицательных элементов, вместе

' с их индексами

MsgBox " Дана матрица A: " & vbCrLf& _

         " 1 3 -4" & vbCrLf& _

         " -2 5 5 7" & vbCrLf& _

         " 6 3 -6" & vbCrLf& _

         " 5 5 7 2 -8" & vbCrLf& _

         " Отрицательные элементы данной матрицы: " & vbCrLf& _

         s, _

         vbExclamation, " Результат: "

Пример 8

' Имя файла Dynamic_Array. vbs

' Дана матрица A размерностью 4 на 3 и вектор B, состоящий из 4-х элементов.

' Сформировать новую матрицу A размерностью 4 на 4, которая бы содержала в себе

' матрицу A и вектор B, в качестве последнего столбца.

 

Option Explicit

Dim i, j

Dim B(3)       ' объявление вектора B, состоящего из 4-х элементов

Dim A()         ' объявление динамического массива А

 '-------------------------------------------------------------------------------

Sub Input_Rnd_Arr (A)  

' процедура заполнения двумерного массива целыми

' числами от 0 до 20, выбранными случайным образом

ReDim A (3, 2)

For i=0 to 3

      For j=1 to 2

            Randomize

            A(i, j)=Fix(Rnd(1)*20)

      Next

Next

End Sub

'-------------------------------------------------------------------------------

Sub Input_Rnd_Vec (B)  

' процедура заполнения одномерного массива целыми

' числами от 0 до 20, выбранными случайным образом

For i=0 to 3

      Randomize

      B(i)=Fix(Rnd(1)*20)

Next

End Sub

'-------------------------------------------------------------------------------

Function Arr_to_Str (A)  

' функция записи матрицы в строку s

Dim s

For i=0 to 3

      For j=1 to 2

             s=s& A(i, j)& " "

      Next

      s=s& vbCrLf

Next

Arr_to_Str=s

End Function

'-------------------------------------------------------------------------------

Function Vec_to_Str (B)  

Dim s

' функция записи вектора в строку s

For i=0 to 3

      s=s& B(i)& " "

Next

Vec_to_Str=s

End Function

'-------------------------------------------------------------------------------

Function New_Arr(A, B)  

Dim s

' функция формирования новой матрицы A и запись её в строку s

ReDim Preserve A (3, 3)

A(0, 3)=B(0)

A(1, 3)=B(1)

A(2, 3)=B(2)

A(3, 3)=B(3)

For i=0 to 3

      For j=1 to 3

             s=s& A(i, j)& " "

      Next

      s=s& vbCrLf

Next

New_Arr=s

 

End Function

'-------------------------------------------------------------------------------

Input_Rnd_Arr A      ' вызов процедуры ввода элементов матрицы A

Input_Rnd_Vec B     ' вызов процедуры ввода элементов вектора B

MsgBox Vec_to_Str (B),, " Вектор B: "

MsgBox Arr_to_Str (A),, " Первоначальная матрица A: "

MsgBox New_Arr (A, B),, " Изменённая матрица A: "

 

6. 4 ЗАДАЧИ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...