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

Автор работы: Пользователь скрыл имя, 26 Ноября 2013 в 20:20, контрольная работа

Краткое описание

Часть 1. Вычислить значения 39 элементов одномерного целочисленного массива Y в интервале (-10; 10) с использованием генератора случайных чисел.
Для получения целого случайного числа x на отрезке [a, b] в языке Паскале используется следующий оператор:
x := a + ROUND((b-a)*RANDOM (100)/100).

Прикрепленные файлы: 1 файл

романюк 999 .doc

— 156.50 Кб (Скачать документ)


Министерство образования и  науки Российской Федерации

 

Государственное образовательное  учреждение высшего профессионального  образования

«УФИМСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЯНОЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

 

 

 

 

 

 

 

Кафедра вычислительной техники

                                                                                и инженерной кибернетики

 

 

 

 

 

 

 

РАСЧЕТНОЕ ЗАДАНИЕ  №2

Вариант № 85, 999

 

по дисциплине «Информатика»

 

 

 

 

 

 

 

 

 


 

Выполнил студент гр. БМТ1-11-03   _______________          _________________________

                                                       подпись, дата                                       инициалы, фамилия

 

 


Принял доцент каф.ВТИК      ________________            _________________________

                                          подпись, дата                                       инициалы, фамилия

 

 

 

 

 

 

 

 

 

 

 

Уфа 2012

 

Постановка  задачи

Разработать программу  получения и обработки одномерного  массива, состоящую из 4 частей.

  • Часть 1. Вычислить значения 39 элементов одномерного целочисленного массива Y в интервале (-10; 10) с использованием генератора случайных чисел.
  • Для получения целого случайного числа x на отрезке [a, b] в языке Паскале используется следующий оператор:

    x := a + ROUND((b-a)*RANDOM (100)/100).

    Чтобы при каждом новом запуске программы получить новую последовательность случайных чисел, необходимо в начале программы исполнить оператор RANDOMIZE.

  • Часть 2. Вычислить среднегеометрическое значение  каждых вторых элементов второй четверти массива.
  • Среднегеометрическое значение  вычисляется по формуле


     

     

     

    где  К-количество ненулевых элементов в массиве.

    Часть 3. Определить значение, по модулю самое близкое к заданному числу С среди нечетных по значению элементов всего массива.

    Определить элемент массива  – это значит найти его положение (индекс) в массиве и его значение. Если требуемому условию удовлетворяют несколько элементов, то нужно установить индекс и значение каждого из них.

    Часть 4. Упорядочить положительные элементы второй трети массива по убыванию модулей обратных.

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

    Для проверки правильности упорядочения всего массива или его части выводить все его элементы.

     

    Обязательные требования к программе.

    1. Программу разработать для  решения задачи в общем виде, для произвольных значений исходных  данных: количества элементов  n (2<=n<=100) и отрезка [a, b]  (b>=a).

    2. Решение каждой части в программе реализовать в виде процедуры.

    3. Предусмотреть 3 варианта исполнения  программы:

    Тестовый расчёт

    Решение задачи для одной и той  же последовательности случайных значений элементов массива при новом  запуске программы для одних  и тех же исходных данных ( Randomize не используется).

    Решение задачи для новой последовательности случайных значений элементов массива  при новом запуске программы (c Randomize).

     

    1. Анализ задачи.

  • Исходными данными являются значения количества элементов  в массиве n и отрезок [a, b].
  • Порядок решения задачи: сначала нужно получить одномерный массив (часть 1), затем можно вычислить параметр массива (часть 2) или найти нужный элемент (часть 3). Упорядочение массива (часть 4) нужно выполнить в последнюю очередь, так как перестановка элементов массива при упорядочении может повлиять на вычисление параметра массива и определение нужного элемента.
  • Для лучшего понимания задачи, выявления её особенностей выполним тестовый расчёт.
  • Возьмём любые исходные данные, например  n=17,  а =-3,  в = 4. Запишем 17 случайных целых чисел от -3 до 4 – это значения элементов массива R для тестового расчёта.
  • 1, 0, -3, 2, 0, -3, 4, 3, 2, 0, 0, 4, 0, -2, -1, -1, 1
  • Для вычисления среднегеометрического значения каждых вторых элементов второй четверти массива сначала требуется в общем виде выделить номера элементов второй четверти массива. Номер первого элемента первой четверти вычисляется по формуле [n/4]+1 (квадратные скобки обозначают операцию выделения целой части значения выражения). Использование данной операции при определении номеров элементов в большинстве случаев позволяет равномерно разделить массив на части:  [17/4] +1 = [4,25] +1  = 4+1=5, номер последнего элемента: [n/2] = [17/2] = [8,5] = 8.
  • Запишем элементы всего массива
  • x1   x2    x3   x4    x5   x6    x7    x8  
  • 1    0   -3    2    0   -3     4    3  
  • x9   x10   x11   x12   x13   x14   x15   x16   x17
  • 2    0    0    4     0   -2   -1   -1    1
  • Выделим подчёркиванием каждые вторые элементы,  относящиеся ко второй четверти массива.
  • Нужных элементов k =2,  их среднегеометрическое Sg = √-9 = 0.
  • При вычислении Sg могут возникнуть следующие проблемы:
    •                  1.  Не будет нужных элементов ( к = 0 ), например, если все подходящие элементы равны 0. В этом случае нужно принять Sg = 0.
    • 2.  Потребуется извлечь корень чётной степени из отрицательного значения произведения ( например, если x16 = 1 ).  Это некорректная операция, нужно принять Sg = 0.
  • Выявленные возможные проблемы нужно учесть при разработке алгоритма.
  • Можно записать математическую формулировку задачи данной части:
  • где:  k – количество нужных (четных по номеру, ненулевых) элементов во второй половине массива R; 
    - произведение нужных элементов.

     

    где:  k – количество нужных ( ненулевых) элементов в массиве V; 

     

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

  • Запишем элементы всего массива:
  • x1   x2    x3   x4    x5   x6    x7    x8  
  • 1    0   -3    2    0   -3     4    3  
  • x9   x10   x11   x12   x13   x14   x15   x16   x17
  • 2    0    0    4     0   -2   -1   -1    1

  • Выделим  подчёркиванием  нечетные элементы. Искомое число С определяется как С = |a+b|/2, т. е. С = 0,5. Нужных элементов 3, наиболее близкое к заданному значение равно 1, такое значение имеют два элемента: x1=1 и x17 =1.
  • При решении данной задачи могут быть следующие ситуации:
    1. Не будет нужных элементов;
    2. Будет единственный элемент с искомым значением;
    3. Будет множество элементов с искомым значением.

     

    При выборочном упорядочивании элементов  массива сначала выделим нужную часть массива. Первый элемент второй трети массива имеет номер [n/3] + 1 = [17/3] +1 = [5,67] +1 = 5 + 1 = 5, последний элемент, соответственно, имеет номер [2n/3] = [34/3] = [11,33] = 11.

  • Запишем элементы второй трети
  • Элементы     x6        x7       x8       x9       x10       x11        x12
  • Значения элементов    -3        4         3        2        0          0          4
  • Модуль обратного                     1/3       ¼         1/3        ½         ∞           ∞          1/4

    Упорядоченные элементы   -3         2           3          4          0            0            4

     

    1. Алгоритм решения задачи

     

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

  • Основной алгоритм.
  • При разработке основного алгоритма  нужно учесть обязательные требования, сформулированные в постановке задачи и рекомендации по разработке сложных программ:

    1. Необходимо задачу решать в общем виде, для любых допустимых значений исходных данных.
    2. Предусмотреть возможность выполнения 3 вариантов расчёта.  
      Введём вспомогательную переменную Vr для управления вариантом расчёта: если Vr =0 – тестовый расчёт, Vr = 1 – без Randomize, любое другое значение Vr – расчёт с Randomize.
    3. Модули должны быть относительно независимы: обязательно иметь имя, свои входные, выходные и промежуточные данные, не использовать глобальные переменные, ввод и вывод данных в модуле может быть только в случае необходимости.
    4. Действия алгоритма поясняются на естественном языке, в обозначениях постановки задачи, не используются конструкции языка программирования

     

    3.2 Алгоритм  получения элементов вектора

     

     






     


     



     

     

     




     


     



     

     

     






     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

      1. Алгоритм определения значения элемента, ближайшего по модулю к заданному числу С среди нечетных элементов всего массива

     





     

     



     











     



     

     


     




     

     




     









     

     




     

    3.5 Упорядочение  массива

     

     


     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

        1. Текст программы на Паскале

     

    Program RGR_2;

    Информация о работе Обработка одномерного массива