загрузка...

793

Обработка одномерных массивов

Контрольная

Информатика, кибернетика и программирование

Типовые алгоритмы обработки одномерных массивов. Вычисление суммы и произведения элементов, находящихся на разных местах в массиве. Вычисление суммы, произведения и количества элементов, удовлетворяющих заданному условию и находящихся на разных местах в массиве.

Русский

2013-01-06

201 KB

35 чел.

Обработка одномерных массивов

  1.  Понятие и описание массива

Одномерным массивом называется упорядоченная последовательность величин одного типа, имеющих одно имя, но различающихся индексами.

Индекс – это выражение целого типа, определяющее положение отдельной величины в последовательности. Каждая отдельная величина называется элементом массива.

Объявление массива:

 

Dim   <идентификатор> (Nнач To Nкон) As  < тип элементов>

Nнач, Nкон – это минимальное и максимальное значение индекса, обязательно константы. Обычно Nнач=1, тогда Nкон это максимально возможное число элементов в массиве.

Пример:

Dim x (1 To 20) As Byte

Обращение к элементу массива:

<идентификатор массива> (<индекс>)

x (3) – третий элемент массива x,

x (i+2) – элемент массива x с индексом i+2 

(i при этом должно иметь значение).

Свойства элементов массива:

  •  все элементы массива имеют один тип;
  •  номера элементов – это последовательные целые числа от Nнач до Nкон с шагом 1;
  •  число используемых элементов может быть меньше, чем число элементов в описании массива.

  1.  Ввод массива

 

Процедура:

  n = InputBox ("Введите число элементов" , "Ввод")

  for i=1 to n do

      x (i)= InputBox (“Введите элемент  " & i , "Ввод")

  Next i

  1.  
    Вывод массива

Фрагмент процедуры (после ввода):

  •  Вывод в окно сообщений

       Dim Str As String

            Str="Исходный массив" & vbCr

                          For i=1 to n

         Str=Str & x(i) & " "

  Next i

MsgBox Str , , "Вывод массива"

  •  Вывод в ячейки рабочего листа

 Cells (1,1)="Исходный массив"

for i=1 to n

        Cells (2 , i) = x(i)

Next i

  1.  Типовые алгоритмы обработки одномерных массивов

  1.  Вычисление суммы и произведения элементов, находящихся на разных местах в массиве

S=0  для i=1..n  S=S+x(i)      

P=1  для i=1..n  P=P*x(i)

Общая схема алгоритма:


  

Пример 1:  Вычислить сумму квадратов

элементов, находящихся в массиве на

местах с номерами, кратными трем.

   S=0

i=3

While i<=n

      S=S+x(i)^2

i=i+3

Wend

<Вывод S>

Пример 2:  Вычислить произведение элементов, находящихся в массиве на местах с третьего по седьмое

            включительно.

if n <7   then   

<вывод сообщения >

  else

     P= 1

        For i = 3 to 7

 P=P*x(i)

       Next i

              <вывод Р>

      End if

  1.  Вычисление суммы, произведения и количества элементов, удовлетворяющих заданному условию и находящихся на разных местах в массиве

Общая схема алгоритма:

Пример3:  Вычислить количество элементов, больших заданного числа a и находящихся в массиве на местах с четными номерами.

Схема алгоритма:

:

Фрагмент процедуры:

  •  с помощью оператора цикла While

k=0

i=2

While i<=n

    if x(i)> a    then k=k+1

     i=i+2;

Wend

  •  с помощью оператора цикла For

k=0

For i=2 To n Step 2

    if x(i)> a    then k=k+1

Next i

Пример 4. Вычислить среднее арифметическое положительных элементов массива, находящихся в массиве на нечетных местах, и произведение элементов вне интервала [a,b).

Таблица используемых переменных

Имя переменной в задаче

Имя переменной в программе

Тип переменной

Примечание

-

n

Byte

число элементов массива

Исходные данные

-

x

(1To10) As Single

исходный массив

a

a

Single

границы интервала

b

b

Single

-

Sr

Single

среднее арифметическое положительных элементов на нечетных местах

Результат

-

P

Single

произведение элементов вне интервала

-

i

Byte

номер элемента в массиве

Вспомогательные переменные (промежуточный результат)

-

S

Single

сумма положительных элементов на нечетных местах

-

K

Byte

количество положительных элементов на нечетных местах

-

m

Byte

переключатель для определения наличия элементов вне интервала


Текст процедуры:

Sub prim4 ()

  Dim x (1 To10) As Single

  Dim n As Byte, K As Byte, i As Byte, mAs Byte

  Dim Sr As Single, P As Single, S As Single, a As Single, b As Single

  <ввод n,x>

  <ввод a,b>

  <вывод x>

  <вывод a,b>

  S=0

  K=0

  For i=1 to n  Step 2

      If x(i)>0 Then

          S=S+x(i)

          K=K+1

     End If

  Next i

  If K= 0 Then

       Cells (4,1)="нет положительных эл-в на нечетных местах"

    

Else

         Sr=S/K;

         Cells(4,1)="Среднее арифметич. положит. эл-в на

нечетных местах=" & Sr

End If 

// вторая часть

P=1

m=0

For i=1 to n

      If (x(i)< a) or (x(i)>=b)   Then

           P=P*x(i)

           m=1

     End If

Next i

If m = 0 Then

       Cells(5,1)="нет элементов вне интервала"

    Else

     Cells(5,1)= "Произведение элементов вне интервала =" & P

End Sub

Тесты:

Для первой части

  1.     -1  0  -2  -2  0  4          на нечетных местах нет положительных

элементов

  1.      2  2  4  -6  3  0           на нечетных местах все элементы положит.

                                            среднее арифм. = (2+4+3)/3= 3

  1.      1  2  -1  3  7  5  -5       на нечетных местах часть элементов

положительная  

                                           среднее арифм. = (1+7)/2=4

Для второй части интервал [a, b):

  1.  [-4, 5)    нет элементов вне интервала    
  2.  [5, 10)    все элементы вне интервала      произв = 2*2*4*-6*3*0=0
  3.  [-4,5)    часть элементов вне интервала   произв = 7*5-5= -175

  1.  Перестановка местами и замена элементов массива

Для перестановки местами двух элементов массива необходимо объявить дополнительную переменную того же типа, который имеют элементы массива.

   Dim x (1 To10) As Single

   Dim p As Single

Пример 1. Поменять местами второй и четвертый элементы массива:

p = x (2)

x (2) = x(4)

x (4)=p

Пример 2. Поменять местами первый и последний элементы массива:

p=x(1)

x (1)=x(n)

x (n) =p

Пример 3. Поменять местами предпоследний элемент массива с  элементом с заданным номером k:

   If k = n -1  then

         MsgBox “Обмен не нужен, т.к. …..”

     else

          

p = x (n-1)                 

x (n-1) = x (k)

x (k) = p

End If

Пример 4. Заменить положительные элементы массива на  последний элемент массива.

For i:=1 to n-1 do

      If x(i)>0 Then x(i) =x(n)               

  1.  Нахождение минимальных и максимальных элементов массива и определение их номеров

Графическая схема алгоритма:

  

:


При поиске минимального элемента блок 7  должен иметь вид:

Тесты:

  1.  минимальный элемент находится на первом месте в массиве;
  2.  минимальный элемент находится на последнем месте в массиве;
  3.  минимальный элемент находится в середине массива;
  4.  зависит от конкретных условий задачи.

Пример. Найти минимальный из элементов массива с номерами, кратными трем, и поменять его местами со следующим элементом массива.

min=x(3)

         n_min=3

         For i=6 to n Step 3

            If x(i) < min then

    min=x(i);

 n_min=i

    End If

Next i

<вывод min, n_min>

If n_min = n   then

      ShowMessage (“минимальный элемент – последний”)

   Else

 p=x(n_min)    x(n_min)=x(n_min+1)

 x(n_min)=x(n_min+1)         x(n_min+1)= min

x(n_min+1)=p

<вывод массива х>

End If

  1.  Формирование новых массивов

Постановка задачи: из исходного массива перенести в новый массив элементы, удовлетворяющие некоторому условию, не меняя их взаимного расположения.

Тесты:

  1.  новый массив не сформирован, т.к. в исходном массиве нет элементов, удовлетворяющих заданному условию;
  2.  новый массив сформирован из всех элементов исходного массива, т.к. они все удовлетворяют условию;
  3.  новый массив сформирован из части элементов исходного массива, удовлетворяющих заданному условию;

Пример. Даны два массива a и b. Переписать из них элементы в массив с по следующему правилу: из массива a квадраты элементов, находящихся в массиве на местах с четными номерами, из массива b  элементы, которые не больше, чем последний элемент массива a.




k=0

  i=2

  While i<=n

          k=k+1

          c(k)= a(i)^2

          i=i+2

 Wend

For i=1 to m

If  b(i)<= a(n) Then

             k= k +1

      c(k)=b(i)

   End If

 Next i

           If  k = 0 then

                          Cells (5,1)="новый массив не сформирован"

        Else

Cells (5,1)="Cформированный массив"

   For i =1 to k

                             Cells( 6,i)=c(i)

End If


Данной работой Вы можете всегда поделиться с другими людьми, они вам буду только благодарны!!!
Кнопки "поделиться работой":

 

А также другие работы, которые могут Вас заинтересовать

28563. Однонаправленные функции, построение однонаправленных функций с секретами 14.43 KB
  Обозначим через QF сложность вычисления значения Fx для произвольного xX через QF1 сложность вычисления по произвольному yY значения x такого что Fx=y сложность вычисления понимается в стандартном смысле теории сложности. Сложность вычисления F такова что алгоритм ее вычисления реализуем на современной технике и выдает ответ за приемлемое время 2. Сложность вычисления F1 такова что алгоритм ее вычисления либо не реализуем на современной технике либо не дает ответ за приемлемое время. Что считать приемлемым...
28564. Система RSA. Использование алгоритма Евклида для расчета секретного ключа d 23.69 KB
  Подобный блок может быть интерпретирован как число из диапазона 0; 2i1;; для каждого такого числа назовем его mi вычисляется выражение ci=mie mod n 3.По теорема Эйлера если число n представимо в виде двух простых чисел p и q то для любого x имеет место равенство Xp1q1 mod n =1 Для дешифрования RSAсообщений воспользуемся этой формулой. Возведем обе ее части в степень y: Xyp1q1 mod n = 1 y=1 Теперь умножим обе ее части на x : xyp1q11 mod n =...
28565. Алгоритма цифровой подписи Эль Гамаля, преимущества по сравнению с методом RSA, недостатки 13.41 KB
  Алгоритма цифровой подписи Эль Гамаля преимущества по сравнению с методом RSA недостатки. В отличие от RSA метод ЭльГамаля основан на проблеме дискретного логарифма. По сравнению с методом RSA данный метод имеет целый ряд преимуществ: 1. Кроме того данный алгоритм подписи не допускает его использования в качестве алгоритма шифрования в отличии от RSA в котором шифрование и подпись суть одно и то же а следовательно не подпадает ни под какие экспортные ограничения из США.
28566. Проблема дискретного логарифмирования, аутентификация 86.42 KB
  Система строится из криптографических примитивов низкого уровня:групповой операции симметричного шифра функции хэширования и алгоритма вычисления кода аутентификации сообщенияимитовставки MAC. Код аутентификации сообщения позволяет пользователям обладающим общим секретным ключом выработать битовую строку для аутентификации и проверки целостности данных Пусть Msg = {01} – пространство сообщений mKey = {01}mLen – пространство ключей для вычисления MAC для некоторого mLen N Tag = {01}tLen – включающее множество всех возможных...
28567. Система открытого шифрования RSA, атаки на RSA 15.87 KB
  В настоящее время наиболее развитым методом криптографической защиты информации с известным ключом является RSA названный так по начальным буквам фамилий ее изобретателей Rivest Shamir и Adleman и представляющую собой криптосистему стойкость которой основана на сложности решения задачи разложения числа на простые сомножители. Чтобы использовать алгоритм RSA надо сначала сгенерировать открытый и секретный ключи выполнив следующие шаги: выберем два очень больших простых числа p и q; определим n как результат умножения p на q n = p Ч...
28568. Система электронной подписи Эль Гамаля (EGSA - ElGamal Signature Algorithm) 16.07 KB
  Затем выбирается секретное число х и вычисляется открытый ключ для проверки подписи y=gxmod p Далее для подписи сообщения М вычисляется его хэшфункция т = hM. Выбирается случайное целое k:1 k p1 взаимно простое с р–1 и вычисляется r=gkmod p. После этого с помощью расширенного алгоритма Евклида решается относительно s уравнение m=xrksmodp1. Получатель подписанного сообщения вычисляет хэшфункцию сообщения m=hM и проверяет выполнение равенства yrrs=gxrgks=gxrks=gmmod p.
28569. Система открытого шифрования Эль Гамаля 58 KB
  Для шифрования сообщения M проводится следующая процедура: Выбирается случайное число k kP1=1 Вычисляется G=AK mod P Вычисляется H=yK M mod P Пара G H является шифрованным сообщением M При расшифровании вычисляется: H GX mod P = yK M AXK mod P = M mod P Преимуществами системы ЭЦП и ОШ Эль Гамаля является простота генерации открытых и секретных ключей а так же то что параметры P и A могут быть общими для всех участников сети связи.
28570. Общая схема электронной подписи на основе дискретной экспоненты 14.29 KB
  Пусть DATA – пеpедаваемое Александpом Боpису сообщение. Александp подписывает DATA для Боpиса пpи пеpедаче: Eebnb{Edana{DATA}}. Боpис может читать это подписанное сообщение сначала пpи помощи закpытого ключа Eebnb Боpиса с целью получения Edana{DATA}= Edbnb{ Eebnb{ Edana {DATA}}} и затем откpытого ключа EeAnA Александpа для получения DATA= Eeana{ Edana {DATA}}. Таким обpазом у Боpиса появляется сообщение DATA посланное ему Александpом.
28571. Однонаправленные хеш-функции Понятие хеш-функции 13.67 KB
  Изменения в тексте сообщения приводят к изменению значения хешфункции. На бесключевые хешфункции накладываются определенные условия. однонаправленность устойчивость к коллизиям устойчивость к нахождению второго прообраза Применение ключевых хэшфункций Ключевые хешфункции применяются в случаях когда стороны имеют общий секретный ключ доверяют друг другу.